在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这一章我们将来探索Vim映射系统中另外一个神奇的部分:“Operator-Pending映射”。开始之前,我们先解释下这里面的几个词含义。 一个Operator(操作)就是一个命令,你可以在这个命令的后面输入一个Movement(移动)命令,然后Vim开始对文本执行前面的操作命令,这个操作命令会从你当前所在的位置开始执行,一直到这个移动命令会把你带到的位置结束。 常用到的Operator有
Movement映射Vim允许你创建任何新的movements,这些movements可以跟所有命令一起工作。执行下面的命令:
在缓冲区中输入下面的文字:
把光标放到单词“cat”上,然后敲击
我们现在可以立马对所有的operators使用这个新建的映射。再次在缓冲区中输入上面的文字(或者直接把之前修改恢复一下)。
把光标放到单词“cat”上,然后敲击 再看一个示例。执行下面的命令:
现在把下面的文字输入到缓冲区:
把光标放到第二行的 当你想搞清楚怎么定义一个新的operator-pending movement的时候,你可以从下面几个步骤来思考:
你所要做的工作就是在第三步中填上合适的按键。 改变开始位置你可能已经从上面所学的东西中意识到一个了问题。如果我们定义的movements都是从光标所在的位置开始的话,那么这就会限制我们做一些我们想使用movement来做的事情。 但是Vim并不会限制你去做你想做的事情,所以对于这个问题肯定有解决办法。执行下面的命令:
这个命令看起来有些复杂,不过我们还是先试试它能干什么。将下面的文字输入缓冲区:
把光标放到单词 你可以将这个映射理解为“在下一个括号内(inside next parentheses)”。它会对当前行光标所在位置的下一个括号内的文本执行operator。 我们再创建一个“在上一个括号内(inside last parentheses)”的movement进行对照。(在这里使用“前一个(previous)“可能更准确,但这会覆盖“段落(paragraph)”movement)
先试试确保这个命令可以工作。 那么这些映射是怎么工作的呢?首先,
那么现在我们可以认为这个映射的关键是运行下面这些按键组成的命令:
This is fairly simple: 这个命令很容易理解:
这个movement结束在在可视模式下选择中我们想操作的文本,然后Vim会对选中的文本执行操作,就像通常情况一样。 一般规则下面两条规则可以让你可以很直观的以多种方式创建operator-pending映射:
练习为"around next parentheses"和"around last parentheses"创建operator-pending映射 为打括号创建类似的in/around next/last的mappings。 阅读 |
请发表评论