天天看點

vim編輯器基礎

vim簡介

  vim是從vi發展出來的一個文本編輯器,熟練使用會比普通編輯器更高效(全鍵盤操作),在程式員中被廣泛使用。使用指令與組合鍵來代替滑鼠與鍵盤,大大提高程式員和文字錄入員的速度和效率,并且vim有很多模式可以進行轉換,簡單介紹經常用的其中六種模式:

普通模式(Normal mode)

 在普通模式中,用的編輯器指令,比如移動光标,删除文本等等。這也是Vim啟動後的預設模式。這正好和許多新使用者期待的操作方式相反(大多數編輯器預設模式為插入模式)。

  vim強大的編輯能來自于其普通模式指令。普通模式指令往往需要一個操作符結尾。例如普通模式指令dd删除目前行,但是第一個"d"的後面可以跟另外的移動指令來代替第二個d,比如用移動到下一行的"j"鍵就可以删除目前行和下一行。另外還可以指定指令重複次數,2dd(重複dd兩次),和dj的效果是一樣的。在普通模式中,有很多方法可以進入插入模式。比較普通的方式是按a(append/追加)鍵或者i(insert/插入)鍵。

插入模式(Insert mode)

  在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新使用者希望文本編輯器編輯過程中一直保持這個模式。在插入模式中,可以按ESC鍵回到普通模式。

可視模式(Visual mode)

  這個模式與普通模式比較相似。但是移動指令會擴大高亮的文本區域。高亮區域可以是字元、行或者是一塊文本。當執行一個非移動指令時,指令會被執行到這塊高亮的區域上。Vim的"文本對象"也能和移動指令一樣用在這個模式中。

選擇模式(Select mode)

  這個模式和無模式編輯器的行為比較相似(Windows标準文本控件的方式)。這個模式中,可以用滑鼠或者光标鍵高亮選擇文本,不過輸入任何字元的話,Vim會用這個字元替換選擇的高亮文本塊,并且自動進入插入模式。

指令行模式(Command line mode)

  在指令行模式中可以輸入會被解釋成并執行的文本。例如執行指令(:鍵),搜尋(/和?鍵)或者過濾指令(!鍵)。在指令執行之後,Vim傳回到指令行模式之前的模式,通常是普通模式。

Ex模式(Ex mode)

  這和指令行模式比較相似,在使用:visual指令離開Ex模式前,可以一次執行多條指令。這其中我們常用到就是普通模式、插入模式和指令行模式。

檔案儲存

  進入指令行,輸入

:w

表示儲存,

:q

表示退出,也可以組合為

:wq

:q!

強制退出,

:x

也為儲存并退出。

  進入指令行模式後輸入

:e 檔案路徑

同樣可以打開相應檔案。

  

:w 檔案名或路徑 //儲存檔案并重命名,也可以儲存到某一路徑下

在普通模式下的光标移動

在該模式下使用方向鍵或者h,j,k,l鍵可以移動遊标,指令如下:

vim編輯器基礎

進入插入模式

不同的從普通模式進入插入模式的方法:

vim編輯器基礎

一般經常就是用i或a。

退出vim

以下為幾種退出方式:

vim編輯器基礎

普通模式下也可以用快捷鍵儲存并退出:

Shift+zz

删除文本

進入普通模式即可使用删除,不用進入指令行模式:

vim編輯器基礎

  在指令前面可以加數字,表示一次删除多個,如:

2dd

表示一次删除2行,

10x

表示連續删除10個字元,

daw

(delete a word)删除一個單詞,

d5w

表示删除5個單詞。

Vim重複指令

  

.

(小數點)表示重複上一個指令,比如在普通模式下使用

x

删除字元,之後可以按

.

就可以代替

x

來删除字元。

遊标的快速跳轉

行間跳轉:

  

nG:遊标移動到第n行(若沒有顯示行号,請先進入指令模式,輸入:set nu以顯示行号)

  

gg:遊标移動到第一行

  

G:到最後一行

  小技巧:你在完成一次跳轉後,可以使用

Ctrl+o

快速回到上一次(跳轉前)光标所在位置

行内跳轉(在行内按照單詞為機關進行跳轉):

vim編輯器基礎

複制粘貼和剪貼

普通模式中使用

y

複制:

  普通模式中,

yy

複制遊标所在的整行(3yy表示複制3行)

  普通模式中,

y^

複制至行首,或y0。不含光标所在處字元。

  普通模式中,

y$

複制至行尾。含光标所在處字元。

  普通模式中,

yw

複制一個單詞。

  普通模式中,

y2w

複制兩個單詞。

  普通模式中,

yG

複制至文本末。

  普通模式中,

y1G

複制至文本開頭

普通模式中使用

p

粘貼:

  普通模式中,

p(小寫)

代表粘貼至光标後(下)

  普通模式中,

P(大寫)

代表粘貼至光标前(上)

  前面介紹的删除行dd其實就是剪貼指令,你每次 dd 删除文檔内容後,便可以使用 p 來粘貼

交換上下行:

ddp //就是删除目前行後再粘貼

字元的替換和撤銷(Undo)操作

替換和Undo指令都是針對普通模式下的操作

vim編輯器基礎

快速縮進

縮進操作均在普通模式下有效

  

>> 向右縮進

  

<< 向左縮進

普通模式下輸入

:

進入指令行模式下對shiftwidth值進行設定可以控制縮進和回退的字元數。

  

:set shiftwidth? //查詢目前縮進值

  

:set shiftwidth=10 //縮進調整為10個字元

在指令行模式下

  

:ce //本行居中

  

:ri //本行靠右

  

:le //本行靠左

查找

快速查找:

  普通模式下輸入

/

然後鍵入需要查找的字元串按回車後就會進行查找。

/

功能相同,隻不過

是向上而

/

是向下查找。

  進入查找之後,輸入n 和 N 可以繼續查找。

n(小寫)

是查找下一個内容,

N(大寫)

查找上一個内容。

進階查找:

  普通模式下輸入

\*

尋找遊标所在處的單詞

  普通模式下輸入

\#

同上,但

\#

是向前(上)找,

\*

則是向後(下)找

  普通模式下輸入

g\*

\*

,但部分符合該單詞即可

  普通模式下輸入

g\#

\#

,但部分符合該單詞即可

  以上查找n,N 的繼續查找指令依然可以用

多檔案編輯

建立倆個檔案,預設進入1.txt檔案的編輯界面

  

vim 1.txt 2.txt

再進入指令行模式

  

:n //表示切換到下一個檔案也就是2.txt,如果1.txt未儲存則會提示

  

:n! //強制切換到下一個檔案,如果上一個檔案未儲存則丢失

  

:N //切換到上一個檔案

  

:N! //

進入vim後打開新檔案:

  指令行模式下輸入

:e 3.txt

打開新檔案3.txt

  指令行模式下輸入

:e#

回到前一個檔案

  指令行模式下輸入

:ls

可以列出以前編輯過的文檔

  指令行模式下輸入

:b 2.txt(或者編号)

可以直接進入檔案2.txt編輯

  指令行模式下輸入

:bd 2.txt(或者編号)

可以删除以前編輯過的清單中的檔案項目

恢複檔案

  如果因為斷電等原因造成文檔沒有儲存,可以采用恢複方式,vim -r進入文檔後,輸入

:ewcover 1.txt

來恢複

  

vim -r 1.txt

可視模式簡介

  在普通模式下輸入

v(小寫)

,進入字元選擇模式,就可以移動光标,光标走過的地方就會選取。再次按下v後就會取消選取。

  在普通模式下輸入

V(大寫)

,進入行選擇模式,按下V之後就會把整行選取,您可以上下移動光标選更多的行,同樣,再按一次

V

就可以取消選取。

  在普通模式下輸入

Ctrl+v(小寫)

,這是區域選擇模式,可以進行矩形區域選擇,再按一次

Ctrl+v

取消選取。

當執行一個非移動指令時,指令會被執行到這塊高亮的區域上,如:

  在可視模式下輸入 d 删除選取區域内容

  在可視模式下輸入y複制選取區域内容

視窗操作

  vim 可以在一個界面裡打開多個視窗進行編輯,這些編輯視窗稱為 vim 的視窗。可以使用在指令行模式下輸入

:new

打開一個新的 vim 視窗,如

  

vim 1.txt //建立一個文本

  指令行模式下輸入

:new

打開一個新的vim視窗

  指令行模式下輸入

:vsp 2.txt

打開新的橫向視窗來編輯2.txt

  指令行模式下輸入

:vsp 3.txt

打開新的橫向視窗來編輯3.txt

  可以使用

Ctrl+w

進行視窗間的跳轉

  分别在不同視窗的指令行模式下輸入

:q!

退出多視窗編輯

文檔加密

  

vim -x file1 //建立加密文檔

  建立時要輸入你的密碼 确認密碼 這樣在下一次打開時,vim就會要求你輸入密碼。

在vim中執行外部指令

在指令行模式中輸入

!

可以執行外部的shell指令,如:

  

:!ls

用于顯示目前目錄的内容

  

:!rm FILENAME

用于删除名為 FILENAME 的檔案

  

:w FILENAME

可将目前 VIM 中正在編輯的檔案另存為 FILENAME 檔案

功能設定

擷取目前的設定

  指令行模式下輸入

:set

或者

:se

顯示所有修改過的配置

  指令行模式下輸入

:set all

顯示所有的設定值

  指令行模式下輸入

:set option?

顯示option的設定值

  指令行模式下輸入:set nooption 取消目前設定值

set功能的說明

  指令行模式下輸入:set autoindent(ai) 設定自動縮進

  指令行模式下輸入

:set autowrite(aw)

設定自動存檔,預設未打開

  指令行模式下輸入

:set background=dark或light

,設定背景風格

  指令行模式下輸入

:set backup(bk)

設定自動備份,預設未打開

  指令行模式下輸入

: set cindent(cin)

設定C語言風格縮進

繼續閱讀