[Linux實(shí)用命令]-2-Vim文本編輯器常用命令

引言

這篇文章主要介紹Linux中Vim文本編輯器的使用方法,Vim編輯器是在Vi編輯器之后被開發(fā)出來的,Vi和Vim的一些基礎(chǔ)命令都大同小異,它們默認(rèn)被當(dāng)前大多數(shù)的Linux發(fā)行版所安裝(默認(rèn)安裝Vi的居多,Vim可能需要手動(dòng)安裝);本文使用Vim編輯器舉例,方法同樣適用于Vi編輯器。

文章目錄

  • 0×1.Vim編輯器輸入模式介紹
  • 0×2.Vim編輯器命令模式常用命令
  •      a.控制光標(biāo)的移動(dòng)
    
  •      b.刪除文字操作
    
  •      c.復(fù)制和粘貼操作
    
  •      d.字符替換操作
    
  • 0×3.Vim編輯器底行模式下常用命令
  • 0×4.Vim編輯器可視化模式(Visual Mode)常用命令

0×1.Vim編輯器輸入模式介紹

在介紹Vim的幾種模式之前,先簡(jiǎn)單的介紹一下Vi和Vim:

Vim編輯器是所有Unix及Linux系統(tǒng)下最基本的文本編輯器,有點(diǎn)類似Windows下的記事本程序(Notepad.exe),但Vim編輯器比Windows下的記事本的功能強(qiáng)大很多。

Vim編輯器有四種常用模式,分別是命令模式、編輯模式、底行模式和可視化模式(Visual Mode)請(qǐng)看下面的實(shí)例:

#部分Linux發(fā)行版可能需要先安裝,例如Ubuntu可以使用下面的命令先安裝vim編輯
qing@qingsword.com:~$ sudo apt-get install vim
 
#使用vim命令后面自定義一個(gè)文件名,可以創(chuàng)建一個(gè)新的文本文件,并且進(jìn)入這個(gè)文本文件的命令模式下。
qing@qingsword.com:~$ vim testfile
 
#新創(chuàng)建文件或者打開一個(gè)存在的文件,默認(rèn)進(jìn)入的是命令模式,命令模式是不能輸入和編輯文本的,只能識(shí)別鍵盤的字母命令,在命令模式下有三種方式可以進(jìn)入編輯模式
#按i 當(dāng)前光標(biāo)位置進(jìn)入編輯模式,
#按a 當(dāng)前光標(biāo)退一格進(jìn)入編輯模式,
#按o 另起一行進(jìn)入編輯模式。
~
"testfile" [New File]
 
#按i進(jìn)入編輯模式后就能輸入和編輯文本了,隨便輸入下面幾行
Hello!
Welcome to My Website:
QingSword.com
 
sentence 12345
~
-- INSERT -- #進(jìn)入編輯模式后下面會(huì)顯示"INSERT",如果安裝了中文環(huán)境就是"插入"
 
#輸入完成后按"esc"鍵退出編輯模式,回到命令模式,此時(shí)文件還沒有保存,如果想保存剛才的輸入,可以在命令模式下輸入":"(英文輸入法下的說明號(hào)),輸入:就進(jìn)入了"底行模式",":"后面可以輸入底行模式所支持的命令。
 
Hello!
Welcome to My Website:
QingSword.com
 
sentence 12345
~
:w otherfile    #會(huì)將文件另存為"otherfile"
:q      #退出而不保存修
:q!     #強(qiáng)行退出而不保存修改(未修改的文件可以直接:q,而修改過不想保存修改的必須強(qiáng)制:q!)
:wq     #退出保存修改 
#這里我使用":wq"退出保存修改,查看一下剛才的輸入被保存到文件中了
qing@qingsword.com:~$ more testfile
Hello!
Welcome to My Website:
QingSword.com
 
sentence 12345
 
#在Vim的命令模式下進(jìn)入可視化模式的方法有三種:
#輸入v進(jìn)入字符可視化模式,使用光標(biāo)選擇是以字符為單位的
#輸入V(大寫)進(jìn)入行可視化模式,使用光標(biāo)選擇是以行為單位的
#使用"CRTL+v"組合鍵,進(jìn)入塊可視化模式,可以使用光標(biāo)選擇一個(gè)矩形區(qū)域。
#可視化模式的使用方法將在本文的第4小節(jié)中詳細(xì)說明

很多朋友初次使用Vim時(shí),進(jìn)入了命令模式,嘗試改動(dòng)文本的時(shí)候發(fā)現(xiàn)無法選擇,也無法輸入,頓時(shí)覺得Vim亂七八糟各種不好用,其實(shí)是因?yàn)椴焕斫馍厦嫠f的幾種模式,當(dāng)使用熟練后就會(huì)發(fā)現(xiàn),這種設(shè)計(jì)比鼠標(biāo)編輯文本的效率要高很多。

Vim的四種輸入模式介紹完畢,下面看Vim的命令模式下都有哪些常用的命令。

0×2.Vim編輯器命令模式常用命令

Vim的命令模式下是不能使用退格鍵或鼠標(biāo)來編輯文本的,但Vim提供了各種復(fù)雜的命令用于在命令模式下編輯文本。

a.控制光標(biāo)的移動(dòng)

命令行模式下鍵盤上的hjkl這四個(gè)鍵和鍵盤上箭頭鍵的對(duì)應(yīng)關(guān)系如下,使用hjkl或者鍵盤上的箭頭按鍵的效果是一樣的:

h j k l
← ↓ ↑ →

使用下面的組合鍵可以快速移動(dòng)光標(biāo):

[ctrl]+[b] 向上移動(dòng)一頁 backward;
[ctrl]+[f] 向下移動(dòng)一頁 forward;
[ctrl]+[u] 向上移動(dòng)半頁 up;
[ctrl]+[d] 向上移動(dòng)半頁 down;
[g] (小寫g)按兩下回到文章開頭;
[G] (大寫G)按一下到文章末尾;
[0] 回到光標(biāo)行行首;
[$] 到光標(biāo)行行末;
[w] 光標(biāo)移動(dòng)到下一字第一個(gè)字母;
[e] 到下一字尾字母;
[b] 到前一字首字母;
[#l] 向后移動(dòng)#位置(如果到達(dá)行末則停留),例如:3l 光標(biāo)向后移動(dòng)3位;

上面這些組合鍵中,個(gè)人覺得比較實(shí)用的幾個(gè)按鍵是翻頁,到文章頂部或底部,以及去往行首和行末。

b.刪除文字操作

使用下面這些按鍵或按鍵組合可以快速刪除一段或單個(gè)字符:

[x] 刪除光標(biāo)所在位置的那個(gè)字符;
[#x] 包括光標(biāo)位置的字符向后刪除#個(gè);比如3x,刪除3個(gè)字符;
[X] 向前刪除一個(gè)字符(光標(biāo)所在位置前面那個(gè)字符被刪除);
[#X] 向前刪除#個(gè)字符,同上;
[cw] 刪除從光標(biāo)位置到詞尾的全部字符,刪除后直接進(jìn)入編輯模式。比如:"test vi application"光標(biāo)在e上,輸入cw將刪除"est";
[c#w] 從光標(biāo)位置開始,向后刪除#個(gè)單詞,刪除后直接進(jìn)入編輯模式;比如"test vi application"光標(biāo)在e上,輸入c2w將刪除"est vi";
[dd] 刪除光標(biāo)所在行;
[#dd] 向下刪除#行(包括光標(biāo)所在行);比如,輸入"3dd",就是包括光標(biāo)所在行向下刪除3行;
[u] 回退操作,退回上一步,遇到誤操作時(shí),這個(gè)按鍵非常有用,它可以逐步退回;

c.復(fù)制和粘貼操作

使用下面這些按鍵或按鍵組合可以快速?gòu)?fù)制粘貼一段或單個(gè)字符:

[yw] 復(fù)制光標(biāo)所在位置到單詞結(jié)尾的部分。比如:"test vi application"光標(biāo)在e上,則復(fù)制"est";
[#yw] 復(fù)制從光標(biāo)位置,往后的#個(gè)字;比如:"test vi application This is free software"光標(biāo)在e上,輸入"3yw"則復(fù)制"est vi application";
[yy] 復(fù)制光標(biāo)所在行;
[#yy] 包括光標(biāo)所在行向下復(fù)制#行,比如:"4yy"則向下復(fù)制4行;
[p] 粘貼,如果復(fù)制的是一行或幾行,按下p鍵的時(shí)候,會(huì)向下另起一新行粘貼剛才復(fù)制的這幾行;如果復(fù)制的是一個(gè)單詞或幾個(gè)單詞,按下p鍵的時(shí)候,會(huì)在當(dāng)前光標(biāo)位置后面粘貼出剛才復(fù)制的內(nèi)容;

d.字符替換操作

[r] 替換單個(gè)字符。如:"test vi application"光標(biāo)在e上,按一下r,然后輸入s,"test"就變成了"tsst";
[R] 替換多個(gè)字符。按下這個(gè)鍵后vi界面底部會(huì)顯示"REPLACE",此時(shí)輸入的字符會(huì)直接覆蓋后面的字符,直到按下esc鍵;

[ctrl]+[g] 在文本底部顯示文件名、是否修改、文件是否為只讀、有多少行、當(dāng)前光標(biāo)所在位置占%多少,顯示如下:
"filename" [Modified][readonly] line 30 of 187 16% col 15

0×3.Vim編輯器底行模式下常用命令

末行模式常用命令(:)

:set nu 顯示行號(hào);
:4 跳到第四行;
:/word 查找某字(回車后按n向下遞歸查找,按N向上遞歸查找),比如查找"is",命令就是":/is";
:10,s/is/was/g 文字替換操作,從當(dāng)前文件的第10行開始搜索(s),到最后一行(/g),將"is"替換成"was";
:%s/is/was/g 如果是從第一行到最后一行,直接使用%s即可,這一句的意思是從第一行到行末,將"is"替換成"was";

0×4.Vim編輯器可視化模式(Visual Mode)常用命令

Vim編輯器的可視化模式(Visual Mode)允許使用光標(biāo)選擇一個(gè)高亮區(qū)域,然后對(duì)這個(gè)區(qū)域中的內(nèi)容進(jìn)行編輯操作。

假設(shè)我用vim打開一個(gè)文件,里面的內(nèi)容如下,光標(biāo)在紅色1的位置,現(xiàn)在可以通過按下"Ctrl+v"進(jìn)入可視化編輯模式的塊模式:

1 file edit view scrollback bookmarks
2 file edit view scrollback bookmarks
3 file edit view scrollback bookmarks
4 file edit view scrollback bookmarks

復(fù)制、粘貼、刪除塊區(qū)域?qū)嵗?/p>

將光標(biāo)向下移動(dòng)兩格,再向右移動(dòng)到view的末尾,會(huì)選一個(gè)矩形區(qū)域。使用鍵盤上的小寫"d",可以刪除這個(gè)選擇區(qū)域中的字符;使用小寫的"y"可以復(fù)制選中的內(nèi)容,然后可以使用"p"將剛才復(fù)制的矩形區(qū)域粘貼到光標(biāo)所在位置;

1 file edit view scrollback bookmarks
2 file edit view scrollback bookmarks
3 file edit view scrollback bookmarks
4 file edit view scrollback bookmarks

塊區(qū)域轉(zhuǎn)換大小寫實(shí)例:

選中一個(gè)塊區(qū)域,然后可以使用鍵盤上的"Shift+~(1前面那個(gè)鍵)"來將選擇的區(qū)域中的字符大小寫轉(zhuǎn)換;

1 FILE EDIT VIEW scrollback bookmarks
2 FILE EDIT VIEW scrollback bookmarks
3 FILE EDIT VIEW scrollback bookmarks
4 file edit view scrollback bookmarks

增加縮進(jìn)和減少縮進(jìn)實(shí)例:

將光標(biāo)移動(dòng)到你要增加縮進(jìn)的開頭一行,比如3,然后按"Ctrl+v",將光標(biāo)向下移動(dòng)到4的位置,之后按"Shift+>"就能增加縮進(jìn);使用相同的方法選中需要減少縮進(jìn)的行,按"Shift+<"來減少縮進(jìn);

1 FILE EDIT VIEW scrollback bookmarks
2 FILE EDIT VIEW scrollback bookmarks
3 FILE EDIT VIEW scrollback bookmarks
4 file edit view scrollback bookmarks

將選中區(qū)域使用rot13算法加密實(shí)例:

選中一個(gè)矩形區(qū)域,按鍵盤上的小寫"g"再輸入一個(gè)"?",選中的區(qū)域?qū)⒈皇褂胷ot13加密;解密的方法就是再對(duì)這個(gè)區(qū)域執(zhí)行一次加密;

1 svyr rqvg ivrj scrollback bookmarks
2 svyr rqvg ivrj scrollback bookmarks
3 svyr rqvg ivrj scrollback bookmarks
4 file edit view scrollback bookmarks

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容