*.rb
はファイルタイプではありません。それはファイルパターンです。 ruby
はファイルタイプで、.rb
拡張子のないファイルでも設定できます。だから、あなたが最も必要とするのは、あなたのautocmdが呼び出す関数があります。この関数は、実行すべきでないファイルタイプをチェックし、空白を取り除きます。エヴァンの答えに
fun! StripTrailingWhitespace()
" Don't strip on these filetypes
if &ft =~ 'ruby\|javascript\|perl'
return
endif
%s/\s\+$//e
endfun
autocmd BufWritePre * call StripTrailingWhitespace()
ビル、あなたはバッファローカル変数をチェックし、それを使用してストリップを行うかどうかを決定することができます。また、通常は削除するファイルタイプのバッファを削除したくないと判断した場合は、これを使用して一度無効にすることもできます。
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
私は、特定のファイル拡張子を除外し、私の記述の中で間違いなく誤ったパターンを期待していました。私が1ライナーを望んでいる間、ロジックを関数にラップし、それを呼び出すことはあまりにも控え目ではありません。ありがとう! – jerodsanto