Перезагрузите .vimrc в Vim без перезагрузки

93

Меня беспокоит, когда я что-то записал, .vimrcи мне нужно сначала закрыть это и открыть, чтобы применить мои изменения. Есть ли способ перезагрузить .vimrcVim, не закрывая его?

Например , я добавил set nuк ~/.vimrcи я хочу , номера строк будут появляться для всех моих окон и буферов.

Nemoden
источник

Ответы:

129

:source ~/.vimrc

Запустите это изнутри VIM, который будет применять ваш .vimrc

вперемежку

:source $MYVIMRC

вольнодумцем
источник
18

Вот один для потомков. Добавьте следующее в ваш .vimrc:

map <leader>vimrc :tabe ~/.vim/.vimrc<cr>
autocmd bufwritepost .vimrc source $MYVIMRC

Первая строка означает, что вы можете открыть свой vimrc из любого буфера vim, напечатав ваш лидер, а затем написав «vimrc». Например, мой лидер настроен на запятую, поэтому, если я нахожусь в режиме редактирования и набираю «, vimrc», он открывает мой vimrc в новой вкладке.

Вторая строка автоматически отправляет изменения в ваш vimrc, когда вы сохраняете и закрываете его. Это магия.

декан
источник
1
В идеале вы не хотите map <leader>vimrc :tabe $MYVIMRC<cr>соответствовать autocmd?
Ник Бисби
@NickBisby Для меня ~/.vimrcэто просто заглушка, с ~/.vim/.vimrcкоторой можно исходить , чтобы я мог держать все под контролем исходного кода. Для большинства людей вы правы, это было бы :tabe $MYVIMRC<cr>.
Декан
1
В качестве альтернативы вы можете использовать символическую ссылку на ваш фактический файл .vimrc вместо того, чтобы он был заглушкой.
Спойк
Как я могу перезагрузить vimrc без изменения положения моего курсора?
SergioAraujo
15

:so %

если в данный момент редактируем .vimrc

storypixel
источник
4
" 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.

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