linux基礎命令介紹四:文本編輯 vim

本文介紹vim(版本7.4)的通常用法git

vim是功能強大的文本編輯器,是vi的加強版。正則表達式

vim [options] [file ..]

使用vim編輯一個文件的最經常使用命令就是:shell

vim file

其中file能夠是一個新文件,也能夠是原有文件。這樣的命令執行後將打開編輯器,顯示文件file的內容。如圖所示:
圖片描述編程

若是是一個新文件,底部左邊會顯示"file" [新文件]的字樣,右邊顯示0,0-1表示當前光標所在行數和字符數。若是打開的是一個老文件,底部左邊顯示"file" 3L, 66C字樣,表示文件名,當前光標所處行號,文件總字節數。文件中沒有字符的地方會以字符~開頭。
如今還不能進行編輯,vim編輯文件有幾種模式,當前所處模式是普通模式,能夠移動光標、執行復制粘貼等命令;另外還有兩種經常使用模式:插入模式和底行模式。
開始進入的通常都是普通模式,按以下鍵將進入插入模式:vim

a 在光標所在位置下一個字符開始輸入
A 在光標所在行尾開始輸入
i 在光標所在位置開始輸入
I 在光標所在行首開始輸入
o 在光標所在行下新增一行,並在新增行行首開始輸入
O 在光標所在行上新增一行,並在新增行行首開始輸入

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

在普通模式按以下鍵將進入底行模式:centos

: 執行命令
/ 正向搜索
? 反向搜索

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

底行模式執行:q(quit)表示退出編輯器,若是對文件內容進行過更改,須要執行:wq(write quit)來保存退出;若是不保存退出則須要執行:q!強制退出;強制保存退出爲:wq!編輯器

下面列出一些在普通模式下能夠執行的命令及它們的做用:工具

文本修改:
.   重複上一個命令
x   刪除光標位置的字符
d   從光標處開始剪切
dd  剪切光標所在位置的整行(保存在臨時緩衝區)
ndd n爲數字,表示從當前行開始,從上到下剪切n行
p   將緩衝區中的內容放到當前行之下
np  n是數字,至關於執行n次p命令
P   將緩衝區中的內容放到當前行之上
y   從光標處開始複製
yy  複製當前行(保存在臨時緩衝區)
nyy n爲數字,表示從當前行開始,從上到下複製n行
r   替換光標所在位置的一個字符
R   從光標位置開始替換,並進入文本輸入模式(ESC退出)
u   撤銷上一次操做
ZZ  保存退出
移動光標:
h或左箭頭鍵 光標向左移動一格
l或右箭頭鍵 光標向右移動一格
j或下箭頭鍵 光標向下移動一格
k或上箭頭鍵 光標向上移動一格
0 光標移動到當前行開頭
^ 光標移動到當前行非空白字符(如空格、tab鍵等)的開頭
$ 光標移動到當前行結尾
g_ 光標移動到當前行非空白字符的結尾
w  光標移動到下一個單詞的開頭
e  光標移動到下一個單詞的結尾
*  匹配光標所在單詞,移動到下一個相同的單詞
#  匹配光標所在單詞,移動到上一個相同的單詞
f{ 光標移動到當前行的下一個字符{處,{能夠換成其餘字符
F} 光標移動到當前行的上一個字符}處
t, 光標移動到當前行的下一個逗號以前一個字符處
T, 光標移動到當前行的上一個逗號以後一個字符處
%  移動到成對括號的另外一半括號處,包括() {} [].須要先將光標移動到括號上。
gg 光標移動到文件第一行行首
G  光標移動到文件最後一行行首
回車鍵 光標移動到下一行行首

這裏只列出一部分,初學者也許會以爲太多,記不住。其實只要記住其中幾個,就徹底可使用了;其餘的做用大可能是使你的操做更簡便快捷。

vim中的各類命令,大多能夠組合使用:
好比要刪除光標當前所在位置一直到行尾,能夠執行d$
好比要在當前位置插入50個‘word’,只需執行50iword ESC按完ESC鍵以後這50個單詞就被插入了;
好比要粘貼被複制的內容,但但願粘貼5次,則執行5p;
好比要再次執行上一次命令5次,則執行5.;
熟練使用這些命令將極大提升編寫文件的速度。

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

底行模式共三個開始字符(:/?),其中/?用來匹配模式搜索:
如搜索文件內字符串centos:

/centos

輸入這個字符串以後按回車,vim就會將全部匹配的字符串高亮顯示,按下n鍵,光標就會跳到下一個匹配字符串處,按N鍵,光標就會跳到上一個匹配處。(想一想man查詢)
使用?/的做用相同,不過是方向相反。

:能夠執行許多命令,如前面介紹過的保存退出命令:wq。下面介紹部分底行模式命令:

:set nu   顯示行號
:set nonu 隱藏行號
:r file   讀取文件file內容並寫入當前編輯的文件中,內容從光標當前位置下一行開始插入。
:w file   將當前編輯的內容寫入一個新文件file中。
:s /pattern/string/ 將匹配pattern的字符串替換成string
:x        做用和:wq相同,保存並退出。
:! command 暫時離開vim並執行shell命令command。
:help     查看幫助
:.=       顯示當前行號
:=        顯示總行數
: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的學習曲線比較陡峭,不一樣的應用場景,須要記憶的命令和方法數量也是徹底不一樣的。建議在學習中,每次只熟悉幾個命令,一段時間後,就能流暢快捷的編輯文本了。

相關文章
相關標籤/搜索