7

vim について聞く前は、gedit を使用していました。私はまだ vim を gedit と同じように動作させようとしています。これは、StackOverflow で vim に関連する多くの質問をしたためです。

The file <file_location> changed on disk. Do you want to reload the file?私が見逃している機能の 1 つは、別のアプリケーションによって gedit でファイルを操作しているときにファイルが変更されたときReloadですCancel


私が欲しいもの:

(gvim ではなく vim を使用していることに注意してください) vim にも同様の機能が必要です。ディスク上でファイルが変更された場合、ステータスバーに警告メッセージが表示されます。

File changed, press F9 to reload.

F9私は自分のやるべきことをマッピングします:e

4

2 に答える 2

6

が設定されている場合autoread、vimは、各シェルコマンド(:!)の後、ファイルの書き込み時、および発行時にファイルが変更されているかどうかを確認します:checktime。さらに、gvimは、ウィンドウフォーカスをアプリケーションに切り替えるときにチェックします。

http://vim.wikia.com/wiki/Timer_to_execute_commands_periodically:checktimeのレシピを使用して定期的に実行できます。

autocmd CursorHold * call Timer()
function! Timer()
    call feedkeys("f\e")
    checktime
endfunction
set updatetime=5000  " milliseconds

警告を出力するには、autocmdFileChangedShellを設定します(ファイルの変更を検出し、ファイルのリロードを提案します)。

autocmd FileChangedShell * echo "File changed, press F9 to reload."

挿入モードの場合は、次を使用しますCursorHoldI(このフィードキーのシーケンスについてはわかりませんが、機能しているようです)。

autocmd CursorHoldI * call TimerI()
function! TimerI()
    call feedkeys("\<C-R>\e")
    checktime
endfunction

挿入モードでは印刷されないと思うので、 FileChangedShellautocmdをからechoに変更する必要があるかもしれません。echoeecho

于 2012-08-23T12:53:56.203 に答える
0

Vimを別のエディターのように動作させようとするのは無意味な作業です。私は(TextMateをモデルとして)その罪を犯してきましたが、それは完全な失敗であり、学習曲線の障害でもありました。

ただし、要求しているのは(外部変更の通知)、デフォルトの動作であり、で元に戻すことができます:set autoread

于 2012-08-23T12:29:53.030 に答える