如何在缓冲区上运行perltidy脚本vim?

前端之家收集整理的这篇文章主要介绍了如何在缓冲区上运行perltidy脚本vim?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我目前的工作中,我们的编码风格标准与通常所遵循的不同.幸运的是,我们提供了一个用于perltidy的罐头RC文件,在提交给我们的审查过程之前,我可以申请重新格式化文件.

我有一个emacs的代码,我用来在缓冲区上运行一个命令,并用输出替换缓冲区,我已经调整了这个.但我有时会在emacs和vim之间交替,并希望在那里有相同的功能.我相信这个或类似的东西很简单,已经完成并重新完成了很多次.但是我没有太多的运气找到任何似乎做我需要的vim脚本的例子.这实质上是能够击中一个关键组合(如Ctrl-F6,我在emac中使用的),并且缓冲区被perltidy原位重新格式化.虽然我是一个舒适的vim用户,但我完全无知地为vim写这样的东西.

尝试@hobbs答案后,我注意到,当通过perltidy过滤整个缓冲区时,光标返回到字节1,我不得不对原始行号进行心理记录,所以我可以回去:整理完成.

所以建立在@hobbs’和@ Ignacio的答案上,我将以下内容添加到我的.vimrc中:

  1. "define :Tidy command to run perltidy on visual selection || entire buffer"
  2. command -range=% -nargs=* Tidy <line1>,<line2>!perltidy
  3.  
  4. "run :Tidy on entire buffer and return cursor to (approximate) original position"
  5. fun DoTidy()
  6. let l = line(".")
  7. let c = col(".")
  8. :Tidy
  9. call cursor(l,c)
  10. endfun
  11.  
  12. "shortcut for normal mode to run on entire buffer then return to current line"
  13. au Filetype perl nmap <F2> :call DoTidy()<CR>
  14.  
  15. "shortcut for visual mode to run on the the current visual selection"
  16. au Filetype perl vmap <F2> :Tidy<CR>

(关闭添加到SO语法高亮目的的注释(不是必需的,但有效的vim语法))

DoTidy()将光标返回原来的位置加或减最多X个字节,其中X是perltidy相对于原始光标位置添加/删除的字节数.但是,只要你保持整洁,这是相当微不足道的:).

[Vim版本:7.2]

编辑:更新DoTidy()以整合@ mikew的可读性和与Vim 7.0兼容性的评论

猜你在找的Bash相关文章