Vimを再起動しなくても、.vimrc
ファイルを編集してリロードすることはできますか?
568 ivo 2010-04-17
編集してるならリロードでいいよ
:so %
%
は現在のファイル名(:h current-file
参照)、:so
は:source
の略で、指定したファイルの内容を読み込んでVimのコードとして扱います
一般的に、現在アクティブな .vimrc を再読み込みするには、以下のようにします (Daily Vim を参照してください)
:so $MYVIMRC
705 Matteo Riva 2010-04-17
さらに良いのは、.vimrc
の変更を監視し、自動的に設定をリロードするようにVimを設定することです
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
ソースです。SO上のこの回答
注意: この特定のメソッドは、GUI Vim、Windows Vimなどと互換性があるように、Vimの設定ファイル名のバリエーションの多さに注目しています
80 Andrei 2012-04-28
Key mappings
" 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
を保存すると、自動的にリロードされます
Features:
- 何が起こったかをユーザに伝える (
:messages
にもログを記録する) - 設定ファイルの様々な名前を扱います
- 実際の設定ファイルにのみマッチすることを保証します (他のディレクトリのコピーや
fugitive://
の差分は無視します) vim-tiny
を使用してもエラーが発生しない
もちろん、自動リロードはvimでvimrc
を編集した場合のみ発生します
11 Tom Hale 2016-09-02
:so $MYVIMRC
を覚えたりタイプしたりする代わりに、これらのマッピングがあります。これにより、vimrc (ev
) やソース vimrc (sv
) を素早く編集することができます
" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>
nnoremap <leader>sv :source $MYVIMRC<CR>
5 maged 2015-06-17
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>
関数を二度読みしないようにするために、このように設定しています
if !exists('*ReloadVimrcFunction')
また、$MYVIMRC
をリロードするたびにカーソルの位置が変わるのは煩わしいので、カーソルの位置も保存しています
また、$MYVIMRCを保存するたびにこの関数を起動するためのaugroupを持っています
augroup Reload
autocmd!
autocmd BufWritePost $MYVIMRC call ReloadVimrcFunction()
augroup END
0 SergioAraujo 2020-10-15