fun! StripTrailingWhitespace()
" Only strip if the b:noStripeWhitespace variable isn't set
if exists('b:noStripWhitespace')
return
endif
%s/\s\+$//e
endfun
autocmd BufWritePre * call StripTrailingWhitespace()
autocmd FileType ruby,javascript,perl let b:noStripWhitespace=1
6条答案
按热度按时间s5a0g9ez1#
*.rb
不是一个文件类型。它是一个文件模式。ruby
是文件类型,甚至可以在没有.rb
扩展名的文件上设置。因此,您最可能需要的是一个函数,autocmd调用该函数来检查不应该执行的文件类型并去除空格。基于evan的答案,您可以检查buffer局部变量,并确定是否使用该变量进行剥离。如果您决定不剥离通常会剥离的文件类型的缓冲区,这也允许您执行一次性禁用。
7eumitmz2#
另一人选择行道:
然后你可以做一些你喜欢的所有文件类型,除了那些在黑名单。
bnl4lu3b3#
一个好的方法是为一个文件类型设置一个本地变量为true,然后如果该变量为false(如果为其他所有文件类型设置)或者如果该变量存在(不需要预先设置),则设置automcommand。
已根据注解更改变量前缀
laximzn54#
您可以在同一个正则表达式上执行except:
这将对除
.out
或.diffs
之外的所有文件扩展名执行<your_command>
。qaxu7uf25#
这适用于
Syntax
自动命令,其中模式(<match>
)只是文件类型,它排除了任何rst
文件:tjjdgumg6#
我们的.vimrc配置文件只在启动时运行一次,所以如果你在这个时候进行if测试,它将不会工作,因为此时没有python文件正在被编辑。
但您可以使用.vimrc设置自动行为:Vim在每次遇到特殊情况时都会做的事情。2在你的情况下,这种情况可能是:“正在编辑新文件,其文件类型为'python'"。请参阅:h:Au