vimには開いている設定ファイルがありますが、時々ディスクで変更され、変更は端末に反映されません。ファイルを閉じて再開せずに画面を更新できますか?それでは、どうすればいいですか?
答え1
:edit
ファイル名を指定せずにこのコマンドを使用して、現在のファイルを再ロードできます。ファイルを変更した場合は、
:edit!
現在のファイルを強制的に再ロードできます(修正は失われます)。
このコマンドは:edit
に省略できます:e
。したがって、強制編集は次のように実行できます。:e!
答え2
手動更新ファイルを使用することに加えて、:edit
次のものも使用できます。~/.vimrc
:set autoread
Vim が編集していないすべてのファイルを Vim が自動的に更新するようにします。また見てください:checktime
。
答え3
長い話を短く
あなたの人生をより良くするために追加する行をWrap-up
見るには、タイトルに行きます。vimrc
手動
Vimの外部でバッファが変更されていることを確認してください。 2つのバージョンのファイルが作成されたら、確認して警告します。
自動的に
変更を自動的にロードするには、次の項目を追加しますvimrc
。
ファイルがVimの外部で変更されたがVimの内部で変更されていないことが検出された場合は、そのファイルを自動的に再読み込みします。ファイルが削除されると、この操作は実行されません。
この回答警告を追加します。
!ls
外部コマンド(例:など!sh
)を実行するなどの操作を行わない限り、自動読み取りはファイルを再ロードしません。
ソリューションを入手するには、読んでください。
カーソルが動かないと発生します。
以下に追加しますvimrc
。
au CursorHold,CursorHoldI * checktime
基本的に、カーソルホールドカーソルが4秒間静止してからトリガーされます。これは次の方法で構成できます。更新時間。
バッファ変更または端末フォーカスによってトリガ
変更バッファに次が追加されるとvimrc
発生します。autoread
~へウィム:
au FocusGained,BufEnter * :checktime
一般 vim で端末ウィンドウのフォーカスをキャプチャ
通常のvimで作業するにはFocusGained
(上記を参照)、ターミナルエミュレータ(Xterm、tmuxなど)にプラグインをインストールします。
vim-tmux-focus イベント
tmuxバージョン> 1.9では、以下を追加する必要があります.tmux.conf
。
set -g focus-events on
仕上げる
vimrc
上記のすべてを達成するためにとられたパスは次のとおりです。
" Triger `autoread` when files changes on disk
" https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
" https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI *
\ if mode() !~ '\v(c|r.?|!|t)' && getcmdwintype() == '' | checktime | endif
" Notification after file change
" https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread
autocmd FileChangedShellPost *
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None
ありがとうErichBSchulzが私に正しい方向を教えてくれました。au CursorHold
。
ありがとうこの回答cmdwinの問題を解決するために使用されます。
答え4
これはneovimのLuaのバージョンです:
-- Triger `autoread` when files changes on disk
-- https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
-- https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
vim.api.nvim_create_autocmd({'FocusGained', 'BufEnter', 'CursorHold', 'CursorHoldI'}, {
pattern = '*',
command = "if mode() !~ '\v(c|r.?|!|t)' && getcmdwintype() == '' | checktime | endif",
})
-- Notification after file change
-- https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread
vim.api.nvim_create_autocmd({'FileChangedShellPost'}, {
pattern = '*',
command = "echohl WarningMsg | echo 'File changed on disk. Buffer reloaded.' | echohl None",
})