馬哥教育網絡班21期-第六周課程練習

請詳細總結vim編輯器的使用并完成以下練習題

vim編輯器的使用

vim模式:

 a,編輯/命令模式;

 b,insert/輸入模式

 c,末行模式

打開文件:

 vim    [option]…    file…

 +#:打開文件后,直接讓光標處于第#行行首

 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首

模式轉換:

 編輯模式 –> 輸入模式

 i:insert ,在光標所在之前輸入

 a:append,在光標所在之后輸入

 o:在光標所在行下方開始新行

 I:在光標所在行行首輸入

 A:在光標所在行行尾輸入                    

 O:在光標所在行的上方開始新行

 輸入模式 –> 編輯模式    按ESC

 編輯模式 –> 末行模式    按:

關閉文件

 :q    退出

 :q!    不保存修改,強制退出

 :wq    保存退出

 :x    保存退出

 :w    /path/to/somefile    

 ZZ    保存退出

光標跳轉

 字符間跳轉:h左,j下,k上,l右

 #command:跳轉由#指定的個數的字符

 單詞間跳轉:

 w:下一個單詞的詞首

 e:當前或下一個單詞的詞尾

 b:當前或下一個單詞的詞首

 #command:跳轉由#指定的個數的單詞

行首行尾跳轉:

 ^:跳轉至行首的第一個非空白字符

 0:跳轉至行首

 $:跳轉至行尾

行間移動:

  #G:跳轉至指定的#行

  G:最后一行

 1G,gg:第一行

句間移動:

 ):下一句

 (:上一句

 }:下一段

 {:上一段

VIM的編輯命令:

 字符編輯:

  x:刪除光標處的字符

   #x:刪除光標處以后的#個字符

  xp:交互光標所在處及其后面單個字符的位置

 刪除命令:

  d:刪除命令,可結合光標跳轉字符,實現范圍刪除

   d$    d^    d0

   dd    刪除光標所在整行

 粘貼命令paste:

   p:編輯器緩沖區存儲的如果是整行,則粘貼至當前光標所在行的下方,否則,粘貼至當前行的后方

   P:編輯器緩沖區存儲的如果是整行,則粘貼至當前光標所在行的上方,否則,粘貼至當前行的前方

 復制命令yank:

   y:復制,命令方式和d命令一樣

 改變命令change:

   c:修改,并從編輯模式 –> 輸入模式

 替換命令replace:

   r:替換

 可視化模式

  v:按字符選定

  V:按行選定

 Note:經常結合編輯命令,d c y

 撤銷此前的編輯undo:

  u:撤銷此前的操作

 恢復此前的撤銷:

  Ctrl+r

 重復前一次編輯操作:.

 翻屏操作:

  Ctrl+f : 向下翻屏

  Ctrl+b:向上翻屏

  Ctrl+d:向上翻半屏

  Ctrl+u:向下翻半屏

Vim中的末行模式:

 內建的命令行接口

 1. 地址定界

 :start_pos,end_pos

 :m,+n   選定從第m行開始向下的n行

 :.,$    選定當前行到最后一行

 :1,$-1    從第一行到倒數第二行

 :%    全文

 :/pattern1/,/pattern2/    選定從第一次pattern1匹配到的行到第一次被pattern2匹配到的行中間的所有行

  使用方式:

  后跟一個編輯命令

  r    /path/to/somefile    在指定位置插入指定文件中的所有內容

 2. 查找

  /pattern:向下查找

  ?/pattern:向上查找

 3. 查找并替換(分隔符可使用其他字符,例如s#p1#p2#)

  s:在末行模式下完成查找替換操作

  s/查找的內容/替換的內容/修飾符

  s/pattern/替換的內容/修飾符    替換的內容可以使用\1 , \2,還可以使用 & 引用前面查找到的內容

修飾符:

 i:忽略大小寫

 g:全局替換,默認替換只替換第一次匹配到的內容

VIM編輯多文件模式

 vim    file1    file2    file3…

 :next    跳轉到vim打開的下一個文件

 :prev    跳轉到vim打開的前一個文件

 :first    跳轉到VIM打開的第一個文件

 :last    跳轉到VIM打開的最后一個文件

 :wall    保存所有文件

 :qall    退出所有

VIM窗口分隔模式

 vim -o|O  file1 file2.。。

 -o:水平分割

 -O:垂直分割

 在窗口間切換,Ctrl+w,方向鍵

 單文件窗口分割

 Ctrl+w,s:split,水平分割

 Ctrl+w,v:vertical,垂直分割

定制VIM的工作特性:

 配置文件:永久有效

 全局:/etc/vimrc

 個人:~/.vimrc

 末行:當前vim進程有效

  1. 行號

  顯示:set number,簡寫set nu

   取消顯示:set nonumber,簡寫 set nonu

  2. 括號匹配

   匹配:set  showmatch,簡寫為 set  sm

   取消匹配:set nosm

  3. 自動縮進

   縮進:set ai

   取消縮進:set noai

  4. 高亮搜索

   啟用:set  hlsearch

   取消:set  nohlsearch

  5. 語法高亮

   啟用:syntax on

   取消:syntax off

  6. 忽略大小寫

   啟用:set ic

   不忽略:set noic

VIM 如何獲取幫助

末行模式下使用    :help  command


1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;

:%s/^[[:space:]]\+/#/

2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;

:%s/^[[:space:]]//

3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符

:%s/^#[[:space:]]\+//

4、為/tmp/grub.conf文件中前三行的行首加#號;

:1,3s/^/#/

5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;

:%s/gpgcheck=0/gpgcheck=1/  
:%s/enabled=0/enabled=1/

6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202

#!/bin/bash
#
cp -R /etc  /backup/etc-$(date +%Y%m%d%H%M)
crontab -e
0 */4 * * *  /backup.sh

7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402

#!/bin/bash
#
cp -R /var/log/messages  /backup/messages_logs/messages-$(date +%Y%m%d)
crontab -e
0 0 * * 2,4,6  /backup.sh

8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中

#!/bin/bash
#
grep '^S' /proc/meminfo > /stats/memory.txt
crontab -e
0 */2 * * *  /meminfo.sh

9、工作日的工作時間內,每兩小時執行一次echo ""howdy""

#!/bin/bash
#
echo "howdy"
crontab -e
0 9-18/2 * * 1-5  /howdy.sh

腳本編程練習

10、創建目錄/tmp/testdir-當前日期時間; 

mkdir -p /tmp/testdir-$(date +%F-%T)

11、在此目錄創建100個空文件:file1-file100

for i in {1..100};do touch file$i;done

12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;

[root@localhost backup]# awk -F: '{if(NR%2==0){print $1}}' /etc/passwd

13、創建10用戶user10-user19;密碼同用戶名;

[root@localhost backup]# for i in {10..19};do useradd user$i;echo "user$i" | passwd --stdin user$i  ;done

14、在/tmp/創建10個空文件file10-file19; 

[root@localhost backup]# for i in $(seq 10 19);do touch file$i;done

15、把file10的屬主和屬組改為user10,依次類推。

[root@localhost backup]# for i in {1..10};do chown user$i:user$i file$i;done

原創文章,作者:Net21_木頭,如若轉載,請注明出處:http://www.www58058.com/35605

(0)
Net21_木頭Net21_木頭
上一篇 2016-08-22
下一篇 2016-08-22

相關推薦

  • 【LINUX編譯安裝程序】Centos7.4編譯安裝httpd 2.4.29

    舉例:Centos7.4編譯安裝httpd 2.4.29

    Linux干貨 2018-03-17
  • Memcached實現Tomcat的session會話綁定

    memcached介紹:  Memcached是一個高性能的分布式內存對稱緩存系統;通過緩存查詢數據庫結果,介紹數據庫訪問次數,以提高web應用的速度、提高擴展性。  Memcached特點:   協議簡單   基于libevent的事件處理   內置內存存儲方式  memcached不互相通信的分…

    Linux干貨 2015-08-01
  • 在CentOS 6上編譯安裝LAMP

    在CentOS 6上編譯安裝LAMP     在生產中如果需要使用較新的服務,而系統提供的rpm包又較老時該怎么辦呢?其實應用程序的安裝方式有多種,如:使用系統發行商提供rpm包或者下載源碼包手動編譯安裝也是可以的。今天我們編譯的服務不是一個單獨的而是一套。這套黃金搭檔從誕生之初到現在已經經過無數用戶的驗證,各大電商站點、門戶網站、以及各…

    Linux干貨 2017-04-23
  • 路由器解析路由表

    1.定義——>選擇最佳路徑;他只完成發送到下一個路徑上就結束,任務到達就撤了(就像快遞員一樣,當他將物件發往到下一個目的地,那他的任務就結束了)2.分類:主機路由、網絡路由、默認路由3.每個路由記錄由四項主要組成部分目標地址:主機IP、網絡ID號、未知地址(0.0.0.0)子網掩碼接口interface:從哪個口發往目標地址 網…

    2017-09-05
  • Linux基礎學習總結(一)

    一、計算機的組成與功能 二、Linux的版本 三、Linux的哲學思想 四、Linux基礎命令(一) 五、Linux幫助信息 六、Linux目錄結構

    Linux干貨 2016-09-20
  • 計劃任務

    任務計劃Linux任務計劃、周期性任務執行未來的某時間點執行一次任務:atbatch:系統自行選擇空閑時間去執行此處指定的任務周期性運行某任務:cron     at任務at命令:at [option] TIME常用選項:-V 顯示版本信息:-l: 列出指定隊列中等待運行的作業;相當于atq-d: 刪除指定的作業;相當于atrm-c: 查…

    Linux干貨 2017-08-28

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-22 15:06

    寫的很好,排版還可以在漂亮一點,加油

欧美性久久久久