web-dev-qa-db-ja.com

vimdiffに相当するsudoeditはありますか?

ルート所有のファイルをSudo vimではなくsudoeditで編集する習慣を身につけようとしています。これにはいくつかの利点がありますが、その1つは、ユーザーの~/.vimrcを使用することです。

Sudo vimdiffを使用する代わりに、同等のものはありますか?

私が試したこと

  • vimdiffを直接使用する代わりに、2つのファイルを垂直分割で開き、両方で:diffthisを実行できます。ただし、1つのファイルをsudoeditで開くと、sudoedit/var/tmpにこのファイルのコピーを自動的に作成するのではなく、2番目のファイルを直接開く必要があります。
  • vim -O file1 file2を使用して、ファイルを分割して直接開くこともできます。ただし、当然のことながら、sudoedit -Oは失敗します。
1
Sparhawk

実行するエディターを決定するために、Sudoは3つの環境変数(Sudo_EDITORVISUAL、およびEDITOR)を(順番に)チェックし、最初に見つかったエディターを使用します。 (見つからない場合は、デフォルトにフォールバックします。)

したがって、次のように、vimの代わりにvimdiffを実行させることができます。

$ VISUAL=vimdiff sudoedit file1 file2

Sudoersポリシーで特定のファイルのみを編集できる場合、これは失敗する可能性があります。その場合、パラメーターを追加できます。

$ VISUAL='vimdiff file1' sudoedit file2

その場合、通常のユーザーとしてfile1を読み取ることができると想定していますが、file2を読み取るにはrootアクセスが必要です。

(私はVISUALを使用しています。これは、私が慣れているためです。代わりにSudo_EDITORを自由に使用してください。)

6
Jander

これは厄介な解決策です。お気軽に最適化してください!おそらくこれは~/vimrcで機能する可能性がありますか?

sudoeditで両方のファイルを開きます

$ sudoedit file1 file2

1つのバッファを垂直に分割

:vsp | b2

各ウィンドウで、

:diffthis
1
Sparhawk