持之以恒地使用VIM,因为通过训练,曾经很棘手的事情都将变成你的第二天性,你应该把“不加思考就能使用VIM完成你的操作”当成你的目标。
一旦你达到这种水平,就能以思考的速度编辑文本了。
——很喜欢《Practical Vim - Edit Text at the Speed of Thought》中的这段话。
VIM 发展
Unix 编辑器的发展: ed -> ex -> vi (visual) -> vim (vi improved)
模式分类
(1)普通模式
(2)插入模式
(3)可视化模式 用于对文本块做操作,在可视化模式中,所有按键都会完成一种不同功能。
(4)命令行模式 普通模式下,按冒号进入。
以上是常见的模式,还有一些不太常见的,其实也有他们的使用场景,来了解下:
(5) 操作符待决定模式(Operator-Pending Mode)
前面讲到vim的操作是通过 操作符 + 动作命令 实现的,而输入操作符和动作命令的这段时间,vim就处于操作符待决定模式。
即它在调用操作符时被激活,只接受动作命令的状态,等待动作命令以完成操作,按可以返回普通模式。
(6)插入-普通模式
插入-普通模式是普通模式的一个特例,它能执行一次普通模式命令,然后返回到插入模式。
(7)选择模式
当进入可视模式后,按gh,再做输入,就会替换所选内容并切换到插入模式。
因为在可视化模式下,如果直接输入,输入的字符会被解释成命令,当然要实现这个效果,用c命令先做删除也是可以的。
操作语法规则
(1) vim的操作 是通过 操作符 + 动作命令实现的;
(2) 当一个操作符被连续调用两次时,它会作用于当前行,如dd 删除当前行,>>缩进当前行;
操作原则
(1) 在做一系列可重复修改时,最好首选操作符命令,远离可视模式(可视模式命令被重复时,会影响相同数量的文本)。
文本对象
VIM 的文本对象分为两类,一类是操作分隔符的对象文本,另一类是操作文本块,如单词、句子和段落。
分隔符文本对象:
允许操作括号,被引用文本,XML标签以及其他文本中的常见结构。
a) 或 ab 一对圆括号(parentheses)
i) 或 ib 圆括号内部
a} 或 aB 一对花括号(braces)
i} 或 iB
a] 一对方括号(bracket), i]
a> 一对尖括号(angle bracket) , i>
a' i' a" i" a` i` (single quotes,double quotes,backticks)
at 和 it XML标签
范围文本对象(block object):
iw 当前单词
aw 当前单词及一个空格
iW 当前字符串
aW 当前字符串及一个空格
is 当前句子
as 当前句子及一个空格
ip 当前段落
ap 当前段落及一个空行
文本对象 结合 操作符待决定模式及可视模式,可以展现强大的能力。
一般来说,d{motion} 命令和 aw、as、ap配合起来比较好,而c{motion} 则配合iw、is、ip较好。
参考:
1.《Vim 实用技巧》《Practical Vim - Edit Text at the Speed of Thought》
阅读(1391) | 评论(0) | 转发(0) |