Vim запускает autocmd для всех типов файлов, кроме
У меня есть Vim autocmd, который удаляет конечные пробелы в файлах перед записью. Я хочу, чтобы это было почти 100% времени, но есть несколько типов файлов, которые я бы хотел отключить. Общепринятая мудрость заключается в том, чтобы перечислить типы файлов, с которыми вы хотите запустить autocmd, в списке, разделенном запятыми, например:
autocmd BufWritePre *.rb, *.js, *.pl
но в этом случае это было бы обременительно.
есть ли способ сопоставить шаблон autocmd со всеми файлами, кроме тех, которые соответствуют шаблону? Я не могу найти эквивалентно не сопоставителю в документах.
3 ответа:
*.rb
Не типа. Это файловый шаблон.ruby
Это тип файла и даже может быть установлен на файлы, которые не имеют
другой выбор одной линии пути:
let blacklist = ['rb', 'js', 'pl'] autocmd BufWritePre * if index(blacklist, &ft) < 0 | do somthing you like
тогда вы можете сделать то, что вам нравится для всех типов файлов, кроме тех, которые находятся в черном списке.
самый простой способ-установить локальную переменную для одного типа файла в true. Затем установите automcommand, если эта переменная является false (если она установлена для всего остального) или если она вообще существует (нет необходимости ее устанавливать).
autocmd BufWritePre *.foo let b:foo=true if !exists("b:foo") autocmd ... endif
изменены префиксы переменных на основе комментария