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