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鍵可以移動遊标,指令如下:

進入插入模式
不同的從普通模式進入插入模式的方法:
一般經常就是用i或a。
退出vim
以下為幾種退出方式:
普通模式下也可以用快捷鍵儲存并退出:
Shift+zz
删除文本
進入普通模式即可使用删除,不用進入指令行模式:
在指令前面可以加數字,表示一次删除多個,如:
2dd
表示一次删除2行,
10x
表示連續删除10個字元,
daw
(delete a word)删除一個單詞,
d5w
表示删除5個單詞。
Vim重複指令
.
(小數點)表示重複上一個指令,比如在普通模式下使用
x
删除字元,之後可以按
.
就可以代替
x
來删除字元。
遊标的快速跳轉
行間跳轉:
nG:遊标移動到第n行(若沒有顯示行号,請先進入指令模式,輸入:set nu以顯示行号)
gg:遊标移動到第一行
G:到最後一行
小技巧:你在完成一次跳轉後,可以使用
Ctrl+o
快速回到上一次(跳轉前)光标所在位置
行内跳轉(在行内按照單詞為機關進行跳轉):
複制粘貼和剪貼
普通模式中使用
y
複制:
普通模式中,
yy
複制遊标所在的整行(3yy表示複制3行)
普通模式中,
y^
複制至行首,或y0。不含光标所在處字元。
普通模式中,
y$
複制至行尾。含光标所在處字元。
普通模式中,
yw
複制一個單詞。
普通模式中,
y2w
複制兩個單詞。
普通模式中,
yG
複制至文本末。
普通模式中,
y1G
複制至文本開頭
普通模式中使用
p
粘貼:
普通模式中,
p(小寫)
代表粘貼至光标後(下)
普通模式中,
P(大寫)
代表粘貼至光标前(上)
前面介紹的删除行dd其實就是剪貼指令,你每次 dd 删除文檔内容後,便可以使用 p 來粘貼
交換上下行:
ddp //就是删除目前行後再粘貼
字元的替換和撤銷(Undo)操作
替換和Undo指令都是針對普通模式下的操作
快速縮進
縮進操作均在普通模式下有效
>> 向右縮進
<< 向左縮進
普通模式下輸入
:
進入指令行模式下對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語言風格縮進