既然已经学了execute
和normal!
,我们就可以深入探讨一个Vimscript惯用法。 执行下面的命令:
:execute "normal! gg/foo<cr>dd"
这将移动到文件的开头,查找foo
的首次出现的地方,并删掉那一行。
之前我们尝试过用normal!
来执行一个搜索命令却无法输入必须的回车来开始进行搜索。 结合execute
和normal!
将解决这个问题。
execute
允许你创建命令,因而你能够使用Vim普通的转义字符串来生成你需要的"打不出"的字符。 尝试下面的命令:
:execute "normal! mqA;<esc>`q"
这个命令做了什么?让我们掰开来讲:
:execute "normal! ..."
:执行命令序列,一如它们是在normal模式下输入的,忽略所有映射, 并替换转义字符串。mq
:保存当前位置到标记"q"。A
:移动到当前行的末尾并在最后一个字符后进入insert模式。;
:我们现在位于insert模式,所以仅仅是写入了一个";"。<esc>
:这是一个表示Esc键的转义字符串序列,把我们带离insert模式。`q
:回到标记"q"所在的位置。看上去有点绕,不过它真的很有用:它在当前行的末尾补上一个分号并保持光标不动。 在写Javascript,C或其他以分号作为语句分隔符的语言时,一旦忘记加上分号,这样的映射将助你一臂之力。
重读:help expr-quote
(你之前应该看过)来提醒你怎么用execute
通过转义字符串传递特殊字符给normal!
。
在翻开下一章之前,放下本书休息一下。吃一个三明治或喝一杯咖啡(译注:或者茶!), 喂一下你的宠物——如果你有的话。
SVG path path 元素应该是 SVG 中最常见的形状。你可以通过 path 元素绘制矩形(直角矩形或者圆角矩形)、圆形、椭圆、折线形、...
XML Schema group 元素 完整 XML Schema 参考手册定义和用法 group 元素用于定义在复杂类型定义中使用的元素组。 元素信息 父元...
您已经学习了 XML Schema,下一步学习什么呢? 本节对XMLSchema 的知识点进行总结。XML Schema 概要 本教程已经向您讲解了如何描...
XML DOM lastChild 属性 Element 对象定义和用法 lastChild 属性返回选定元素的最后一个子节点。 如果选定的节点没有子节点,则...