Как перезагрузить файл .vimrc без перезагрузки vim?

Можете ли вы отредактировать файл .vimrc и перезагрузить его без перезапуска Vim?

493 голоса | спросил ivo 17 PMpSat, 17 Apr 2010 18:18:40 +040018Saturday 2010, 18:18:40

4 ответа


608

Если вы его редактируете, вы можете перезагрузить его с помощью:

:so %

% обозначает текущее имя файла (см. :h current-file) и :so является коротким для :source, который считывает содержимое указанного файла и обрабатывает его как код Vim.

В общем случае, чтобы повторно загрузить текущий активный .vimrc, используйте следующее (см. Daily Vim ):

:so $MYVIMRC
ответил Matteo Riva 17 PMpSat, 17 Apr 2010 18:24:51 +040024Saturday 2010, 18:24:51
76

Еще лучше, вы настраиваете Vim для просмотра изменений в вашем .vimrc и автоматически перезагружаете конфигурацию.

augroup myvimrc
    au!
    au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END

Источник: этот ответ на SO

Примечание. Этот конкретный метод отслеживает множество вариаций имен файлов конфигурации Vim, чтобы он совместим с графическим интерфейсом Vim, Windows Vim и т. д.

ответил Andrei 28 PMpSat, 28 Apr 2012 13:32:28 +040032Saturday 2012, 13:32:28
8

Отображения клавиш

" 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)
  • Обрабатывает различные имена для файлов конфигурации
  • Обеспечивает, что он будет соответствовать только фактическому файлу конфигурации (игнорирует копии в других каталогах или diff fugitive://)
  • Не будет генерировать ошибку при использовании vim-tiny

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

ответил Tom Hale 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 02 Sep 2016 17:12:06 +0300 2016, 17:12:06
4

Альтернатива запоминанию /вводу :so $MYVIMRC - это сопоставление. Он позволяет быстро редактировать vimrc (ev) или исходный vimrc (sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
ответил maged 17 J0000006Europe/Moscow 2015, 13:36:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132