Vim запускает autocmd для всех типов файлов, кроме


У меня есть Vim autocmd, который удаляет конечные пробелы в файлах перед записью. Я хочу, чтобы это было почти 100% времени, но есть несколько типов файлов, которые я бы хотел отключить. Общепринятая мудрость заключается в том, чтобы перечислить типы файлов, с которыми вы хотите запустить autocmd, в списке, разделенном запятыми, например:

autocmd BufWritePre *.rb, *.js, *.pl

но в этом случае это было бы обременительно.

есть ли способ сопоставить шаблон autocmd со всеми файлами, кроме тех, которые соответствуют шаблону? Я не могу найти эквивалентно не сопоставителю в документах.

3 60

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

изменены префиксы переменных на основе комментария