VIM Scripting的好指南?

时间:2010-01-28 10:51:10

标签: vim scripting

我已经使用VIM超过10年了,但从未真正使用VIM脚本(总是主观地认为这是VIM弱于Emacs的一个领域)。

最近,实现“在VIM脚本中,我可以执行正常模式命令”让我的思绪变成了“a-ha”,并突然开始意识到为什么VIM脚本的部分就是这样。

normal ma10jd'a20kp

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

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

谢谢!

4 个答案:

答案 0 :(得分:56)

我能给出的最好建议是:

:help usr_41.txt

这将为您提供基本知识的良好概述。然后找一些你想要做的事情并为它们创建功能。当你这样做时,请大量使用:

:help function-list

了解所有内置函数的含义。其中大部分内容与其他脚本语言非常相似(虽然语法更为严厉),因此您在python中使用文本操作的任何经验都将是有用的。

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

最后(也许最重要的是),不要害怕在stackoverflowVim mailing list上提出问题,并且会对您遇到的任何问题提供足够的支持。

答案 1 :(得分:34)

学习Vimscript艰难之路也值得一试。

http://learnvimscriptthehardway.stevelosh.com/

答案 2 :(得分:14)

我处于类似情况。它仍在我的“阅读”列表中,但我今天刚刚找到Scripting the Vim editor。来自IBM DeveloperWorks的文章通常非常好,所以可能值得一试。

答案 3 :(得分:14)

Al给了你一个good answer。我还要添加vim.wikia,其中包含一些与您的问题相关的提示。

旁注。

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

  • 维护起来非常困难(如果行数变成参数怎么办?),
  • 人们喜欢覆盖他们从未学会使用过的密钥(这可以通过带有:normal!的方式修复,
  • 某些普通模式命令在侧面情况下有奇怪的行为(如光标在第一列时为<esc>),
  • 它标记 a 标记,未命名的注册表 - 其他脚本,甚至用户可能希望它们的值不会被您的脚本更改。