vim入門

相對于IDE,vim的學(xué)習成本較高,但一旦熟悉vim后,開發(fā)效率是非常高的。vim的命令非常多,但在工作中常用的卻比較少,本著實用主義,參考Learn Vim Progressively,整理最有用的命令,也便自己以后查閱。下面涉及到ctrl鍵的組合操作,如ctrlr組合,用<C-r>表示

1. 模式

vim有三種模式:普通(normal)模式、插入(insert)模式和命令(command)模式。剛進入vim時默認進入普通模式,下面看下各模式的轉(zhuǎn)換:

普通模式下鍵入i進行插入模式
普通模式下鍵入:進入命令模式
ESC退出插入模式和命令模式

vim的文檔非常全,在命令模式下,我們可以鍵入hhelp打開幫忙文檔,也可以直接鍵入help <command>,查看指定命令的幫助文檔,如help i。

在普通模式下通過hjkl(左下上右)移動光標,插入模式下可以鍵入任意字符,命令模式下可以輸入命令,回車鍵執(zhí)行命令。如何退出呢,進入命令模式,鍵入q就可以退出了,如果有更新會提示你保存,鍵入w進行保存。也可以同時鍵入wq保存退出。

2. 移動

上面講了hjkl可以在普通模式下對光標進行移動。如果只支持光標按字符移動,那就太沒效率了,下面這些命令可以快速將光標移動到目標位置。

先來看看光標在當前行中的移動:

0:數(shù)字零,將光標移動到行首
^:將光標移動到當前行第一個不是blank的位置,所謂blank,是指空格、tab、換行、回車等不可見字符)
$:將光標移動到行尾
g_:將光標移動到當前行最后一個不是blank的位置
gg:將光標移動第一行
G:將光標移動第最后一行
NG:N是行號,即將光標移動了第N行,如3G,表示將光標移動到第三行
w/W:移動到下一個單詞的開頭
e/E:移動到下一個單詞的結(jié)尾
b/B:移動到上一個單詞的開頭

其中單詞間的移動大小寫的區(qū)別是單詞劃分規(guī)則不同,小寫w、e、b的單詞是由字母、數(shù)據(jù)加下劃線組成的單詞,而大寫W、E、B的單詞是由字符組成,已空格區(qū)分。如下所示:

再來看下更強大的一些移動操作:

%:匹配括號移動,包括 `(, {, [ `
f/F:如`fa`,移動到下一個為a的字符處,也可以是fs,移動到下一個為s的字符,大寫F表示反向移動,也可以使用3fa,表示移動到第三個為a的字符處
t/T:如`t;`,移動到分號`;`前的一個字符,大寫T表示反向移動,也可以使用`3t;`,表示移動到第三個分號`;`前的一個字符

下圖更直觀展示各種移動操作:

3. 常用操作

x:刪除光標所處字符,也可以在前面指定數(shù)字N,表示刪除從當前光標開始后的N個字符,如`4N`,刪除光標后的4個字符(包含光標所處字符)
dd:刪除當前光標所處行,也可以在前面指定數(shù)字N
yy或Y:復(fù)制當前行,也可以在前面指定數(shù)據(jù)N
p:粘貼剪切板
a:在光標之后插入
o:在當前行后插入一個新行
O:在當前行前插入一個新行
cw:替換從光標所處位置到單詞結(jié)尾的字符
u:撤銷
<C-r>:反撤銷
<C-n>或<C-p>:自動提示
.:重復(fù)上一個命令
=:將光標所處行及之后的行自動縮進,通用使用`gg=`,對整個文件進行自動縮進。
<,>:左右縮進

另外說兩個時常用的比較多的命令como,需要在命令模塊下執(zhí)行,
如將1到10的行拷貝插入到100行:

:1,10 co 100

又如將1到10行剪切插入到100行:

:1,10 mo 100

4. 查找替換

/pattern:搜索 pattern 的字符串,如果搜索出多個匹配,可按n鍵到下一個,按N鍵到上一個
*和#:匹配光標當前所在的單詞,移動光標到下一個(或上一個)匹配單詞
:%s/this/that/g:全局將`this`替換為`that`

5. 可視化選擇

在普通模式下鍵入vV后,vim左下角會出現(xiàn)-- 可視 --狀態(tài)提示,此時移動光標可以進行行選擇或?qū)π兄械木植孔址x擇,如:

v$U:表示將光標所處的行全部轉(zhuǎn)化為大寫,分解如下:
v -> 進入可視化選擇
$ -> 將光標移動到行尾,即選擇了當前行
U -> 將選擇的內(nèi)容轉(zhuǎn)化為大寫

也可以使用<C-v>進行塊選擇,此時vim左下角會出現(xiàn)-- 可視 塊 --,來看兩個常用操作,下面是對指定行進行注釋:

<C-v>GI# ESC:將當前行到最后一行的進行注釋,命令分解如下:
<C-v> -> 進行可視塊
G ->將光標跳轉(zhuǎn)到最后一行
I -> 進入可視化編輯
# -> 在行前添加`# `
ESC -> 退出可視化及可視化編輯

又如在每行后添加注釋:

<C-v>G$A# your comment ESC:從當前行到最后一行的所有行末加上`# your comment`,命令分解如下:
<C-v> -> 進行可視塊
G -> 將光標跳轉(zhuǎn)到最后一行
$ -> 將光標跳轉(zhuǎn)到行末
A -> 在行末進行可視化編輯
# your comment -> 添加注釋內(nèi)容
ESC -> 退出可視化及可視化編輯

6. 分屏與多文件操作

常用分屏命令,以下命令需要在命令模式下執(zhí)行:

sp:水平分屏
vs:垂直分屏
<C-w><dir>:dir是方向,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏
<C-w>[N]+:增加當前分屏間的尺寸,N可選,表示增加的尺寸個數(shù)
<C-w>[N]-:減少當前分屏的尺寸,N可選,表示減少的尺寸個數(shù)
<C-w>=:均分分屏
<C-w>|:最大化當前分屏

我看代碼時,經(jīng)常會打開多個文件,vim支持打開多個文件以及在各個文件之間跳轉(zhuǎn)。在命令模式下,使用e命令打開文件:

:e file.txt

使用ls命令查看當前打開的文件,如:

命令模式下,使用bn打開下一個文件,使用bp打開上一個文件,也可以使用buffer 文件序號打開指定序號的文件,如下圖中打開序號為3的文件3.txt

:buffer 3

7. 錄制宏

對于vim的宏來講,可以簡單理解為是將一串命令存儲到寄存器中。用下面例子說明宏的使用方法,在數(shù)據(jù)庫我們經(jīng)常需要進行分表處理中,通常會寫下面這樣的SQL命令:

CREATE TABLE LIKE your_table_0;

假設(shè)我們要分64張表,如果一個個的粘貼復(fù)制,再修改表象,就太麻煩了,我們可以使用宏來幫我們完成這個任務(wù),將光標移到上面行中,執(zhí)行如下命令:

qaYp$T_<C-a>q

上面命令是什么意思,其它比較簡單,分解如下:

qa -> 開始錄制宏,并存到寄存器a中
Yp -> 復(fù)制當面光桿所在行
$ -> 將光桿移動到行末尾
T_ -> 向后移動光桿直到出現(xiàn)_為止(即將光標移動到數(shù)字上)
<C-a> -> ctrl + a對光標所處的數(shù)字+1
q -> 停止錄制宏

執(zhí)行完上面命令后,實際上已經(jīng)完成了創(chuàng)建your_table_1表的SQL語句,此時,只需要將光標放到這條sql命令所處行中,利用@a可以將寄存器a中的宏進行重放,同時可以在前面指定重放次數(shù),如執(zhí)行以下命令創(chuàng)建后續(xù)62張表:

62@a

這便完成了對your_table進行64分表的SQL語句,合理利用錄制宏命令,可以極大提高效率。

小結(jié)

剛開始學(xué)習vim有點痛苦,因為這些命令更多的是要先記住,最好的辦法是不斷的實踐,熟能生巧,最終你會喜歡上vim。

參考

[1] http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively

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

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

  • 公司新員工學(xué)習有用到,Vim官網(wǎng)的手冊又太大而全,而網(wǎng)上各方資料要么不全面,要么不夠基礎(chǔ)。在網(wǎng)上搜集各方資料,按照...
    甲魚閱讀 163,470評論 43 685
  • 介紹Vim三種操作模式和文本編輯命令。Vim編輯模式插入字符,行尾、行首插入,刪除一個字符和刪除整行命令,Vim復(fù)...
    特特不尋芳閱讀 979評論 0 3
  • Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎(chǔ)上改進和增加了很多特性。[1]VIM是...
    QoioQ閱讀 4,160評論 0 65
  • 剛?cè)腴T Vim,網(wǎng)上找了很多資料,有的太復(fù)雜不適合我這樣的新手,有的不全,自己動手整理一份。參考了一些資料,備注鏈...
    波段頂?shù)?/span>閱讀 6,031評論 0 11
  • 當你突然理解自由的意義時,你就不再想和一個人一輩子的綁在一起。 會怕失去,怕猜疑,怕不順心,因為人最后愛的是自己。
    是煙火是夜深處的光閱讀 258評論 0 0

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