2009-07-08 5 views
8

VIMで警告を無効にする方法はありますか?VIMで警告を無効にしますか?

特に、ファイルが読み取り専用から書き込み可能に変わったときに、警告12を無効にしたいとします。私はperforceで編集するためにファイルを開くスクリプトを持っていますが、vimはファイルが変更されたと考え、警告を出します。

ありがとうございます。

+0

が無効になります

をオートリードかわった?例えば。ヘッドリビジョンをVIMで開いていない場合は、編集用に開いていると、実際にファイルを最新のものに置き換えようとします。 –

+0

私が使っているコマンド 'p4 edit'は明示的に指示せずに、そのファイルの別のリビジョンには同期しません。 ファイルは、vimの背後に明示的に同期されている場合にのみ変更されます。 –

答えて

6

あなたの.vimrcファイルに次の行を追加します。

セットが、それは時々ファイルが実際に持っていることだろう。これは、「読み取り専用書き込み可能するために、」警告

+1

これには、ファイルを再度読み込むという追加の効果があることに注意してください。 OPsの例ではこれは問題ではありませんが、場合によってはバッファを再読み込みせずに警告を抑制することもできます。 FileChangedROとFileChangedShellのAutocmdでこれを実現できます。 – Charles

10

私は自分の.vimrcに次のものがあります。 2番目のものだけが必要です。ダイアログをポップアップするのではなく、ステータスバーにメッセージをエコーし​​ます。

autocmd FileChangedRO * echohl WarningMsg | echo "File changed RO." | echohl None 
autocmd FileChangedShell * echohl WarningMsg | echo "File changed shell." | echohl None 

詳細については、:help FileChangedShellをお試しください。

2

私はFileChangedROをしばらく使用していましたが、編集を開始するときに自動的にファイルをチェックアウトし、W12警告も迷惑をかけることが判明しました。問題は、p4 editがファイル属性を更新して読み取り専用フラグを削除することです。最初の編集の一環としてファイルも変更した場合、Vimはこれを読み込み専用にしていないため、これをコンフリクトと見なします。ここで私が使用する解決策は、ファイルが他の何らかの理由で外部に変更された場合に、FileChangedShellを使用することについて少し慎重です。

let s:IgnoreChange=0 
autocmd! FileChangedRO * nested 
    \ let s:IgnoreChange=1 | 
    \ call system("p4 edit " . expand("%")) | 
    \ set noreadonly 
autocmd! FileChangedShell * 
    \ if 1 == s:IgnoreChange | 
    \ let v:fcs_choice="" | 
    \ let s:IgnoreChange=0 | 
    \ else | 
    \ let v:fcs_choice="ask" | 
    \ endif 
+0

これは私が探していた、美しい解決策です、ありがとう! – mrkj

関連する問題