Pouvez-vous modifier votre .vimrc
et le recharger sans avoir à redémarrer Vim ?
Jetez un coup d'œil à stackoverflow.com/questions/803464/
Pouvez-vous modifier votre .vimrc
et le recharger sans avoir à redémarrer Vim ?
Si vous l'éditez, vous pouvez le recharger avec :
:so %
%
correspond au nom du fichier actuel (voir :h current-file
) et :so
est le diminutif de :source
qui lit le contenu du fichier spécifié et le traite comme du code Vim.
En général, pour recharger le fichier .vimrc actuellement actif, utilisez ce qui suit (cf. Vim quotidien ):
:so $MYVIMRC
:ainsi ~/_vimrc fonctionne sous Windows. Bien sûr, je garde mon _vimrc dans mon répertoire personnel Windows, sinon cela ne fonctionnera pas. Pour voir ce que Vim considère comme votre répertoire personnel, utilisez :echo expand("~")
.
Encore mieux, vous configurez Vim pour qu'il surveille les changements dans votre .vimrc
et recharger automatiquement la configuration.
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
Source : cette réponse sur SO
Remarque : cette méthode particulière tient compte des nombreuses variations des noms de fichiers de configuration de Vim, de sorte qu'elle est compatible avec Vim GUI, Vim Windows, etc.
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>
A automatiquement recharger lors de l'enregistrement, ajoutez ce qui suit à votre fichier $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
puis, pour la dernière fois, tapez :
:so %
La prochaine fois que vous enregistrez votre vimrc
il sera automatiquement rechargé.
Caractéristiques :
:messages
)fugitive://
diff)vim-tiny
Bien sûr, le rechargement automatique ne se produira que si vous modifiez votre vimrc
dans vim.
J'ai une version légèrement différente de ReloadVimrcFunction
" Reloads vimrc after saving it but keep cursor position
if !exists('*ReloadVimrcFunction')
function! ReloadVimrcFunction()
let save_cursor = getcurpos()
source $MYVIMRC | windo redraw
call setpos('.', save_cursor)
echom "Reloaded $MYVIMRC"
endfunction
endif
noremap <silent> <Leader>v :drop $MYVIMRC<cr>
command! -nargs=0 ReloadVimrc :call ReloadVimrcFunction()
nnoremap <silent> <C-s> :call ReloadVimrcFunction()<CR>
Afin d'éviter de charger la fonction deux fois, nous mettons :
if !exists('*ReloadVimrcFunction')
Nous sauvegardons également la position du curseur, car il serait ennuyeux de voir la position du curseur changer à chaque fois que nous rechargeons le système. $MYVIMRC
.
J'ai également un augroup pour déclencher cette fonction chaque fois que je sauvegarde $MYVIMRC
augroup Reload
autocmd!
autocmd BufWritePost $MYVIMRC call ReloadVimrcFunction()
augroup END
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.