編集中のファイルが変更されたときにvimが自動的に通知するようにするにはどうすればよいですか?


7

友人と私が同時に同じファイルで作業している状況があります。

上書きしようとすると、ファイルが変更されたかどうかがVimから通知されます。保存する前に、ファイルが変更されるとすぐに、vimから通知されますか?


両方が同じ行を変更した場合、どうしますか?
Martin Tournoij 2015年

@Carpetsmokerうーん...難しい。多分それはちょうどメッセージか何かをポップアップすることができます。私はそれについての提案を受け入れます。
疑問符

しかし、あなたが期待している望ましい行動は何でしょうか?Vimが変更をリロードするだけでなく、実際にデスクトップポップアップメッセージのようなものを表示するか、Vimが変更を自動的にリロードして警告メッセージを表示しないようにして、何をするかを決定させますか?
Javier Scappini 2015年

@JavierScappiniどちらか。私はそんなにうるさくない。変更を自動的にロードするのはクールだと思います...
疑問符

ここでの私の答えには、autoread設定とその制限に関する情報があります...おそらくこれはこの質問の答えでもありますか?
Martin Tournoij 2015年

回答:


5

autoreadオプションを試しましたか?から:help 'autoread'

ファイルがVimの外部で変更されたことが検出され、Vimの内部で変更されていない場合は、自動的に再度読み取ります。


autoreadかなり制限されていることに注意してください。特定のイベントが発生したときにファイルが変更されているかどうかを確認するだけです。こちらの私の回答もご覧ください
Martin Tournoij、2015年

3

この質問はStackOverflowで回答されています:Vimの自動読み取りはどのように機能しますか?

解決策1

Vim Wikiaページの説明に従ってくださいファイルが外部で変更されたかどうかをVimに自動的にチェックさせます。このソリューションでは、vimrcファイルに関数を追加し、監視するバッファで新しいコマンドを呼び出す必要があります。

解決策2

この解決策は、上記でリンクした質問で@GregSextonによって提案されました。アイデアは、次のいずれかが発生するたびに変更チェックを強制することです。

  • バッファに入る。
  • 'updatetime'のキーが押されていません
  • カーソルが移動しました。

これを実装するコードを以下に示します。

augroup checktime
    au!
    if !has("gui_running")
        "silent! necessary otherwise throws errors when using command
        "line window.
        autocmd BufEnter        * silent! checktime
        autocmd CursorHold      * silent! checktime
        autocmd CursorHoldI     * silent! checktime
        "these two _may_ slow things down. Remove if they do.
        autocmd CursorMoved     * silent! checktime
        autocmd CursorMovedI    * silent! checktime
    endif
augroup END

autocmdワークフローに最適なように追加または削除します。使用できるイベントの一覧はこちらご覧ください。

場合は自動読取りをも有効になっている変更されていない場合、ファイルが自動的に読み込まれます。

set autoread
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.