jas0nhuang

Vim - 02 - 九條好漢在「一般」

使用 Vim 的時候應該儘量保持在「一般模式」中,插入完應該回到一般模式編修,輸入指令後也會自動回到一般模式,而一般模式裡可以使用的許多指令也是也是 Vim 為什麼到今天還如此強大的原因。
這一次帶大家一窺 Vim「一般模式」奧妙的冰山一角!

動如脫免

上一回教大家在一般模式中用 h j k l 龜速蠕動,但是在速度就是力量的時代,還在慢慢一格一格的爬行那是連高手的車尾燈都看不到的。
先從一個字元進步到一個單字吧:

w:向前/右移動一個單字
b:向後/左移動一個單字

注意!這邊所說的「單字」是指「英文單字」就是每個單字之間有一個空格或標點符號的「單字」,使用 w b 在中文文章裡移動比較像是在斷句間移動,請大家自已找個中文文檔實驗一下。

再從一個單字進步到一行:

0:移動到行首
$:移動到行尾
^:移動到行首第一個非空白字元

在頁面「中」移動:

H:移至本頁首行
M:移至本頁中間行
L:移至本頁最末行

在頁面「之間」移動
換一頁:

Ctrl+F:下一頁
Ctrl+B:下一頁

換半頁:

Ctrl+D:往下半頁
Ctrl+U:往上半頁

其實看到這邊大家應該有稍稍感覺到一件事情,就是VIM很多指令都是可以「念」出來的,像上面這幾個 Ctrl+D(own)、Ctrl+U(p)、M(iddle)、H(ight)、L(ow)、w(ord)、b(ack)……等等,還有像是上一回提到的i(nsert)、:q(uit)、w(rite)……等等,就跟很多 Unix 指令可以被念出來一樣,所以在一週學會 Vim 影片中,講者也提到,學 Vim 就是要把指令「念」出來,很多時候只要一念出來就知道是幹啥用的指令了。

另外兩個有趣的部落格可以參考:

  1. Learn to speak vim,學會「說」Vim,這個部落格還有很多關於 Vim 的文章,很值得去看看。
  2. Vim as Language,Vim 做為一種語言,同樣有一系列關於 Vim 的文章,同樣值得去看看。

編輯

其實新手知道怎麼進入插入模式、怎麼回到一般模式、怎樣存檔、怎樣退出 Vim 好像也就可以順利的完成文件輸入、編輯的工作,但是大概還不會有那種「Vim 好強好厲害」的感覺,很重要的一個原因就是不知道怎麼在一般模式中編修文件。

新手的最大特色就是,只會在插入模式中編輯文件,但是其實插入模式顧名思意,就是讓人「插入」用的,能夠不要拿來做別的事就不要拿來做別的事,所以文件編輯、在文檔中移動都應該在一般模式中完成:
例如很常用到的剪下、複製、貼上

x:剪下當前光標上之字符
dw:剪下光標處至那個單字的結尾
d$:剪下光標處至行末

yy:複製光標所在的那一行
y0:複製光標處到行首

(剪下、複製的指令都可以搭配很多選擇指令,這可以另外寫一篇文章了……)

p:將剪下或複製下來的文字貼上

還有復原與取消復原

u:復原
ctrl+r:取消復原

插入的七加一種方法

從一般模式進入插入模式當然不會只有最基本的 i,下面先介紹五虎將出場:

I:從行首第一個非空白字元處開始輸入
a:從所在字元後開始輸入
A:從所在行尾開始輸入
o:在此行下方開啟新行並開始輸入
O:在此行上方開啟新行並開始輸入

除了以上五虎之外,還有 sScC 這幾個指令可以進入插入模式,因為實在比較少用到,以後再慢慢學就好了。
這些功能可不可以用 i 代替,當然可以,像是 A 可以先打 $ 移動到行尾再輸入 a 開始打字;o 可以先 $ 移到行尾, a 進入插入模式,再按Enter開始在下一行輸入,但是這些「替代方按」都要多打一、兩個指令,這零點零零一毫秒怎麼可以浪費掉阿!

現在 Vim 應該用起來不會卡卡了,但是它的功力還只發揮不到 1 趴,搜尋、取代、環境美化、分割視窗、搭配寫程式用的外掛…… Vim 這個坑真的很大。