1. 程式人生 > 實用技巧 >linux-vim詳解

linux-vim詳解

備註:此總結來自馬哥課堂筆記,本人後總結。

時間:2015.09.3

linux-vim詳解

vim

俗稱全屏文字編輯器。

其可分為三種模式:編輯模式、輸入模式、末行模式

解釋:

編輯模式:可以移動游標、刪除字元等

輸入模式:在此模式下可以輸入字元,按ESC將回到輸入模式

末行模式:可以儲存檔案、退出vi、設定vi、查詢等功能(低行模式也可以看作是命令模式裡的)

相互切換

編輯模式---->輸入模式

i游標所在的前面進行插入字元

a游標所在的後面進行插入字元

o游標所在行另起一行進行插入字元

I大寫I是在游標的行首開始插入字元

A 大寫A是在游標的行尾開始插入字元

O大寫O在游標所在行的上面新起一行進行插入字元

輸入模式---->編輯模式

ESC即可

編輯模式下的操作

dd刪除游標所在的行

3dd刪除連同游標所在的行刪除3行

編輯模式----->末行模式

:進入末行模式

末行模式---->編輯模式

ESC連續兩次是直接回到編輯模式

開啟vim

vim

vim /PATH/To/SOMEFILE

這裡如果檔案不存在將直接建立檔案

+# #號為行號如果vim +3那麼就是vim開啟之後游標在第3行的行首

+/PATTERN表示第一次開啟檔案是游標所在位置在匹配行的行首

關閉vim

備註在末行模式下

:q不儲存,退出

: q!強制不儲存,退出

: w儲存不退出

: wq儲存退出

: wq!強制儲存並退出

: x儲存退出

ZZ :兩個大寫的ZZ是儲存退出備註要在編輯模式下

游標跳轉

字元間跳轉

h向左一個字元

l向右跳轉

j 游標向下逐行跳轉

k游標向上逐行跳轉

結合數字跳轉

3h向左跳轉3個字元

3j向下跳轉3行

單詞間跳轉

w:跳轉至後一個單詞的詞首

e:跳轉至後一個單詞的詞尾

b:跳轉至前一個單詞的詞首

單詞跳轉也支援加數字例:3w就是向後條個單詞

行內跳轉

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

$:跳轉至行尾(絕對行尾)

0:跳轉至絕對行首

行間移動

G:單個大寫的G跳轉至檔案尾部,

1G:跳轉至檔案的首部,2個小寫的gg也是跳轉至首部

句間移動

) 跳轉至下一句

( 跳轉至上一句

段落間移動

}跳轉至下一段的段首

{跳轉至上一段的段首

編輯命令

字元編輯操作

x:即表示刪除游標所在處的位置

也可以加數字,即表示游標所在之處之後的幾個數字,例:4x就是游標所在出向後算上游標字母4個字元

xp:表示游標所在位置的字元與後面字元的位置調換

r:替換游標所在處的字元 例子 r n就是把貫標所在位置的字元替換為n

刪除命令

d:

d$ 刪除游標所在行游標位置至行尾的字元

d^ 刪除游標所在行游標位置至行首的字元

dw刪除游標所在位置的單詞

db刪除游標至所在位置的單詞除游標的單詞的字元然後游標移至上一單詞的詞尾

d0刪除游標所在行游標所在位置至行首的所有字元

de刪除游標所在行游標所在位置連同游標在內向後的一個單詞

dd刪除游標所在的行

以上命令也支援與數字結合。

注意:刪除命令會被vim編輯器儲存至緩衝區當中

貼上命令

如果複製或刪除的內容不是一個完整的行

p:貼上至當前游標所在處的後面

P:貼上至當前游標所在處的前面

如果複製的內容是完整的行(備註:不是一行)

p:貼上至當前游標所在行的下方

P:貼上至當前游標所在行的上方

複製命令

y:

y$: 複製游標所在處到行尾的內容

y^:複製游標所在處到行首的內容

y0:複製游標所在處到絕對行首的內容

ye:複製游標所在處的字元和後面的字元複製的時候使其前後位置交換

yw:複製游標所在位置的單詞,向後複製

yb:複製游標所在位置的單詞,向後複製

yy:複製游標所在位置的單詞但至複製游標所在位置之前此單詞的字元

以上命令也支援與數字的結合

改變命令

此命令直接讓使用者從編輯模式到輸入模式

支援命令有

cc:改變游標所在的行,游標到本行的行首,進入插入模式等待在此行輸入新的字元

c$:改變游標所在的位置至行尾,進入插入模式等待在輸入新的字元

c^:改變游標所在的位置至行首,進入插入模式等待在輸入新的字元

c0:改變游標所在的位置至絕對行首,進入插入模式等待在輸入新的字元

ce:改變游標所在的位置的單詞(向後一個單詞),進入插入模式等待在輸入新的字元

cw:改變游標所在的位置至本單詞尾,進入插入模式等待在輸入新的字元

cb:改變游標所在的位置向前匹配一個單詞,進入插入模式等待在輸入新的字元

以上命令也支援與數字的結合

撤銷命令

u

撤銷此前編輯的操作

支援數字加u

Ctrl+r恢復撤銷

.恢復之前的操作

翻屏操作

Ctrl+f:向後一屏

Ctrl+b:向前一屏

Ctrl+f:向後半屏

Ctrl+f:向前半屏

vim的末行模式命令

(1)地址,定界

命令格式:開始行,結束行

#:第#行表示游標移到第幾行

#,#

使用方法20,30d刪除20行到30;或者使用5d就是刪除第5行

#,+#

使用方法100+3d意思就是刪除100行和此行向下再數3行的行

特殊字元

.表示當前行

$表示最後一行

%表示全文

字元匹配

/Pat1/表示第一次被模式所匹配到的行

#,/Pat1/表示從數字#開始第一次匹配到Pat1的字元

/pat1/,/pat2/表示第一次被pat1匹配到的行到第一次被pat2匹配到的行的內容

這些地址定界之後都可以跟上編輯命令,如:

d刪除字元

y複製字元

w 儲存匹配的字元儲存至另一個資料夾中;

例:3,100w /123/a意思是將匹配到的行儲存至/目錄下的a檔案中

r插入另一個文字至此正在編輯的文字中

例:r /123/a讀入根目錄下123目錄下的a檔案內容至游標所在行的下面

(2)查詢功能

/PATTERN:向尾部進行查詢

?PATTERN:向頭部進行查詢

備註,查詢到的內容也是第一個被匹配的字元,我們可以使用n來查詢與命令同方向的字元,使用大寫的N則相反。

(3)查詢替換

s:在末行模式下,在地址定界的範圍內完成查詢替換工作;

例s/要查詢的內容/替換的內容/修飾符

要查詢的內容:可使用模式

替換為的內容:不能使用模式,但可以使用後向引用的符號,以引用前面模式中的分組括號所匹配到的內容

\1,\2,...

&:引用“要查詢的內容”匹配到的整個內容

修飾符

i:忽略大小寫

g:全域性替換

/:用於分隔符,要是查詢的內容或替換為的內容中出現此符號,要使用\對其轉義,使用格式為:\/

分隔符可替換為其它字元例 @ #等

例查詢游標所在行至後19行所有以#開頭的行,把#號去掉

: .,+19s/^#//g

多檔案模式

一次開啟多個檔案

格式:vimfile1,file2,file3

預設開啟的是第一個檔案

next進入下一個檔案,

first進入第一個檔案,

last跳轉至最後一個檔案

prev跳轉至前一個檔案

wqall儲存退出所有檔案

q!all退出所有檔案

開啟多個檔案可以實現檔案間的複製貼上

多視窗開啟檔案

vim -o 水平分割多個視窗

vim -O垂直分割多個視窗

Ctrl+w上下左右箭頭來進行視窗切換

單檔案視窗分割

Ctrl+w,s水平分割

Ctrl+w,v垂直分割

vim定製工作特性

(1)行號

顯示:setnumber

禁用:setnonu

(2)括號匹配

顯示:setsm

禁用:setnosm

(3)自動縮排

啟動:setai

關閉:setnoai

(4)高亮搜尋

啟用:sethlsearch

關閉:setnohlsearch

(5)語法著色

啟用:syntaxon

關閉:syntaxoff

(6)忽略大小寫

啟用:setic

關閉:setnoic

好了,vim的基本操作基本上就這些了,下面來做幾個練習題吧!

1、複製/etc/grub2.cfg配置檔案至/tmp目錄,用查詢替換命令刪除/tmp/grub2.cfg檔案中行首的空白字元

wKiom1XqR6SCXUhPAAAjzt4aZ58400.jpg

2、複製/etc/rc.d/init.d/functions檔案至/tmp目錄,用查詢替換命令為/tmp/functions的每行開頭為空白字元的行的行首加一個#; 原有空白字元保留;

wKioL1XpnbGBoTNNAAFcFfLJtSM985.jpg

3、替換/tmp/functions檔案中的/etc/sysconfig/init為/var/log;

wKioL1XpnhLzEsMxAABO8qO1TLE987.jpg

4、刪除/tmp/functions檔案中所以#開頭,且#後面至少跟了一個空白字元的行的行首#;

wKioL1XpnkHRQapBAAA6dSHsR8U017.jpg

轉載於:https://blog.51cto.com/huichengu/1690942