IDE/Editor · 2013/04/10 0

vim 神技 i/a

vim 无语伦比的强大的编辑器… 这么多年了, 我一直用它…(开篇省略100字

当然, 这里要说的 i/a 显然不是 insert/append, 而是 in/all, 这是 vim 的一个区块操作技巧.

在日常的编程中, 我们可能经常要操作一个字符串中的内容或者清除括号中的内容 比如如下内容:

aaa(bbb("写错了"));

那么如果,我们我们需要完整清理, 引号中的内容怎么办?
之前的话我会在命令模式下移动到这行, 按下 f” 查到到第一个 “, 按下 l, 使得光标移动到字符串内部, 然后按下 df” 删除到下一个引号, 最后再补上一个 “, 然而这样的操作也就过于繁琐了, vim 则为我们准备好了一个神技指令.
第一部操作类似, 跳到本行, 按下 f” 查到到第一个 “, 接下来就是见证奇迹的时刻了, 我们按下 di”, 内容是不是直接被清除了, 而且你也进入了编辑模式, 结果如下:

aaa(bbb(""));

当然你说我要删除整个字符串包括引号, 在这里实现起来有两种方式

1. 跳到本行, 按下 f” 查到到第1个 “, 接着按下 da”
2. 跳到本行, 按下 2f( 查到到第2个 (, 接着按下 di(

由此可见 i/a 操作是支持圆括号的, 同样支持的还有单引号, 方括号, 花括号, 更牛X的是对于括号来说, 即使是换行了依然支持 i/a 操作.如:

{
|
无用的内容
}

这样, 在括号区域内进行 i/a 依然有效.

你以为做做这样删除操作就结束了? 兔羊兔耐五… i/a 操作支持的操作还有 v 区块选择, y 复制操作.

vim 真心是个牛X的编辑器, 慢慢使用你会有更大发现. 😀