vim重復命令
2.1.1 重復執行上次命令
在普通模式下.
(小數點)表示重復上一次的命令操作
拷貝測試文件到本地目錄
$ cp /etc/protocols .
打開文件進行編輯
$ vim protocols
普通模式下輸入x
,刪除第一個字符,輸入.
(小數點)會再次刪除一個字符,除此之外也可以重復dd
的刪除操作
2.1.2 執行指定次數相同的命令
進入普通模式輸入N<command>
,N表示重復后面的次數,下面來練習以下:
打開文件文件進行編輯
$ vim protocols
下面你可以依次進行如下操作練習:
- 輸入
10x
,刪除10個連續字符 - 輸入
3dd
,將會刪除3行文本
在普通模式下,你還可以使用dw
或者daw
(delete a word)刪除一個單詞,所以你可以很容易的聯想到dnw
(n替換為相應數字)表示刪除n個單詞
2.2 游標的快速跳轉
普通模式下,下列命令可以讓光標快速調轉到指定位置,我們分別討論快速實現行間跳轉和行內跳轉
2.2.1 行間跳轉
命令 | 說明 |
---|---|
nG (n Shift+g) |
游標移動到第 n 行(如果默認沒有顯示行號,請先進入命令模式,輸入:set nu 以顯示行號) |
gg |
游標移動到到第一行 |
G (Shift+g) |
到最后一行 |
還是來練習一下吧:
使用vim打開練習文檔
$ vim protocols
依次進行如下操作練習:
- 快速跳轉到第9行,然后將其該行刪除
- 回到第一行,向下刪除8行
- 跳轉到文檔末,然后刪除該行
小技巧:你在完成依次跳轉后,可以使用Ctrl+o
快速回到上一次(跳轉前)光標所在位置,這個技巧很實用,比如當你在寫代碼時,忽然想起有個bug,需要修改,這時候你跳過去改好了,只需要按下Ctrl+o
就可以回到你之前的位置。vim中會用很多類似的小技巧就等着你去發掘。
2.2.2 行內跳轉
普通模式下使用下列命令在行內按照單詞為單位進行跳轉
命令 | 說明 |
---|---|
w |
到下一個單詞的開頭 |
e |
到當前單詞的結尾 |
b |
到前一個單詞的開頭 |
ge |
到前一個單詞的結尾 |
0 或^ |
到行頭 |
$ |
到行尾 |
f<字母> |
向后搜索<字母>並跳轉到第一個匹配的位置(非常實用) |
F<字母> |
向前搜索<字母>並跳轉到第一個匹配的位置 |
t<字母> |
向后搜索<字母>並跳轉到第一個匹配位置之前的一個字母(不常用) |
T<字母> |
向前搜索<字母>並跳轉到第一個匹配位置之后的一個字母(不常用) |
依次進行如下操作練習:
- 在普通模式下,任意跳轉到一行,使用
w
跳轉到一個單詞的開頭,然后使用dw
刪除這個單詞 - 在普通模式下,使用
e
跳轉到一個單詞的結尾,並使用~
將游標所在字母變成大寫或小寫
2.3 復制粘貼和剪切
2.3.1 復制及粘貼文本
-
普通模式中使用
y
復制- 普通模式中,
yy
復制游標所在的整行(3yy
表示復制3行) - 普通模式中,
y^
復制至行首,或y0
。不含光標所在處字符。 - 普通模式中,
y$
復制至行尾。含光標所在處字符。 - 普通模式中,
yw
復制一個單詞。 - 普通模式中,
y2w
復制兩個單詞。 - 普通模式中,
yG
復制至文本末。 - 普通模式中,
y1G
復制至文本開頭。
- 普通模式中,
-
普通模式中使用
p
粘貼- 普通模式中,
p
(小寫)代表粘貼至光標后(下) - 普通模式中,
P
(大寫)代表粘貼至光標前(上)
- 普通模式中,
打開文件進入普通模式練習上述命令,這會兒你就可以隨意yy
了,一 一+
$ vim protocols
2.3.2 剪切及粘貼
其實前面講得dd
刪除命令就是剪切,你每次dd
刪除文檔內容后,便可以使用p
來粘貼,也這一點可以讓我們實現一個很爽快的功能——交換上下行:
ddp
,就這么簡單,即實現了快速交換光標所在行與它下面的行