如何在保存时在括号和引号之间添加空格

时间:2014-07-14 13:20:16

标签: vim

我想添加让VIM自动在括号和" / '之间添加空格以匹配jquery样式指南:http://contribute.jquery.org/style-guide/js/。这可以是保存或触发自定义命令。

理想情况下,它还会在变量名称之前添加空格,但不会在函数或对象文字中添加空格。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

要在保存时插入空格,请使用autocommand

au BufWrite *.js silent! %s/\m(\@<=["']/ \0/g | silent! %s/\m["'])\@=/\0 /g
只要保存了具有au BufWrite *.js扩展名的文件(例如js),

jquery.js就会触发,而命令的其余部分将在 all 之间插入空格单引号/双引号的出现在空格之后/之后(例如,在注释和字符串内部)。要仅在变量名称前执行插入,您需要解析javascript文件并识别其变量,之后才能知道要修改的位置(否则,对于Vim,所有你的代码只是文字。)

或者,您可以将所有内容绑定到命令:

com InsertSpaces silent! %s/\m(\@<=["']/ \0/g | silent! %s/\m["'])\@=/\0 /g

此时:InsertSpace将执行替换。

最好的解决方案是@romainl建议:训练自己被动地遵循风格指南。自动化空间插入是一个丑陋的黑客。

相关问题