execute normal!命令

既然我们已经学习了 executenormal!,那就进一步的讨论一个常用的 Vimscript 习惯. 运行以下命令:

:execute "normal! gg/foo\<cr>dd"

这会移动到文件顶部,搜索第一次出现 foo 的地方,然后删除这一行。

之前我们已经尝试了在搜索命令中使用 normal!,但是没办法按下回车来真正执行搜索。 结合 normalexecute 就能解决这个问题。

execute 让你以编程的方式构建命令,这样就可以用普通的 Vim 字符串转义序列来生成需要的非打印字符。 试试以下命令:

:execute "normal! mqA;\<esc>`q"

这个命令做了什么?让我们拆分开来看:

这看起来有点吓人,但是实际上是非常有用的:它在当前行的末尾添加一个分号,而把保留光标在原处。 如果你在写Javascript,C,或任何其他用分号作为语句终止符的语言时,忘记了写分号, 那么为这个命令创建一个映射肯定能派上用场。

练习

再次阅读 :help expr-quite (你之前看过的)以提醒自己如何使用字符串转义来通过 execute 把特殊字符传给 normal!

在你继续下一章节之前先暂时放下本书。吃个三明治或喝杯咖啡,如果有宠物的话喂喂它们, 稍微放松一会。

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/30.html