第六周作業(yè)
請詳細總結(jié)vim編輯器的使用并完成以下練習(xí)題
vim總結(jié):
模式:編輯模式
插入模式
末行模式
內(nèi)置命令行接口
打開文件
vim +# 打開文件后直接處于文件的#行行首
+/PATTER 打開文件后直接處于第一個被PATTER匹配到行的行首
+ 直接處于尾行行首
模式轉(zhuǎn)換
編輯模式:默認模式,打開文件后處于編輯模式
編輯模式-->插入模式:
i: insert 光標所在地方輸入
a:append 在光標所在的后方輸入
o:在光標所在下方打開一個新行
I:大寫i 在光標所在行的行首插入
A 在光標所在行尾插入
O 在光標所在行的上方插入新行
插入模式-->編輯模式 ESC鍵
編輯模式-->末行模式 使用 冒號 :
末行模式-->編輯模式 ESC鍵 一次或兩次
關(guān)閉文件
ZZ:編輯模式下保存并退出
wq!:末行模式 w保存,q退出 ! 強制執(zhí)行
x :末行模式 保存退出
w /path/to/filename 保存到某文件內(nèi)當(dāng)前文件不退出 另存為效果
光標跳轉(zhuǎn)
字符間跳轉(zhuǎn)
k,j,h,l 上下左右 或上下左右的鍵盤
#j,k,h,l #表示數(shù)字,一次跳轉(zhuǎn)#個字符
單詞間跳轉(zhuǎn)
w 下一個單詞詞首
b 當(dāng)前或前一個單詞詞首
e 當(dāng)前或下一單詞的詞尾
# command 跳轉(zhuǎn)#指定個數(shù)的單詞
行首行尾跳轉(zhuǎn)
^ 跳轉(zhuǎn)至行首第一個非空白字符
0 跳轉(zhuǎn)至行首
$ 跳轉(zhuǎn)至行位
行間跳轉(zhuǎn)
G 跳轉(zhuǎn)至最后一行
# G 跳轉(zhuǎn)至第#行
1G,gg 跳轉(zhuǎn)至第一行
翻屏
ctrl +f 向文件尾翻一屏
+b 向文件首部翻一屏
+d 向文件尾部翻半屏
+u 向文件首部翻半屏
enter 安行向后翻
vim的編輯命令:
字符編輯
x 刪除光標所在處的字符
#x刪除光標所在處起始向后#個字符
xp 交換光標所在處字符和后面字符的位置
替換命令
r替換光標所在處的字符 r后跟索要替換的字符
刪除命令
d 刪除命令,可結(jié)合光標跳轉(zhuǎn)字符,實現(xiàn)范圍刪除
d$ 刪除光標所在到行尾
d^ 刪除光標到行首
下面命令支持#dw 刪除光標到下#個單詞詞首
dw 刪除光標到下一個單詞詞首
de 刪除光標所在到詞尾
db 刪除光標所在到詞首
dd 刪除整行
#dd 從光標所在行開始刪除#行
粘貼命令
p 粘貼緩沖區(qū)的內(nèi)容如果為整行,則粘貼在光標所在行的下方,否則粘貼至光標所在處的后方
P 粘貼緩沖區(qū)的內(nèi)容如果為整行,則粘貼在光標所在行的上方,否則粘貼至光標所在處的前方
復(fù)制命令(yank)
y 復(fù)制,工作行為相似與d命令
改變命令(change c)
編輯模式-->輸入模式-
刪除后進入輸入模式
操作類似d命令
其他編輯操作
可視化模式(選定區(qū)域)
v 按字符選定
V 按行選定
結(jié)合編輯命令使用
撤銷(undo)操作
u 撤銷此前的操作(可撤銷最近50次操作)
#u 撤銷此前的#個操作
撤銷此前的撤銷操作
ctrl+r
重復(fù)執(zhí)行前一個編輯操作
vim 自帶聯(lián)系教程
vimtutor.
vim 末行模式
內(nèi)建命令行接口
(1)地址定界
:m 特定第m行
:m,n 第m行到第n行
:m,+n 第m行后的n行
: . 當(dāng)前行
:$最后一行
: % 表示全文
:/pattern/ 光標起始第一次被模式所匹配到的行
/pattern1/,/pattern2/ 光標起始第一次匹配pattern1到的行開始到第一次匹配到pattern2的行結(jié)束
可與編輯命令一同使用,實現(xiàn)編輯操作
w /path/to/file 將范圍內(nèi)文本保存到其他地方
(2) 查找
/pattern 從當(dāng)前光標開始向尾部查找能被匹配到的字符串并將光標移到查找到的字符串
?pattern 從當(dāng)前光標開始向文件首部查找能被匹配到的字符串并將光標移到查找到的字符串
n 下一個被查找到的字符串
N 上一個被查找到的字符串
(3)查找替換(替換為無實現(xiàn)刪除效果)
s 末行模式的命令
s/查找的內(nèi)容/替換的內(nèi)容/修飾符
查找的內(nèi)容:可以用正則表達式
替換的內(nèi)容:不能使用模式,但可引用
如果查找的內(nèi)容部分使用了分組符號可在后面替換的內(nèi)容使用后向引用。
直接引用查找模式匹配到的全部文本(使用&符號)
修飾符:i 查找的內(nèi)容忽略大小寫
g 全局替換(默認只替換匹配到行的第一次替換)
可把分割符替換成其他非常用內(nèi)容
vim 多文件功能
vim file1 file2...
多文件
末行模式 next 切換到下一個文件
prev 切換到上一個文件
first 切換到第一個文件
last 切換到最后一個
退出所有文件
wqall 保存所有文件退出
wall 保存所有文件
qall 退出所有文件
多窗口
使用ctrl+w 方向鍵 窗口間切換
vim -o|O
-o 水平分割窗口
-O 垂直分割窗口
單個文件也可分割為多個窗口進行查看
ctrl+w s 水平分割窗口
ctrl+w v垂直分割窗口
定制vim的工作特性
末行模式下設(shè)定僅對當(dāng)前vim有效
永久有效需修改配置文件
個人: vim ~/.vimrc
全局 : /etc/vimrc
1、行號
末行模式 set nu 顯示行號
set nonu 取消行號
2、括號匹配高亮顯示
set showmatch ,set sm
set noshowmatch,set nosm
3、自動縮進功能
set ai
set noai
4、高亮搜索
set hlsearch
set nohlsearch
5、語法高亮
syntax on
syntax off
6、忽略大小寫
set lc
set nolc
1、復(fù)制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;
vim /tmp/rc.sysinit %s/^[[:space:]]/# /
2、復(fù)制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符;
vim /tmp/grub.con :%s/[[:space:]]\+//
3、刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了至少一個空白字符的行行的#和空白字符
vim /tmp/rc.sysinit :%s/^#[[:space:]]\+//
4、為/tmp/grub.conf文件中前三行的行首加#號;
vim /tmp/grub.conf :1,3s/^/#/
5、將/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改為1;
vim /etc/yum.repos.d/CentOS-Media.repo :%s/=0/=1/
6、每4小時執(zhí)行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
crontab -e 0 */4 * * * /bin/tar -cPf /backup/etc-`date +%Y%m%d%H%M` /etc
7、每周2,4,6備份/var/log/messages文件至/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
crontab -e 0 0 * * 2,4,6 /bin/tar -cPf /backup/messages_logs/messages-`date +%Y%m%d` /var/log/messages
8、每天每兩小時取當(dāng)前系統(tǒng)/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
crontab -e 0 */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt
9、工作日的工作時間內(nèi),每兩小時執(zhí)行一次echo "howdy"
crontab -e 0 */2 * * 1-5 /bin/echo "howdy"
腳本編程練習(xí)
10、創(chuàng)建目錄/tmp/testdir-當(dāng)前日期時間;
#!/bin/bash mkdir /tmp/testdir-`date +%Y%m%d%H%M%S`
11、在此目錄創(chuàng)建100個空文件:file1-file100
#!/bin/bash DATA=`date +%Y%m%d%H%M%S` [ ! -d /tmp/testdir-$DATA ] && mkdir /tmp/testdir-$DATA touch /tmp/testdir-$DATA/file{1..100}
12、顯示/etc/passwd文件中位于第偶數(shù)行的用戶的用戶名;
#!/bin/bash sed -n '2~2p' /etc/passwd |cut -d: -f1
13、創(chuàng)建10用戶user10-user19;密碼同用戶名;
#!/bin/bash for i in {10..19};do useradd user$i && echo "user$i" |passwd --stdin user$i done
14、在/tmp/創(chuàng)建10個空文件file10-file19;
#!/bin/bash touch /tmp/file{10..19} #!/bin/bash for i in {10..19};do touch /tmp/file$i done ~
15、把file10的屬主和屬組改為user10,依次類推。
#!/bin/bash for i in {10..19};do chmod user$i:user$i /tmp/file$i done ~