编者按:之前我们发了一些很基础的 Vim 教程,有同学说了,你这都是无聊的水文,学习 Vim 就应该总结规律,才能学会。愚也以为然,于是求得转载。本文对 Vim 的普通模式(Normal)做了一番总结,可能其中还有一些不足或疏漏,但是这个思路非常好,请大家无论是抛砖还是抛玉,请大家轻拍~~^_^
前言
已经受不了网上无数 Vim 的教学,基本都是片汤话,抄来抄去。做为一名技术人员,应该能深入的去了解一个软件,然后总结出来经验和规律,而不是记录一个流水帐,这才是最佳的学习方式。计算机与人不同,能处理的东西一般都具有一定的规则性,无规则存在概率性的东西,不是计算机处理的强项,尤其对于软件设计来,良好的规律性,能大幅提升软件的可操作性。
对于 Vim 来讲,这个号称神器的东西,定不能放弃这种规律,结果让一些砖家讲的反而如同垃圾,需要死记硬背一堆命令,实则是没有真正了解 Vim,精华的东西却很少见。之所以称之神器,肯定不是简简单单的增删改查,通过命令组合,可以大幅提升文本编辑的速度,远比常规的鼠标操作快,达到手不离键盘。
本文仅仅总结一下普通模式下 Vim 的一些规律性。
直接上硬货
普通模式下通用命令格式(在该模式下,大部分文本命令基本跳不出这个范围):
[范围]命令[作用域][对象]
范围(可忽略)
一般存在以下几种:
2y
、
2gg
、
2d
、
2fh
(找查当前行,第 2 个
h
的位置)。
20,30y
、
20,30d
。
命令(必填)
这部分没有什么可以说的,网上的片汤文章已经很多了一般来讲,就是增删改查复制粘帖之类的。
作用域(可忽略)
这个作用域,一般来讲,是指后面的[对象]
范围,一般可以是数字或者一些“动词”。
数字:
d2w
、y2w
、f2,
动词:
测试用例:
<H1>setopt(ch, "this is a test", 1);</H1>
a
(包含)
da)
,很神奇的包含括号在内的内容全部都被删除了,这比在传统的编辑器中,慢慢的按
del
键一个个来删,和用鼠标选择来删,要
精准、
快速得多。可以私下试试所有成对字符,例如:
"
、
'
、
]
、
}
等。
daw
,在语义上可以理解为删除一个单词,它与
dw
的区别在于,
dw
只能删除当前光标到单词的结尾,而
daw
,则会删除整个单词。
i
(内嵌)
""
内的内容(不包括
""
),例如
di"
(Vim 下可以参考帮助 :h text-object
)
对象(一般需组合作用域)
符号对象:
成对的符号,如上面所举 "
、'
、)
、}
、]
,其中 )
也可以用 b
来表示dab
,}
也可以用 B
。
文本对象:
w
单词
W
字符串
s
句子
p
段落
总结
本文作者是一个学理出身的,可能文字功底并不是很好。中心思想,只是希望大家使用计算机时,能尽量抛弃死记硬背,应该从中能找到规律性的东西,理解一个软件。通过以上文章,希望大家能在规律的基础进行排队组合,从而达到更好的效果。
码农和大拿的区别:思想。
推荐
《Vim 实用技巧》,这本书有电子版的,质量还不错。但真心推荐买一本,不贵但全书实货满满,空闲时看看,应该每次都能有一些收获,这本书更多注重的是思想,应该是我见过最好的 Vim 丛书,没有之一。