轉載:http://www.cnblogs.com/nerxious/archive/2012/12/21/2827303.html
http://www.cnblogs.com/nerxious/archive/2012/12/21/2827774.html
http://www.cnblogs.com/nerxious/archive/2012/12/21/2828520.html
輕快的VIM(一):移動
斷斷續續的使用VIM也一年了,會的始終都是那麼幾個命令,效率極低
前幾個星期把Windows換成了Linux Mint,基本上也穩定了下來
就今晚,我已經下定決心開始新的VIM之旅,順便寫一系列的筆記和總結
還是那句話,我只是個新人,代碼也沒寫過多少行,但我一直在默默努力自學着
所以,還請老鳥們看看笑笑就行了,不要鄙視我,我很脆弱……
這是俺寫的《輕快的VIM系列》第一節,每一節都會不斷更新,加入更多技巧在裏面
VIM新手們加油,咱一起總結,一起努力練習……
基礎
字符移動
k 上移 k
h 左移 h l
l 右移 j
j 下移
你也可以使用鍵盤上的方向鍵來移動,但這麼做h j k l的存在就失去了意義
之所以使用h j k l來控制方向,其主要目的是讓你的手不離開鍵盤中心,從而提高效率
tips:在命令前加上數字代表命令執行次數,如:5k,表示上移5行
單詞移動
W w 移動到下一個單詞開頭 E e 移動到下一個單詞結尾 B b 倒退到上一個單詞開頭
需要注意的是,E會忽略標點符號,如:I‘m,e會當成兩個單詞,E則不會
同樣,在命令前加上數字代表執行次數,如:2w,表示往下移動2個單詞
開頭我也許會多說幾遍,因爲這個技巧很重要
整行移動
0 移動到行首 $ 移動到行末 + 移動到下一行開頭 - 移動到上一行開頭
這裏需要注意的是+ -和上面的j k有什麼不同之處
j k也是移動到上一行和下一行,但它們移動的是光標所在的位置
+ -不管你的光標在何處,總是移動到下一行或上一行的行首
進階
滾屏
看似比較多,但是可以根據鍵盤的位置來進行記憶,並且下面兩個也不常用
上面的滾屏都有一個共同點,就是會改變光標的位置,且屏幕也在改變
如果想讓光標維持在原來的位置實現滾屏請看下面
用z調整光標
z<Enter> 將光標所在行移動到屏幕頂端
z. 將光標所在行移動到屏幕中間
z- 將光標所在行移動到屏幕低端
tips:980z<Enter>可以將第980行移動到屏幕頂端
好吧,有時候你其實不想滾屏,你只想在當前屏幕中移動
請往下看
在屏幕中移動
H 移動到屏幕頂端的行
M 移動到屏幕中央的行
L 移動到屏幕底端的行
nH 移動到屏幕頂端往下的第n行
nL 移動到屏幕頂端往上的第n行
據我猜測這三個字母應該是HIgh、Middle和Low的縮寫,其實挺好記的
多練習幾遍就行了,需要注意的是:這裏只是光標的位置變化,和上面兩種不同
tips:你可以用+ -和j k實現同樣的位置變化,只不過要操作多次而已
+ -和j k的區別忘了嗎?往上看看吧
在當前行移動
^ 移動到當前行的地一個非空格處
n| 移動到當前行的第n列
這裏的^與上面的0通常情況下表示的位置是一樣的
而n|,個人感覺還沒有h l方便,慢慢的數出行數還不如直接按着h l 左右移
根據文本塊移動
所謂的文本塊也就是句子、段落、小節等
( 移動到當前句子開頭
) 移動到下一個句子開頭
{ 移動到當前這一段開頭
} 移動到下一段開頭
[[ 移動到當前這一節的開頭
]] 移動到下一節的開頭
其中,VIM以? . !等符號來標記一個句子
空白行來標記一個段落
用節宏來標記一個節(節宏是什麼我還沒搞清楚)
根據行號來移動
Ctrl+g 顯示當前行信息
nG 轉至第n行
G 轉至文本末尾
如果你不知道當前是多少行的話就可以用Ctrl+g來查看
如果想轉到第800行,可以用800G
其實z命令也可以做到,並且把光標移動到第一行
tips:``反引號可以返回到使用G之前的位置
輕快的VIM(二):插入
上一節我們講到了VIM中的移動,既然已經能夠在屏幕和光標間遊刃有餘了
那麼,現在就來談談插入命令
不知道有多少VIM新手和我當年(去年)一樣,信誓旦旦的以爲只有i可以插入
唉,現在想想都覺得可笑,都是Windows下的編輯器用多了的結果
鼠標一點,媽媽再也不用擔心我的文本插入了……悲劇!
好了,讓我們拋棄過去吧,從現在起奮鬥,也許不算太晚
這是俺寫的《輕快的VIM系列》第二節,每一節都會不斷更新,加入更多技巧在裏面
VIM新手們加油,咱一起總結,一起努力練習……
基礎
字符位置插入
i 在光標之前插入
a 在光標之後追加
你看,其實剛開始用這兩個就足夠了,這就是最基礎的
爲什麼這麼說呢?因爲你可以依靠上一節中的移動命令來達到任意位置,然後再大力插入
不要忘了,VIM中最重要的技巧之一就是命令間的配合使用
進階
行位置插入
A 在一行的結尾處追加
I 在一行的開頭處插入
o 在光標所在位置的下一行打開新行插入
O 在光標所在位置的上一行打開新行插入
當然,如果你認爲先移動光標然後插入或追加慢了,那麼就應該用上面這種方法
它們是以行做單位
在這裏我還是需要提醒一下,命令前加數字代表執行次數
tips1:10I*<Esc>先輸入10,然後輸入i,接着輸入*號,最後按<Esc>
這樣就可以在一行開頭輸入十個*
tips2:同樣,5o###<Esc>先輸入5,然後輸入o,接着輸入###,最後按<Esc>
這樣就可以在下列5行中每一行開頭插入###
看,這樣一來,再需要輸入重複文本的時候就變得方便了對不對,你可以自己試着擴展思維……
但我依然會不厭其煩的提醒你,命令的組合也是最重要的技巧之一
合併行
有時候你也許會想合併兩行
J 合併兩行
你只需要把光標移動到首行,然後按3次J即可
讓我感覺奇怪的是,我直接使用3J卻只能合併兩行,4J才能合併3行
誰來告訴我爲什麼
輕快的VIM(三):刪除
這一節我們來看看刪除,刪除命令比較簡單,不過要使刪除更有效率
你需要配合我們第一節中講的各種移動命令
字符刪除
x 刪除光標所在處字符
X 刪除光標所在前字符
這裏沒有什麼可注意的地方,但需要說明一下的是
通常情況下,新手一旦着急便會按着x不動,從而達到刪除一大塊文本的目的
如果是頭幾天使用還好說,但從長久考慮,你還需要學習下面的刪除命令
單詞刪除
dw 刪除到下一個單詞開頭
de 刪除到本單詞末尾
dE 刪除到本單詞末尾包括標點在內
db 刪除到前一個單詞
dB 刪除到前一個單詞包括標點在內
很明顯,d是delete的縮寫,而上面的x則是老式的清除意思
這裏e表示往前刪除一個單詞,b表示往後刪除一個單詞,第一節中移動寫的很清楚
要注意的是e b會忽略標點,如don't,它們會把這當做三個單詞don、‘ 和 t 來刪除
而大寫的E B則不會
行刪除
dd 刪除一整行 D d$ 刪除光標位置到本行結尾 d0 刪除光標位置到本行開頭
這三種用法是最好理解的
我一開始便說過,刪除命令需要配合移動命令才能發揮更多作用
你可以看看第一節內容,然後自己嘗試着刪除一節或一段內容等
tips:3dd代表刪除三行,聰明的你一定早就知道了