vim-操作汇总
不断挖掘,直到键盘变成双手的一部分
光标移动
%
: 匹配括号移动,包括 (, {, [.*
和#
: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)fa
→ 到下一个为a的字符处,你也可以fs到下一个为s的字符。(和d搭配会很强,dfa
一直删除到本行的接下来的第一个a)3fa
→ 在当前行查找第三个出现的a。ta
则是移到下一个a的前一个字符
一个很通用的操作格式
<start position><command><end position>
- 如
0y$
意味着从行头拷贝到行尾,差不多等于yy
- 你可可以输入
ye
,从当前位置拷贝到本单词的最后一个字符。 - 你也可以输入
y2/foo
来拷贝2个 “foo” 之间的字符串。
区域选择
在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”))
块操作
块操作,典型的操作: 0
^
→ 到行头<C-v>
→ 开始块操作<C-d>
→ 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)I-- [ESC]
→ I是插入,插入“–”,按ESC键来为每一行生效。
在所有被选择的行后加上点东西:
<C-v>
- 选中相关的行 (可使用 j 或
或是 /pattern 或是 % 等……) $
到行最后A
, 输入字符串,按 ESC。
宏录制
-
qa 把你的操作记录在寄存器 a。于是 @a 会replay被录制的宏。@@ 是一个快捷键用来replay最新录制的宏。
-
示例
在一个只有一行且这一行只有“1”的文本中,键入如下命令:
- qa 开始录制
- Yp 复制行.
-
增加1. (ctrl a可以让数字加一,ctrl x让数字减一) - q 停止录制.
- @a → 在1下面写下 2
- @@ → 在2 正面写下3
- 现在做 100@@ 会创建新的100行,并把数据增加到 103.
reference
- 简明 VIM 练级攻略 神级入门教学
- Vim入门基础
- shell中输入
vimtutor