vim sudo hackが自動的に再ロードされます。

vim sudo hackが自動的に再ロードされます。

私はvimの最新バージョンをインストールし、それにエイリアスを設定し、そのバージョンを呼び出すようにエイリアスvimを設定しました。

また、sudoでファイルを編集する必要があるときにシステムのデフォルトのviを呼び出すことができるようにsudoにエイリアスを割り当てましたが、これには2つの問題があります。主にviのシステムバージョンには構文強調機能はありません。時にはファイルをvimし、ファイルがアクティブになっている間にいくつかの小さなテストを実行したいのですが、vimを終了してviに移動する必要があります。これは遅いワークフローです。

私が見つけたこのリンクこれは、vimで現在の構文を強調し、特別なコマンドを使用してファイルをsudoとして保存できる素晴らしいsudo核を説明します。

cnoremap w!! w !sudo /usr/bin/tee > /dev/null %

本当にうまくいきますが、問題が発生しました。

コマンドを実行すると、常にこの出力が表示されます。

:w !sudo /usr/bin/tee > /dev/null %

W12: Warning: File "../lid.sh" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File: 

例:ヘルプW12内容:

  Warning: File "{filename}" has changed and the buffer was changed in Vim as well

Like the above, and the buffer for the file was changed in this Vim as well.
You will have to decide if you want to keep the version in this Vim or the one
on disk.  This message is not given when 'buftype' is not empty.

自動読み取りヘルプの内容:

「自動読み取り」 「いいえ」 「自動で読まない」 「ノーアル」'autoread' 'ar' ブール (デフォルト) グローバルまたはローカル buffer|global-local|ファイルが Vim の外部で変更されたが Vim の内部で変更されていないことが検出された場合は、ファイルを自動的に再読み込みします。ファイルが削除されると、この操作は実行されません。 |Timestamp|このオプションにローカル値がある場合は、このコマンドを使用してグローバル値を使用するように切り替えます。> :set autoread<

私は.vimrcにありますが、うまく:set autoreadいかないようです。毎回ファイルを再読み込みできるかどうかを確認するメッセージが表示され続けます。

毎回手動で受け入れることなくファイルを再読み込みすることをどのように選択できますか?タイピング:来て! !必ず必要な場合でなければやらないほど長い命令です。

ベストアンサー1

これをvimrcファイルに追加して問題を解決しました。

cnoremap w!! call SudoSaveFile()

function! SudoSaveFile() abort
  execute (has('gui_running') ? '' : 'silent') 'write !env SUDO_EDITOR=tee sudo -e % >/dev/null'
  let &modified = v:shell_error
endfunction

おすすめ記事