Як ви можете завантажити файл .vimrc без перезавантаження vim?


534

Чи можете ви відредагувати .vimrcфайл та завантажити його без необхідності перезавантажувати Vim?

Відповіді:


661

Якщо ви редагуєте його, ви можете перезавантажити його:

:so %

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

Загалом, для повторного завантаження активного в даний час .vimrc використовуйте наступне (див. Щоденний Vim ):

:so $MYVIMRC

2
Подивіться на stackoverflow.com/questions/803464 / ...
mrucci

36
і :so ~/.vimrcповинні працювати також на UNIX
ВХ

3
: так ~ / _vimrc працює на windows. Звичайно, я зберігаю _vimrc в домашньому каталозі Windows, інакше це не спрацює. Щоб побачити, що Vim вважає вашим домашнім каталогом, скористайтеся :echo expand("~").
Даніель Міладінов

3
Зауважте, що якщо відображення клавіатури вже було, вони не стираються, навіть якщо їх буде видалено з нового vimrc
Phani

Або :so ~/.vim/gvimrcде б ви не поставили це звичайно
NeilG

79

Ще краще, ви налаштовуєте Vim стежити за змінами у вашому .vimrcі автоматично перезавантажувати конфігурацію.

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

Джерело: ця відповідь на ТАК

Примітка. Цей конкретний метод спостерігає за багатьма варіантами імен файлів Vim config, щоб він був сумісний з GUI Vim, Windows Vim тощо.


2
Наскільки вдалий цей метод?
Олексій Магура

Я вважаю, що використання цього виду команди іноді висить мою nvim на кілька секунд або довше.
jdhao

11

Основні відображення

" 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://відмінності)
  • Не вдасться створити помилку при використанні vim-tiny

Звичайно, автоматичне перезавантаження відбудеться лише в тому випадку, якщо ви редагуєте vimrcin vim.


5

Альтернативою запам'ятовуванню / набору тексту :so $MYVIMRCє ці відображення. Це дозволяє швидко редагувати vimrc ( ev) або джерело vimrc ( sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.