VIM脚本很好的指导?

我已经使用VIM 10多年了,但从来没有真正进入VIM脚本(总是主观地认为这是VIM比Emacs弱的一个领域)。

最近,“在VIM脚本中,我可以执行正常模式命令”的实现使我的头脑变得“哈哈”,突然开始意识到为什么VIM脚本的部分是这样的。

normal ma10jd'a20kp 

比…更优雅

 Marker m = currentLocation(); advanceLines(10); Buffer b = delete(currentLocation(), m); advanceLines(-20); insertBuffer(b); 

现在问题是 – 什么是学习vim脚本的好资源?

谢谢!

我能给的最好的build议是你读了:

 :help usr_41.txt 

这将给你一个很好的基础知识。 然后find一些你想要做的事情,并为它们创buildfunction。 当你这样做时,大量使用:

 :help function-list 

了解所有内置function是什么。 其中大部分与其他脚本语言非常相似(虽然语法较为粗糙),所以在Python或任何其他语言中进行文本操作的经验都是有用的。

另外,请查看vim脚本页面和Google以获取现有脚本的示例,以帮助扩展您的知识。

最后(也可能是最重要的),不要害怕在stackoverflow或Vim邮件列表上询问,并且会对你可能遇到的任何问题提供大量的支持。

学习Vimscript的硬路也值得一试。

http://learnvimscriptthehardway.stevelosh.com/

我处于类似的情况。 它仍然在我的“阅读”列表中,但是我今天发现了Vim编辑器的脚本 。 IBM的DeveloperWorks的文章通常非常好,所以可能值得一试。

艾尔给你一个很好的答案 。 我还要添加vim.wikia ,它有一些与你的问题相关的提示。

在旁边注意。

我不会说ma10jd'a20kp更优雅。 我看到以下问题:

  • 这是很难保持(如果线数量将成为一个参数?),
  • 人们喜欢覆盖他们从来没有学会使用的密钥(这可以用一个:normal!
  • 一些正常模式命令在边界上有奇怪的行为(如当光标位于第一列时,就像<esc> ),
  • 它会混淆标记a和未命名的寄存器 – 其他脚本,甚至用户可能希望它们的值不会被脚本所改变。