*.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