1. 程式人生 > >文本編輯器vim

文本編輯器vim

編輯器 文本 vim

不知不覺一周的時間又過完了,感覺前所未有的充實!這周學習了vim編輯器據說很重要!

一.打開文件

★ vim +n filename 打開文件後,讓光標處於第n行的行首,+默認尾行。

技術分享

★ vim +/要搜索的詞 filename 打開文件後,直接讓光標處於第一個被匹配到的行的行首。

技術分享

★ vim
-m 只讀方式打開文件

技術分享 -b 二進制打開文件
-d file1 file2 比較多個文件

二.vim編輯器模式的切換

插入模式-------->命令模式

esc

命令模式--------->擴展命令模式

擴展命令模式-------->命令模式

enter,esc

★ 命令模式
ZZ: 保存退出
ZQ :不保存退出

命令模式翻屏操作:

ctrl +f 向下翻一屏
ctrl +b 向上翻一屏
ctrl +d 向下翻半屏
ctrl +u 向上翻半屏

★ 擴展命令模式:
:q 退出
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出

註意:wq!或x!當文件對當前用戶權限為read-only時,可以強制保存並退出(僅限root和當前文件的owner)

擴展命令模式

按“: ”進入擴展模式
創建一個命令提示符: 處於底部的屏幕左側
命令:w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! ! 不存盤退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 執行命令
r!command 讀入命令的輸出

★ 地址界定(擴展命令模式)

#具體第# 行,例如2 表示第2行 行
#,# 從左側#表示起始行,到右側#表示結尾行

#,+# 從左側#表示的起始行,加上右側#表示的行數 。":2,+3表示2到5行
. 當前行
$ 最後一行
.,$-1 當前行到倒數第二行
% 全文, 相當於1,$

/pat1/,/pat2/
從第一次被pat1 模式匹配到的行開始,一直到第一次被pat2 匹配到的行結束

★ 查找(擴展命令模式)

/PATTERN :從當前光標所在處向文件尾部查找
?PATTERN :從當前光標所在處向文件首部查找

n :與命令同方向

N:與命令反方向

★替換 (擴展命令模式)

格式:s/ 要查找的內容/ 替換為的內容/ 修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可以 使用“&” 引用前面查找時查找到的整個內容。
修飾符:
i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc: 全局替換,每次替換前詢問
查找替換中的分隔符/ 可替換為其它字符,例如 s@/etc@[email protected] s#/boot#/#i

★多文件模式:vim f1 f2 f3
:first 第一個
:next 下一個
:last 最後一個
:prev 前一個
:wall保存所有
:qall退出所有
:wqall保存退出所有

★使用多個窗口
多文件分割:vim -o|-O file1 file2 file3

-o 水平分割

技術分享

-O 垂直分割

技術分享

在多個窗口間切換: ctrl+w Arrow
單文件分割:
ctrl+w,s : split 水平分割
ctrl+w,v : vertical 垂直分割
ctrl+w,q : 取消相鄰的窗口
ctrl+w,o : 取消所有的窗口
:wqall 退出

◆習題

1.復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符。

技術分享

技術分享

技術分享

這道題中用到的知識點有:

1.地址界定 %表示全

2.替換的格式:格式:s/ 要查找的內容/ 替換為的內容/ 修飾符

3. 要查找的內容用到正則表達式

4. 要替換成空格可以用//表示




2.復制/etc/rc.d/init.d/functions 文件至/tmp 目錄,用查找替換命令為/tmp/functions 的每行開頭為空白字符的行的行首添加一個#號。

技術分享

技術分享技術分享

與上道題相比,這道題要用到後項引用,但是要註意的是後向引用的時候,要引用的內容一定要加()

3.復制/etc/rc.d/init.d/functions 文件至/tmp 目錄,替換/tmp/functions 文件中的/etc/sysconfig/init 為/var/log 。


技術分享

技術分享

答案: :%s@\/etc\/sysconfig\/init@\/var\[email protected]

解析:這道題中有許多"/",為防混淆可將查找替換中的分隔符/換成別的,如:@,#,此外查找替換中的/要進行轉義
















文本編輯器vim