1

В моем autocommands есть несколько зависимых от типа .vimrc автокоманд , некоторые из которых связаны с синтаксисом.

Я хотел бы поместить их в отдельный файл по всему моему .vim/ tree, например. некоторый текстовый синтаксис должен быть в .vim/syntax/tex.vim но когда я делаю это, vim уже не замечает .

Я предполагаю, что файлы не читаются автоматически (как я и ожидал). Что я должен делать?

1 ответ1

3

Вы помещали автокоманды в эти отдельные файлы как автокоманды? То есть содержит ли ваш ~/.vim/syntax/tex.vim такие строки,

au FileType tex set expandtab

или это,

au BufRead,BufNewFile *.tex set expandtab

Если так, то это неправильно. Vim получает файлы в каталогах ftplugin, syntax и indent, когда открывается файл с типом файла, соответствующим имени плагина. Если плагин содержит автокоманды, эти автокоманды будут прочитаны и выполнены, но часть команды не будет выполняться до следующего запуска события.

Если вы хотите сделать некоторые настройки, зависящие от типа файла, поместите такую команду в ftplugin для этого типа файла.

setlocal expandtab

Не помещайте его в автокоманду и используйте setlocal а не просто set так, чтобы настройка применялась к буферу, содержащему этот тип файла, и не применялась ко всем вашим буферам Vim.

Увидеть

:help 43.1
:help 41.11

редактировать

Я забыл ответить на другую часть вопроса. В Vim есть три типа зависимых от типов файлов плагинов, которые находятся в трех разных подкаталогах ~/.vim: ftplugin, синтаксис и отступ. Подкаталог indent предназначен для плагинов, которые влияют на отступы определенных типов файлов. Подкаталог синтаксиса предназначен для плагинов, которые влияют на окраску синтаксиса. Ftplugin предназначен для плагинов, которые влияют на параметры поведения, такие как ширина текста, сопоставления, сокращения и тому подобное.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .