VIM Scripting的好指南?

ano*_*non 54 vim scripting

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

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

normal ma10jd'a20kp
Run Code Online (Sandbox Code Playgroud)

比它更优雅

Marker m = currentLocation();
advanceLines(10);
Buffer b = delete(currentLocation(), m);
advanceLines(-20);
insertBuffer(b);
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

DrA*_*rAl 57

我能给出的最好建议是你读到:

:help usr_41.txt
Run Code Online (Sandbox Code Playgroud)

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

:help function-list
Run Code Online (Sandbox Code Playgroud)

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

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

最后(也许最重要的是),不要害怕在stackoverflowVim邮件列表上询问,并且会对你可能遇到的任何问题提供足够的支持.


Epe*_*eli 35

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

http://learnvimscriptthehardway.stevelosh.com/

  • 我发现这本书是学习Vimscript的最佳资源!:) (4认同)

Luc*_*tte 15

艾尔给了你一个很好的答案.我还要添加vim.wikia,其中包含一些与您的问题相关的提示.

在旁注.

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

  • 它很难维护(如果行数变成参数怎么办?),
  • 人们喜欢覆盖他们从未学会使用过的钥匙(这可以通过撞击修复:normal!),
  • 一些普通模式命令在侧面情况下有奇怪的行为(比如<esc>当光标在第一列时),
  • 它混淆了标记a,未命名的寄存器 - 其他脚本,甚至用户可能希望它们的值不被脚本改变.

  • +1:我误读了原帖,因为"我的想法显然不是那么优雅"!否则我会评论不可维护的`:normal`行.只有当我找不到使用脚本构造的好方法时,我倾向于使用`:normal`.可以手动一次输入一个键,也可以编写可以维护的正确功能. (3认同)

Wal*_*ter 14

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

  • 我今天做了一些vimscript,IBM DevWorks指南很棒,但我从第1部分开始.(答案链接到第3部分)http://www.ibm.com/developerworks/linux/library/l-vim -script-1/index.html中 (2认同)