Я хочу відредагувати .vimrcфайл із Vim та застосувати їх без перезапуску Vim.
Відповіді:
Так, просто використовуйте :so % команду під час редагування .vimrc.
Якщо ви хочете, щоб vim автоматично перезавантажив вашу конфігурацію, вам слід додати такі команди:
augroup myvimrchooks
au!
autocmd bufwritepost .vimrc source $MYVIMRC
augroup END
групування автокоманди тут, щоб уникнути "експоненційного" перезавантаження, якщо ви кілька разів збережете конфігурацію.
Function Inc already exist, add ! to replace it.
autocmd! bufwritepost .vimrc source ~/.vimrc? Навіть якщо група потрібна з якихось причин, чи не можна пропустити рядок 2, якщо для початку переписати рядок 3 autocmd!?
Ось версія, сумісніша з різними платформами, якщо ви працюєте на Mac / Windows / Linux і gvimrc:
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
Autocmd переглядає всі потенційні *vimrcфайли, і коли один змінюється, він перезавантажує vimrcфайл, а потім, gvimrcякщо працює графічний інтерфейс.
:help gvimrc
$GVIMRCіснує, бо іноді цього немає. if has('gui_running') && filereadable($MYGVIMRC)
au BufWritePost $MYVIMRCчи au BufWritePost $MYVIMRC,$MYGVIMRC?
" 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.
vimв якому я редагую $MYVIMRC. Наприклад, якщо вони знаходяться в іншому терміналі, тоді мені все одно доведеться вручну джерело $MYVIMRC. Чи є спосіб обійти це?
vimвиписує файл. Можливо, можна відстежувати mtime у самому файлі, але не впевнений, як це зробити без асинхронного опитування.
gvimrcабо якщо ваш файл називається_vimrcабоvimrc, або , якщо ви редагуєте файл з ім'ям.vimrcв іншому каталозі. Дивіться мою відповідь для вирішення цих питань.