現在,我們向你介紹的是VIM殺手級的功能。下面這些功能是我只用vim的原因。
在當前行上移動光標: 0
^
$
f
F
t
T
,
;
0
→ 到行頭^
→ 到本行的第一個非blank字符$
→ 到行尾g_
→ 到本行最後一個不是blank字符的位置。fa
→ 到下一個爲a的字符處,你也可以fs到下一個爲s的字符。 這個還不錯t,
→ 到逗號前的第一個字符。逗號可以變成其它字符。3fa
→ 在當前行查找第三個出現的a。F
和T
→ 和f
和t
一樣,只不過是相反方向。
還有一個很有用的命令是 dt"
→ 刪除所有的內容,直到遇到雙引號—— "。
區域選擇 <action>a<object>
或 <action>i<object>
在visual 模式下,這些命令很強大,其命令格式爲
<action>a<object>
和 <action>i<object>
- action可以是任何的命令,如
d
(刪除),y
(拷貝),v
(可以視模式選擇)。 - object 可能是:
w
一個單詞,W
一個以空格爲分隔的單詞,s
一個句字,p
一個段落。也可以是一個特別的字符:"、
'、
)、
}、
]。
假設你有一個字符串 (map (+) ("foo"))
.而光標鍵在第一個 o
的位置。
vi"
→ 會選擇foo
.va"
→ 會選擇"foo"
.vi)
→ 會選擇"foo"
.va)
→ 會選擇("foo")
.v2i)
→ 會選擇map (+) ("foo")
v2a)
→ 會選擇(map (+) ("foo")) 這個不錯
塊操作: <C-v>
塊操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]
^
→ 到行頭<C-v>
→ 開始塊操作<C-d>
→ 向下移動 (你也可以使用hjkl來移動光標,或是使用%,或是別的)I-- [ESC]
→ I是插入,插入“--
”,按ESC鍵來爲每一行生效。
在Windows下的vim,你需要使用 <C-q>
而不是 <C-v>
,<C-v>
是拷貝剪貼板。
自動提示: <C-n>
和 <C-p>
在 Insert 模式下,你可以輸入一個詞的開頭,然後按 <C-p>或是<C-n>,自動補齊功能就出現了……
宏錄製: qa
操作序列 q
,
@a
, @@
qa
把你的操作記錄在寄存器a。
- 於是
@a
會replay被錄製的宏。 @@
是一個快捷鍵用來replay最新錄製的宏。
示例
在一個只有一行且這一行只有“1”的文本中,鍵入如下命令:
qaYp<C-a>q
→
qa
開始錄製Yp
複製行.<C-a>
增加1.q
停止錄製.@a
→ 在1下面寫下 2@@
→ 在2 正面寫下3- 現在做
100@@
會創建新的100行,並把數據增加到 103.
可視化選擇: v
,V
,<C-v>
前面,我們看到了 <C-v>
的示例 (在Windows下應該是<C-q>),我們可以使用 v
和
V
。一但被選好了,你可以做下面的事:
J
→ 把所有的行連接起來(變成一行)<
或>
→ 左右縮進=
→ 自動給縮進 (陳皓注:這個功能相當強大,我太喜歡了)
在所有被選擇的行後加上點東西:
<C-v>
- 選中相關的行 (可使用
j
或<C-d>
或是/pattern
或是%
等……) $
到行最後A
, 輸入字符串,按ESC。
分屏: :split
和 vsplit
.
下面是主要的命令,你可以使用VIM的幫助 :help split
. 你可以參考本站以前的一篇文章VIM分屏。
:split
→ 創建分屏 (:vsplit
創建垂直分屏)<C-w><dir>
: dir就是方向,可以是hjkl
或是 ←↓↑→ 中的一個,其用來切換分屏。<C-w>_
(或<C-w>|
) : 最大化尺寸 (<C-w>| 垂直分屏)<C-w>+
(或<C-w>-
) : 增加尺寸
轉自 http://coolshell.cn/articles/5426.html