linux基礎命令——文字編輯vim

roc_guo發表於2023-03-14
使用vim編輯一個檔案的最常用 就是:

vim file 是一個新檔案,也可以是原有檔案。這樣的 執行後將開啟編輯器,顯示檔案file的內容。如圖所示:

linux基礎命令——文字編輯vimlinux基礎命令——文字編輯vim

如果是一個新檔案,底部左邊會顯示"file" [新檔案]的字樣,右邊顯示0,0-1表示當前游標所在行數和字元數。如果開啟的是一個老檔案,底部左邊顯示"file" 3L, 66C字樣,表示檔名,當前游標所處行號,檔案總位元組數。檔案中沒有字元的地方會以字元~開頭。

現在還不能進行編輯,vim編輯檔案有幾種模式,當前所處模式是普通模式,可以移動游標、執行復制貼上等命令;另外還有兩種常用模式:插入模式和底行模式。

開始進入的一般都是普通模式,按如下鍵將進入插入模式:
1. a 在游標所在位置下一個字元開始輸入
2. A 在游標所在行尾開始輸入
2. i 在游標所在位置開始輸入
4. I 在游標所在行首開始輸入
5. o 在游標所在行下新增一行,並在新增行行首開始輸入
6. O 在游標所在行上新增一行,並在新增行行首開始輸入

進入插入模式後,底部會出現-- 插入 --字樣;這時就可以在游標位置進行輸入了。從插入模式退回到普通模式按ESC鍵。

在普通模式按如下鍵將進入底行模式:
1. : 執行命令
2. / 正向搜尋
3. ? 反向搜尋

從底行模式退回到普通模式需按兩次ESC鍵

底行模式執行:q(quit)表示退出編輯器,如果對檔案內容進行過更改,需要執行:wq(write quit)來儲存退出;如果不儲存退出則需要執行:q!強制退出;強制儲存退出為:wq!。

linux基礎命令——文字編輯vimlinux基礎命令——文字編輯vim

下面列出一些在普通模式下可以執行的命令及它們的作用:

文字本修改:

1. dd  剪下游標所在位置的整行(儲存在臨時緩衝區)
2. ndd n為數字,表示從當前行開始,從上到下剪下n行
3. p   將緩衝區中的內容放到當前行之下
4. np  n是數字,相當於執行n次p命令
5. P   將緩衝區中的內容放到當前行之上
6. y   從游標處開始複製
6. yy  複製當前行(儲存在臨時緩衝區)
7. nyy n為數字,表示從當前行開始,從上到下複製n行
8. r   替換游標所在位置的一個字元
9. R   從游標位置開始替換,並進入文字輸入模式(ESC退出)
10. u   撤銷上一次操作
11. ZZ  儲存退出
12. 移動游標:
13. h或左箭頭鍵 游標向左移動一格
14. l或右箭頭鍵 游標向右移動一格
15. j或下箭頭鍵 游標向下移動一格
16. k或上箭頭鍵 游標向上移動一格
17. 0 游標移動到當前行開頭
18. ^ 游標移動到當前行非空白字元(如空格、tab鍵等)的開頭
19. $ 游標移動到當前行結尾
20. g_ 游標移動到當前行非空白字元的結尾
21. w  游標移動到下一個單詞的開頭
22. e  游標移動到下一個單詞的結尾
23. *  匹配游標所在單詞,移動到下一個相同的單詞
24. #  匹配游標所在單詞,移動到上一個相同的單詞
25. f{ 游標移動到當前行的下一個字元{處,{可以換成其他字元
26. F} 游標移動到當前行的上一個字元}處
27. t, 游標移動到當前行的下一個逗號之前一個字元處
28. T, 游標移動到當前行的上一個逗號之後一個字元處
29. %  移動到成對括號的另一半括號處,包括() {} [].需要先將游標移動到括號上。
30. gg 游標移動到檔案第一行行首
31. G  游標移動到檔案最後一行行首
32. Enter鍵 游標移動到下一行行首

這裡只列出一部分,初學者也許會覺得太多,記不住。其實只要記住其中幾個,就完全可以使用了;其他的作用大多是使你的操作更簡便快捷。

vim中的各種命令,大多可以組合使用:

比如要刪除游標當前所在位置一直到行尾,可以執行d$;

比如要在當前位置插入50個‘word’,只需執行50iword ESC按完ESC鍵之後這50個單詞就被插入了;

比如要貼上被複制的內容,但希望貼上5次,則執行5p;

比如要再次執行上一次命令5次,則執行5.;

熟練使用這些命令將極大提高編寫檔案的速度。

在插入模式下(普通模式按a、i、o等),輸入一個單詞的開頭,然後按CTRL-P或CTRL-N就會自動補齊。

底行模式共三個開始字元(:、/、?),其中/和?用來匹配模式搜尋:

如搜尋檔案內字串 :

/centos

輸入這個字串之後按回車,vim就會將所有匹配的字串高亮顯示,按下n鍵,游標就會跳到下一個匹配字串處,按N鍵,游標就會跳到上一個匹配處。(想想man查詢)

使用?和/的作用相同,不過是方向相反。

:可以執行許多命令,如前面介紹過的儲存退出命令:wq。

下面介紹部分底行模式命令:
1 :set nu   顯示行號
2 :set nonu 隱藏行號
3 :r file   讀取檔案file內容並寫入當前編輯的檔案中,內容從游標當前位置下一行開始插入。
4 :w file   將當前編輯的內容寫入一個新檔案file中。
5 :s /pattern/string/ 將匹配pattern的字串替換成string
6 :x        作用和:wq相同,儲存並退出。
7 :! command 暫時離開vim並執行shell命令command。
8 :help     檢視幫助
9 :.=       顯示當前行號
10 :=        顯示總行數
11 :n        移動游標到第n行行首
這些命令也可以組合如執行shell命令並將結果寫入當前行的下一行:
 r!ls -l
還能組合其他模式下的命令如替換當前行所有匹配模式的字串:
s/pattern/string/g # g表示全域性
如替換本檔案中所有匹配模式的字串:
%s/pattern/string/g # %表示所有行
如替換指定行的匹配字串:
n,ms/pattern/string/g

這裡n和m都是數字,代表行號。可以用點號.代表當前行

如刪除當前行到第五行的內容:
.,5d

噹噹前行處於第五行以下時,會有反向刪除的提示。

使用/pattern和:s/pattern/string時,pattern是一個正規表示式,用來匹配一個字串的模式。

正規表示式和之前介紹的萬用字元(基礎命令介紹二)有一些相似的地方,但要注意區分兩者的不同。

萬用字元主要是用於對檔名的匹配,正規表示式不僅可以用於匹配檔名,事實上,它可以進行任何字串的匹配。它要比萬用字元更通用,大多數程式語言和一些工具中(如vim、grep、awk、sed)都有對正規表示式的直接支援。

下面介紹一部分將要用到的正規表示式的概念和用法:
匹配位置:
^ 表示行開頭
$ 表示行結尾
< 表示單詞開頭
> 表示單詞結尾
匹配字元:
. 表示匹配任意單個字元(相當於萬用字元中的?)
[...] 表示匹配括號內任意單個字元
[^...] 表示匹配任意一個非列出字元 #參照萬用字元描述
/a    匹配英文字元,等同於[a-zA-Z]或[[:alpha:]]。
/A    匹配非英文字元,等同於[^a-zA-Z]。
/d    匹配數字,等同於[0-9]或[[:digit:]]。
/D    匹配非數字,等同於[^0-9]。
/x    匹配十六進位制數字,等同於[0-9A-Fa-f]或[[:xdigit:]]。
/X    匹配非十六進位制數字,等同於[^0-9A-Fa-f]。
/w    匹配單詞,等同於[0-9A-Za-z_]。
/W    匹配非單詞,等同於[^0-9A-Za-z_]。
/t    匹配TAB字元。
/s    匹配空白字元,等同於[ /t]或[[:blank:]]。
/S    匹配非空白字元,等同於[^ /t]。
/u    匹配大寫字母,等同於[A-Z]或[[:upper:]]。
/U    匹配非大寫字母。
/n    匹配換行
/r    匹配回車
(...) 匹配並捕獲,用/1 /2 /3 ...來引用被捕獲的字串。
|     表示邏輯或
匹配數量:
* 表示匹配前一個字元零到任意多次,相當於{0,}。
+ 表示匹配前一個字元一到任意多次,相當於{1,}。
? 表示匹配前一個字元零到一次,相當於{0,1}。#注意和萬用字元?的區別
{n,m} 表示匹配前一個字元n到m次。

在使用正規表示式時,有時需要在特殊字元之前加上跳脫字元"/"來使特殊字元表示它的字面意思而不是它的特殊意義,在特定的工具中使用正則時,也需要這樣做來避免特殊字元被工具本身解釋。

vim在使用如下正規表示式時需要將特殊字元轉義:/<.../>、/{n,m}、/(.../)、/?、/+、/|下面結合正則舉例說明vim中模式匹配及部分命令用法

匹配字串world並使游標停留在匹配行後第三行行首:
/world/+3
將第三行到第八行行首新增註釋符號//:
3,8s/^//////
注意這裡的行首符^和轉義符'/'的用法:
%g/^/sxyz/normal dd

此命令作用是全域性匹配以空白後接xyz開頭的行,並執行普通模式下的命令dd

如匹配6個以上的小寫字母: 
//a/{6,}
如交換冒號:兩側的字串:
s//(.*/):/(.*/)//2:/1/ #注意這裡是如何引用之前匹配的分組的
如將所有tag、tog和tug分別改為hat、hot和hut
%s/t/([aou]/)g/h/1t/g
如匹配hello或world兩個單詞:
//<hello/>/|/<world/>

這裡只列出部分vim用到的正規表示式,關於正則的更多內容,以後的文章中還會有描述和舉例。

vim編輯器是很強大的,這裡只描述了部分初級使用方法。vim還能使用檢視模式,編輯多文字,設定鍵盤對映,多剪貼簿,錄製宏,使用外掛等等。完全可以用vim作為IDE來使用。但相對來說,vim的學習曲線比較陡峭,不同的應用場景,需要記憶的命令和方法數量也是完全不同的。建議在學習中,每次只熟悉幾個命令,一段時間後,就能流暢快捷的編輯文字了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2939691/,如需轉載,請註明出處,否則將追究法律責任。

相關文章