請詳細總結vim編輯器的使用并完成以下練習題
vim總結:
vi:Visual Interface,是一種文本編輯器,所謂文本數據是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。
文本編輯器的種類:
行編輯模式:所謂行編輯器是指一行一行來編輯處理的工具,如sed。 全屏編輯器:編輯空間占據整個屏幕,如nano,vi。 VIM即Vi IMproved:vi的增強版,vim是模式化的編輯。 vim在工作過程中有三種模式:編輯模式(命令模式)、輸入模式、末行模式。 1、編輯模式:也叫命令模式,鍵盤操作被常被理解為編輯模式; 2、輸入模式:在文本文件當中進行輸入內容; 3、末行模式:vim內置的命令行接口,執行vim的內置命令。
vim的使用
打開文件 #vim[option]...[FILE]... +#:打開文件后,直接讓光標處于第#行的行首; 例子: ~]# vim +2 functions +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首。 例子: ~]# vim +/functions functions 模式轉換 1、ESC鍵:可以從輸入模式轉換到編輯模式 2、從編輯模式-->輸入模式,可使用下面的命令: i:在光標所在處的前方轉換為輸入模式 a:在光標所在的后方轉換為輸入模式 o:在光標坐在的行的下方新建一個空行并轉換為輸入模式 I:在光標所在行的行首輸入 A:在光標所在行的行尾輸入 O:在光標所在行的上方新建一個空白行 3、編輯模式-->末行模式:直接輸入冒號(:)即可在窗口的左下方顯示冒號; 4、末行模式-->編輯模式:敲擊ESC鍵 5、輸入-->編輯-->末行:輸入模式不能直接轉換到末行模式 退出文件 需要先切換到編輯模式之后才能退出,在切換到編輯模式后鍵入以下命令即可進行相關的操作: :q 退出 :q! 不保存退出 :wq 保存退出 :x 保存退出 :wq! 強制保存退出 :w /PATH/TO/SOMEWHERE 編輯模式保存退出的快捷鍵:ZZ 光標移動 字符間移動:可以使用h,j,k,l鍵來進行光標的移動 h:左 l:右 j:下 k:上 同時還支持數字跳轉:#{h|j|k|l}:跳#個字符 例如: 10j 往下移動10行 單詞間移動:可以使用w,e,b鍵來進行移動 w:下一個單詞詞首 e:當前單詞或下一個單詞詞尾 b:當前單詞或前一個單詞詞首 #{w|e|b} 行內移動: ^:行首第一個非空白字符 0:絕對行首 $:絕對行尾 句子間移動: ) ( 段落間移動: { { 行間移動: #G:直接跳轉至第#行 G:最后一行 1G,gg:第一行
vim的編輯命令
x:刪除光標所在處的字符 #x:刪除光標出起始的#個字符 d:刪除命令,結合光標跳轉字符使用,刪除跳轉字符內的字符 w,b,e,$,0,^ dd:刪除光標所在的行 #dd:多行刪除 p:paste,黏貼 p:緩沖區存的如果為整行,則黏貼于當前光標所在的行下方,否則,黏貼至當前光標所在處的后面; P:緩沖區存的如果為整行,則黏貼于當前光標所在的行上方,否則,黏貼至當前光標所在處的前面; y:yank,復制,結合光標跳轉字符使用,復制跳轉范圍內的字符 w,b,e,$,0,^ #y:復制從當前行向下#行內容 Y:yy 復制行 c:change,修改,結合光標跳轉字符使用,修改跳轉范圍內的字符 w,b,e,$,0,^ 所謂修改就是先刪除,再轉換為輸入模式 cc,C:刪除光標所在處的整行而后轉為輸入模式 #cc vim可視化模式: v:光標走過的字符 V:光標走過的行 Note:經常結合編輯命令使用:d,c,y 撤銷編輯: u:undo,撤銷此前的操作 #u:撤銷最近#次操作 撤銷此前的撤銷操作 Ctrl+r 翻屏操作 Ctrl+f:向文件尾部翻一屏 Ctrl+b:向文件首部翻一屏 Ctrl+d:向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏
vim中的末行模式
1、內容定界:startpos,endops #:第#行 #, #:從左側第#行到右側第#行 #, +#:從左側第#行起,加上右側#表示的行數 .:當前行 $:最后一行 %:全文,相當于1,$ 10,$-1 /pat1/,/pat2/:從第一次被pat1模式匹配模式到的行開始,一直到第一次被pat2匹配到的行結束; #,/pat/:從第#行開始到第一次匹配到pat為止; /pat/,$:從第一次匹配到pat到最后一行; 使用方法:后跟一個編輯密令c,d,y可以直接附加在地址范圍后使用; w /path/to/somefile:將選定范圍內的內容保存至某個文件中 r /path/from/somefile:將指定的文件內容中的內容讀取到指定位置 2、查找 /PATHERN:從當前光標所在處向文件尾部查找 ?PATHERN:從當前光標走在處向文件首部查找 在查找過程當中可以吃用n或者N來輔助查找 n:與命令同方向查找 N:與命令反方向查找 3、查找并替換 s:在末行模式下完成查找替換操作 s/查找模式/要替換成的內容/修飾符 查找模式:可以使用正則表達式 替換的內容:不能使用模式,僅能使用引用(如\1,\2...等后向引用符號;還可以使用“&”引用前面查找時查到的整個內容) 修飾符: i:忽略大小寫 g:全局替換;默認情況下,每一行只替換一次出現的內容; 查找替換中的分隔符/可以用其它沒有出現過的其它字符替代如:s@@@gi s###gi等 示例: 示例: %s@\<t\([[:alpha:]]\+\)\>@T\1@g %s@\<t[[:alpha:]]\+\>@&er@g :.,$s@^[[:space:]]\+@@ 當前光標所在行至文本末尾替換
vim的多文件功能
多文件模式(一次打開多個文件) vim FILE1 FILE2 ... 在文件間切換: :next 切換到下一個文件 :previous 切換到上一個文件 :last 切換到最后一個文件 :first 切換到第一個文件 退出所有文件: :wqall 保存所有文件并退出 :wall :qall 多窗口模式 多文件:(演示:vim -o a.txt b.txt) vim -o:水平分割 -O:垂直分割 在窗口間切換Ctrl+w,Arrow(上下左右箭頭) 注意:單個文件也可以分割為多個窗口進行查看 Ctrl+w,s:水平分割 Ctrl+w,v:垂直分割
窗口屬性定義:
:set nu顯示行號 :set nonu 取消顯示行號 :set ai 啟用自動縮進功能 :set noai 取消自動縮進功能 :set ic 忽略字符的大小寫 :set noic 不忽略字符的大小寫 :set sm 括號匹配 :set nosm 取消括號匹配 語法高亮: :syntax on|off 搜索高亮: :set hlsearch :set nohlsearch Note:末行模式中的窗口屬性只對當前vim進程有效,可通過修改下下面的配置文件進行定義: 全局:/etc/vimrc 用戶:~/.vimrc
1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
~]# cp /etc/rc.d/rc.sysinit /tmp/ ~]# vim /tmp/rc.sysinit :%s@^[[:space:]]\+@#&@g 備注: 替換的內容,不能使用模式,僅能使用引用(如\1,\2...等后向引用符號;還可以使用“&”引用前面查找時查到的整個內容; 修飾符:g 全局替換;默認情況下,每一行只替換一次出現的內容。
2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
~]# cp /boot/grub/grub.conf /tmp ~]# vim /tmp/grub.conf :1,$s@^[[:space:]]@@g
3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符
:%s@^#[[:space:]]\+@@g
4、為/tmp/grub.conf文件中前三行的行首加#號;
:1,3s@.*@#&@g
5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
:%s@\(enabled\|gpgcheck\)=0@\1=1@g
6、每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
~]#mkdir /backup ~]#crontab -e * */4 * * * /bin/cp -a /etc /backup/etc-$(date +%Y%m%d%H%M) 備注:cp -a 保留原文件的權限
7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
~]#mkdir -p /backup/messages_logs ~]#crontab -e * * * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)
8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
~]# mkdir -p /stats ~]# touch /stats/memory.txt ~]#crontab -e * */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt
9、工作日的工作時間內,每兩小時執行一次echo "howdy"
~]#crontab -e * 8-17/2 * * 1-5 /bin/echo "howdy"
腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間;
#!/bin/bash # mkdir /tmp/testdir-$(date +%Y%m%d%H%M) #!/bin/bash # dirName=testidr-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName
11、在此目錄創建100個空文件:file1-file100
#!/bin/bash # dirName=testdir-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName for i in {1..100};do touch /tmp/$dirName/file$i done #!/bin/bash # dirName=testdir-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName touch /tmp/$dirName/file{1..100}
12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
#!/bin/sh # line=$(cat /etc/passwd | wc -l) for i in $(seq 2 2 $line);do head -$i /etc/passwd | tail -1 | cut -d: -f1 done
13、創建10用戶user10-user19;密碼同用戶名;
#!/bin/bash # for ((i=10;i<=19;i++)); do if ! id user$i &> /dev/null; then useradd user$i else echo "user$i" | passwd --stdin user$i fi done
14、在/tmp/創建10個空文件file10-file19;
#!/bin/bash # for i in {10..19};do touch /tmp/file$i done
原創文章,作者:N23-蘇州-void,如若轉載,請注明出處:http://www.www58058.com/56487
完成的非常好,6、8題需要精確到分鐘,7題需要精確到分鐘、小時哈,9題還差一個工作日哦,加油!