.
命令.
命令做用javascript
:h .
)應用舉例java
x
命令會 ==刪除光標下的字符==,使用 .
會讓 ==重複刪除光標下的字符==。屢次輸入 u
撤銷上述修改。vim
dd
命令刪除一整行,使用 .
命令會 ==重複刪除當前行==。markdown
>G
==增長從當前行到文檔末尾處的縮進層級==,使用 .
會重複該操做。oop
每次 i
進入插入模式的那一刻,到返回普通模式爲止, Vim
會記錄每個按鍵操做,作出這樣一個修改再用 .
命令,它會從新執行全部這些按鍵操做。this
.
命令是一個微型的宏macro
spa
var foo = 1
var bar = 'a'
var foobar = foo + bar
複製代碼
在行尾添加分號:code
$
移動到行尾,而後 a
編輯,輸入分號,Esc
完成修改j$.
.
意味着 a;<Esc>
,一個鍵頂三個鍵有沒有改進的餘地?orm
A
代替 $a
。==A
把 $a
封裝成了一個按鍵操做。==Esc
。j.
來重複操做了。一舉兩得對象
複合命令 | 等效的長命令 | 做用 |
---|---|---|
C |
c$ |
刪除到行尾並進入插入模式 |
s |
cl |
刪除當前字符並進入插入模式 |
S |
^C |
刪除當前行內容並進入插入模式 |
需求:把 JavaScript
的字符串拼接的加號先後都加上空格。
var foo = "method("+argument1+","+argument2+")";
複製代碼
要改爲:
var foo = "method(" + argument1 + "," + argument2 + ")";
複製代碼
f+
查找加號注:f{char}
查找下一處指定字符出現的位置
s空格+空格<Esc>
進行修改;
重複查找上次 f
查找的字符.
重複上次修改;.
;.
注意:不用輸入 4
次 f+
,用 ;
重複查找便可。
;.
重複查找 + 重複修改
重複頗有用,但有時候屢次按 .
或者 ;
的時候,容易出現多按的錯誤。
.
能夠使用 u
撤銷上次修改。;
能夠使用 ,
跳轉回去,由於 ,
會反向查找上次 f{char}
所查找的字符目的 | 操做 | 重複 | 回退 |
---|---|---|---|
作出一個修改 | {修改} |
. |
u |
在行內查找下一指定字符 | f{字符} / t{字符} |
; |
, |
在行內查找上一指定字符 | F{字符} / T{字符} |
; |
, |
在文檔中查找下一處匹配項 | /pattern回車 |
n |
N |
在文檔中查找上一處匹配項 | ?pattern回車 |
n |
N |
執行替換 | :s/target/replacement |
& |
u |
執行一系列修改 | qx{修改}q |
@x |
u |
注意:t{字符}
的在查找的字符前面停下來,而 T{字符}
在查找的字符後面停下來。
需求 把文本中的 content
替換成 copy
。
...We're waiting for content before the site can go live...
...If you are content with this, let's go ahead with it...
...We'll launch as soon as we have the content...
複製代碼
:substitute
命令專門用於查找替換任務。
偷懶的辦法:無需輸入就能夠進行查找 做者雲:.
命令是我最喜好的 Vim
單鍵命令,排在第二的是 *
命令,此命令 ==能夠查找當前光標下的單詞==。
/content
:查找到 content
單詞或者直接把光標移動到這個單詞上 2. *
:查找該單詞 3. cw
copy<Esc>
:修改 content
爲 copy
4. n
:找到下一個 5. .
:重複修改 6. n.n.n.
:完成全部修改 7. 若是不想修改,不按 .
直接按 n
跳轉到下一個便可
移動光標到 content
上,而後按 *
,會產生兩個結果:
若是沒有高亮,試着運行 :set hls
.
範式==.
範式是最理想的編輯模式,用一鍵移動,另外一鍵執行。==
.
命令重複上次修改普通模式 normal mode
是 Vim
的默認狀態。
畫家在休息時不會把畫筆放在畫布上。 普通模式就是 Vim
的天然放鬆狀態,其名字已經寓示了這一點。
u
鍵會觸發撤銷命令,它會撤銷最新的修改。 在 Vim
中,咱們本身能夠控制撤銷命令的粒度。 從進入插入模式開始,直到返回普通模式爲止,在此期間輸入或刪除的任何內容都被當成一次修改。 所以,只要控制好 <Esc>
鍵的使用,就可以使撤銷命令做用於單詞、句子或段落。
多久離開一次插入模式? 做者喜歡讓每一個 「可撤銷塊」 對應一次思考過程。 無論停頓的時間有多短,每次停頓都是一個天然的中斷點,提示做者該退出插入模式了。
當處於插入模式中,另起一行最快的方式是按 <CR>
。 可是有時做者更喜歡按 <Esc>o
,這是由於做者有預感,也許在撤銷時做者想擁有更細的粒度。
通常來說,若是你停頓的時間長到足以問 「我應該退出插入模式嗎?」 這個問題,就退出吧。
==在插入模式中使用方向鍵移動光標會重置修改狀態== 若是在插入模式中使用了 <Up>
、<Down>
、<Left>
、<Right>
這些光標鍵,將會產生一個新的撤銷快。 你能夠把這想象爲先切換回普通模式,而後用 h
、j
、k
、l
命令對光標進行了移動,可是沒有退出插入模式。 這會對 .
命令的操做產生影響。
在 Vim
中,評估哪一種方式最好時,最顯而易見的指標是效率,即哪一種手段須要的按鍵次數最少(又名 VimGolf
)。 VimGolf
vimgolf.com/
然而在平局時如何選擇勝者呢?
需求 The end is nigh
光標位於 h
,如今要刪除單詞 nigh
。
反向刪除:Vim
高爾夫得分 3
db
刪除從光標起始位置到單詞開頭的內容x
刪除 h
正向刪除:Vim
高爾夫得分 3
b
移動到單詞開頭dw
刪除整個單詞刪除整個單詞:Vim
高爾夫得分 3
使用 aw
文本對象 text object
daw
刪除一個單詞(能夠解讀爲 delete a word
)決勝局:哪一種方式最具重複性? 看哪一種方式能夠發揮 .
命令的最大威力。 反向刪除 .
== x
正向刪除 .
== dw
刪除整個單詞 .
== daw
因此 daw
勝出!