Как перезагрузить мой vimrc, не покидая Vim?

50

Когда я делаю изменения в моем .vimrc, я обычно выхожу из Vim и открываю его снова. Есть ли более простой способ перезагрузить новые .vimrcизменения?

thameera
источник

Ответы:

47

Бегать:

:source $MYVIMRC

внутри Vim, чтобы перезагрузить vimrcфайл. Или более короткая версия:

:so $MYVIMRC

как упомянуто в комментарии kenorb .

Вы также можете найти полезным сопоставить любую из этих форм с ключом. Например:

nnoremap <Leader>r :source $MYVIMRC<CR>
Пол Гесслер
источник
2
Клавиши быстрого доступа: :so $MYVIMRC.
Кенорб
@kenorb: я добавил эту возможность; спасибо за упоминание этого!
Пол Гесслер
:so $m<Tab> ← очень короткий путь
Аарон Тома
3
Сохраните еще два нажатия клавиш :so %. %устанавливается текущее имя файла буфера, который вы редактируете, в данном случае$MYVIMRC
cbaumhardt
1
Безусловно, самый простой способ сделать это - автоматически перезагрузить vimrc при сохранении - проверьте остальные ответы.
Том Хейл
20

Если вы просто хотите перезагрузить файл время от времени

:source $MYVIMRC

как писал Павел правильно. Если вы часто меняете свой vimrc, вы можете добавить что-то вроде этого в ваш файл vimrc:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

Это перезагрузит файл, когда вы запишите его (из этого сеанса vim)

Johannes
источник
1
Йоханнес: Нужно ли нам редактировать .vimrc через vim, чтобы эта команда автоматически создавала файл?
Саи Манодж Кумар Ядлапати
5
обратите внимание, что файл vimrc также может называться другими способами: например, vimrc (если он находится в ~ / .vim).
user50136
1
@SaiManojKumarYadlapati Да, AS сказал, что это должен быть тот же сеанс vom. Bufwritepost срабатывает, когда vom пишет
johannes
Проблемы с этим: (1) не работает .vim/vimrc, (2) создаст дубликаты autocmds, поэтому каждое последующее сохранение будет медленнее, так как файл будет перезагружен несколько раз, (3) не работает с vim-tiny, который не есть autocmd и по-прежнему используется по умолчанию в некоторых дистрибутивах Linux. Смотрите мой ответ для решения этих проблем.
Том Хейл
2
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

Чтобы автоматически перезагрузить при сохранении, добавьте следующее в ваш $MYVIMRC:

if has ('autocmd') " Remain compatible with earlier versions
 augroup vimrc     " Source vim configuration upon save
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw
  augroup END
endif " has autocmd

и затем в последний раз введите:

:so %

В следующий раз, когда вы сохраните свой файл vimrc, он будет автоматически перезагружен.

Функции:

  • Сообщает пользователю, что произошло (также входит в систему :messages)
  • Обрабатывает различные имена для файлов конфигурации
  • Гарантирует, что он будет соответствовать только фактическому файлу конфигурации (игнорирует копии в других каталогах или fugitive://diff)
  • Не генерирует ошибку при использовании vim-tiny

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

Том Хейл
источник