第6周作業
—
請詳細總結vim編輯器的使用并完成以下練習題
vim是模式化的全屏文本編輯器。
vim分為三種模式:
分別是編輯模式;輸入模式;末行模式;
打開文件的方式有:vim +# FILE
打開文件FILE并把光標定位到#行的行首;vim +/PATTERN FILE
打開文件并讓光標處于第一個被PATTERN匹配到的行的行首。(支持正則表達式)vim + FILE
打開文件并把光標定位于FILE文件的最后一行的行首。
模式的轉換:
vim默認處于編輯模式;
從編輯模式進入輸入模式可以按i
鍵,在光標所在處輸入;a
鍵,在光標所在處后方輸入;o
鍵,在光標所在處下方新建一行輸入;I
鍵,在光標所在行的行首輸入;A
鍵,在光標所在行的行尾輸入;大寫O
鍵,在光標所在處的上方新建一行輸入;
輸入模式退出到編輯模式,按ESC鍵退出輸入模式;編輯模式進入末行模式需要按:進入末行模式;退出末行模式進入編輯模式也是按ESC鍵,有時需要連按2次ESC才能退出到編輯模式。輸入模式是不能直接進入末行模式的,同樣末行模式也不能直接進入輸入模式,只能通過編輯模式進入。
關閉文件:ZZ
:保存并退出。
進入末行模式 :q 退出,注意(這種退出方式只能是沒有對文件進行編輯和輸入的情況下才能退出):q!
不保存退出:wq
保存退出:x
保存退出:w /PATH/TO/SOMEFILE
保存修改后的內容,另存為新路徑文件。
編輯模式的光標跳轉操作:
字符間跳轉:h
左,l
右,j
下,k
上,也可以在h,l,j,k
前加數字,表示跳轉指定數量的字符。
單詞間跳轉:w
下一個單詞的詞首,b
當前或前一個單詞的詞首,e
當前或后一個單詞的詞尾,同樣也可以在w,b,e
前加數字,指定跳轉的單詞數量。
注意:字符間跳轉和單詞間跳轉可以連用#COMMAND
實現一次跳轉指定#數量的字符或單詞。例:3w,2b,4e,5k等。
行首行尾跳轉:^
跳轉到行首的第一個非空白字符; 0
數字零是跳轉至絕對行首;$
跳轉至行尾;
行間跳轉:#G
跳轉至#指定數字的行的行首;gg
是跳轉至第一行;G
跳轉至最后一行;
句間跳轉:)(
段間跳轉:{ }
句間跳轉和段間跳轉都可以指定數量#,來實現指定數量的跳轉。
翻屏操作:ctrl+f
向文件的尾部翻一屏;ctrl+b
向文件的首部翻一屏;ctrl+d
向文件的尾部翻半屏;ctrl+u
向文件的首部翻半屏;Enter
按行為單位向文件尾部翻屏;
編輯模式的編輯命令:
字符編輯:x
刪除光標所在處的字符(單個字符);#x 刪除光標所在處起向后#個數量的字符;xp 交換光標所在處字符和其后面字符的位置;
替換命令:r
替換光標所在處的字符,r后跟要替換的字符。
刪除命令:d
刪除命令,可結合光標跳轉字符實現范圍刪除; dw ; de ; db ;3db;2de;等
例: d$
刪除光標所在處至行尾的字符; d^
刪除光標所在處到行首的字符;dd
是刪除光標所在處的一整行;#dd
是刪除光標所在處起向下#行;
粘貼命令:
小寫 p
緩沖區的內容如果為整行,則粘貼在光標所在行的下方。如果不是整行,則粘貼在光標所在處的后方。
大寫 P
緩沖區的內容如果為整行,則粘貼在光標所在行的上方。如果不是整行,則粘貼在光標所在處的后方。
注意:緩沖區的最后一行是刪除命令的刪除的最后一條字符信息,只有最后一條字符信息可用于粘貼命令。
復制命令:y
復制命令,工作行為和 d
刪除命令相似,可連用光標跳轉符實現范圍復制,例:y$; y^;ye;2yw;3yb等;yy
復制光標所在處一整行; #yy
復制光標所在行起,向下#行一起復制。
更改命令:c
是更改命令,此命令實現從編輯模式–>輸入模式,可以實現刪除操作并進入輸入模式;可連用光標跳轉符;
例:c$
刪除光標所在處開始至行尾的字符并進入輸入模式;其他例子如:c^;c0;cb;ce;3cw等;實現范圍刪除并進入輸入模式;cc
刪除光標所在行并進入輸入模式。#cc
刪除光標所在行起向下#行,并進入輸入模式;
可視化模式:
小寫 v
按字符選定并高亮顯示,可隨意選定字符(可連用光標跳轉符選取字符)
大寫 v
按行選定并高亮顯示(只能整行選定)
可視化模式可以結合的編輯命令有:d刪除命令,c更改命令,y復制命令;
撤銷操作:u
撤銷此前的操作;#u
撤銷此前的#個操作,#指定數字。
撤銷撤銷操作:ctrl+r
重復前一個編輯操作。
vim末行模式:
末行模式是vim內建的命令行接口。
1.地址定界:
:start_pos[end_pos]#
特定#行,例:5 即第5行;#,#
指定從#到#行,指定行的范圍,左側為起始行,右側為結束行;例:1,5 從1行到5行;#,+#
指定行的范圍,左側為起始行的絕對編號,右側為偏移量;例: 2,+3 從2行開始.
當前行,例: .,+3 當前行開始+3行;$
最后一行; 例: .,$-1 當前行開始到倒數第2行;%
全文范圍/pattern/
第一次被pattern匹配到的行(注:第一次是從光標所在處起始往文件尾部匹配)
例:/pattern/,$d
光標所在處開始到文本最后一行,匹配到的字符做刪除操作;
可同編輯模式命令 d,y,c連用
w /PATH/TO/SOMEFILE
將指定范圍內的文本保存至指定的文件中;r /PATH/TO/SOMEFILE
將指定文件中的文本讀取并插入到指定位置;例: 5r /tmp/messages
在第5行后讀取插入/tmp/messages的文本
2.查找
/pattern
從當前光標所在處向文件尾部查找被當前模式匹配到的字符串;?pattern
從當前光標所在處向文件首部查收被當前模式匹配到的字符串;
注意:小寫n是與命令方向相同,切換到下一個被模式匹配到的字符串,大寫N是與命令方向相反;
3.查找并替換
s
末行模式查找命令;末行模式查找替換命令格式:s/要查找的內容/替換為的內容/修飾符
;
注意:要查找的內容
可以使用基本正則表達式;替換為的內容
不可以使用正則表達式,但可以引用前面要查找的內容
;
如果要查找的內容
在模式中使用分組符號
,在替換為的內容
中可用后項引用\1;
另一種方式是直接引用前面要查找的內容
,使用&
符號,直接引用前面要查找內容匹配到的所有字符。
修飾符:i
忽略大小寫g
全局替換,意思是一行中,查找到的內容出現多次都替換。
可把分隔符替換成其他非常用字符:如:s@@@;s###
等
vim的多文件功能
vim可以一次打開多個文件;vim FILE1 FILE2 ...
文件間切換可以使用末行模式下命令 :next
下一個文件;:prev
上一個文件;:first
第一個文件;:last
最后一個文件;
退出所有文件:wqall 保存所有文件并退出;
多窗口:-o
水平分割窗口;-O
垂直分割窗口;例:vim -o fstab messages
在多窗口中切換:編輯模式中ctrl+w
激活窗口切換功能,使用h,j,k,l
切換窗口;
單個文件也可以分割為多個窗口進行查看;在vim打開的單個文件中ctrl+w激活多窗口,然后按s鍵,是把單個文件水平分割,加v鍵是垂直分割;單文件多窗口可以水平垂直任意分割并存。
定制vim的工作特性
1.行號顯示:set nu
; 取消行號顯示:set no nu
;注意:在末行模式下的設定,僅對當前vim進程有效;想永久生效需要更改配置文件;全局配置文件路徑/etc/vimrc
;個人配置文件路徑~/.vimrc
;
2.括號匹配高亮顯示:set sm
;取消括號匹配高亮顯示:set nosm
;
3.自動縮進啟動:set ai
;禁用:set noai
;
4.高亮搜索結果啟用:set hlserch
;禁用:set nohlserch
;
5.語法高亮顯示:syntax on
;禁用:syntax off
;
6.忽略字符大小寫:set ic
;禁用:set noic
在vim末行模式下:help
可以查看幫助文件。
1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
cp /etc/rc.d/rc.sysinit /tmp
%s@^[[:space:]]\+@#&@g
2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
cp /boot/grub/grub.conf /tmp
%s@^[[:space:]]\+@@
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
0 */4 * * * /bin/tar -zcf /backup/etc-$(date +\%Y\%m\%d\%H\%M).tar.gz /etc
7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
0 0 * * 2,4,6 /bin/tar -zcf /backup/messages_logs/messages-$(date +\%Y\%m\%d).tar.gz /var/log/messages
8、每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
0 */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt
9、工作日的工作時間內,每兩小時執行一次echo “howdy”
0 9-18/2 * * 1-5 /bin/echo "howdy"
腳本編程練習
10、創建目錄/tmp/testdir-當前日期時間;
#!/bin/bash
#mkdir -p /tmp/testdir-$(date +%Y%m%d%H%M)
11、在此目錄創建100個空文件:file1-file100
#!/bin/bash
#touch file{1..100}
12、顯示/etc/passwd文件中位于第偶數行的用戶的用戶名;
#!/bin/bash
#sed -n 'n;p' /etc/passwd | cut -d: -f 1
原創文章,作者:Eason,如若轉載,請注明出處:http://www.www58058.com/69753