1

В значительной степени название. Когда я редактирую свой файл vimrc нем есть строка

call pathogen#infect()

изменения не вступят в силу, пока я не перезапущу vim. Это верно, даже если у меня нет папки bundle в ~/.vim , и если эта строка находится в конце или начале файла vimrc . Я думаю, что это не должно быть так, так что происходит?

Изменить, чтобы очистить вещи:

Я пытаюсь перезагрузить файл .vimrc используя :source $MYVIMRC что успешно, когда я пытаюсь это сделать без строки pathogen .

Редактировать: некоторые детали

Это на недавно установленном Linux mint, и проблема возникла при моих различных попытках :noremap и :iabbreviate команды. Команды, которые изменяют внешний вид (например, set number кажется, работает)

Изменить: еще некоторые детали

Вот пример чего-то, что не работает с моим файлом .vimrc

:set number! " To indicate that I do reload the file

" replacing gamma with \gamma, was here when opened gvim
:autocmd FileType tex :iabbrev <buffer> gamma \gamma
" replacing lambda with \lambda added after launching gvim
:autocmd FileType tex :iabbrev <buffer> lambda \lambda

call pathogen#infect()

Добавление лямбда-файла, а затем запуск source ~/.vimrc с открытым tex файлом в фоновом режиме не дали никакого эффекта при наборе lambda . Я должен был перезапустить gvim.

2 ответа2

2

Ваша непосредственная проблема

Правая часть автокоманды выполняется, когда запускается разработанное событие.

В вашем случае событие FileType запускается, когда Vim определяет тип файла буфера, что обычно происходит при создании нового буфера.

Поскольку ваш файл уже загружен, когда вы делаете :source ~/.vimrc , ни одна из ваших пользовательских автокоманд не выполняется. Чтобы они применились к текущему буферу, вам необходимо принудительно перезагрузить :edit .

Более широкая проблема

Добавление FileType FileType в ваш vimrc не очень хорошая идея, потому что Vim уже делает всю работу за вас! Когда он решает, что текущий буфер имеет tex FileType, Vim немедленно пытается найти каждый файл tex.vim который он может найти в следующих каталогах, в следующем порядке:

1. ~/.vim/ftplugin/
2. $VIMRUNTIME/ftplugin/
3. ~/.vim/after/ftplugin/

Так как Vim все равно пытается получить исходные файлы, нет необходимости добавлять второй (и третий, и четвертый ...) чек в ваш vimrc . Один из тех файлов, где вы должны поместить свои пользовательские настройки и сопоставления.

Первый, ~/.vim/ftplugin/tex.vim , поставляется перед глобальным ftplugin и поэтому может быть переопределен. Этот файл не является безопасным местом для ваших настроек.

Изменение глобального ftplugin, $VIMRUNTIME/ftplugin/tex.vim , - это большая проблема , нет-нет (обновление не сохранится, работа не гарантируется, могут потребоваться права администратора и т.д.).

Это оставляет нам последний, ~/.vim/after/ftplugin/tex.vim , идеальное место для ваших пользовательских tex отображений:

iabbrev <buffer> gamma \gamma
iabbrev <buffer> lambda \lambda
1

Я не уверен, как ваша проблема связана с патогеном, но вы должны проверить следующие моменты:

  1. Если вы намереваетесь перезагрузить ваш vimrc, вы должны использовать группы autocmd, как описано в :help autocmd-groups . В текущей форме ваше событие FileType будет быстро загромождено - попробуйте перезагрузить ваш vimrc несколько раз, а затем выполните :au FileType tex .

  2. Обратите внимание, что вы не создаете аббревиатуры напрямую, а создаете автокоманды, которые, в свою очередь, создают аббревиатуры. Простого обновления vimrc недостаточно, необходимо выполнить автокоманды для обновления ваших отображений / сокращений. Вы, вероятно, не видите обновления, потому что событие Filetype обычно запускается один раз для данного буфера. Вы можете проверить это, включив команду echom в автокоманду (кстати, : в начале различных строк в вашем vimrc не имеет смысла; если они вам действительно нравятся, вы должны включить их в call pathogen... чтобы быть последовательными ). Вы можете попробовать удалить буфер :bd а затем снова открыть его или просто снова установить тип файла (:set ft=tex ).

  3. Когда вы намереваетесь изменить поведение для определенного типа файла, вы можете избежать загромождения вашего vimrc, создав файл в вашем каталоге after, как объяснено в :h after-directory . Для вашего примера создайте файл ~ / .vim / after / ftplugin / tex.vim, содержащий конкретные сопоставления / сокращения.

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