web-dev-qa-db-ja.com

.vimrcでSudoを使用する

CentOSを使用しており、.vimrcディレクトリに/homeファイルを作成しました。私はtxtファイルを作成してテストしましたが、そうです。 SELinuxがオンになっている/srvディレクトリにプロジェクトファイルがあります。ファイルを開こうとしました:vim README.txtとはい、.vimrcの設定がまだ適用されています。

今、私は/srvディレクトリにいるので、単にvimを実行すると、ファイルは読み取り専用になります。そのため、ファイルを編集できるようにするためにSudo vim README.txtを実行します。ここで問題は、Sudoを実行すると、.vimrcの設定がまったく適用されないことです。 .vimrcフォルダに/srvのコピーを作成しようとしましたが、それも機能しませんでした。

Sudoの使用中に.vimrc設定を適用するにはどうすればよいですか?

45
noblerare

Sudo vimの代わりにsudoeditを使用してください。とにかくそうすべきです。 EDITOR環境変数がvimに設定されていることを確認してください(おそらくすでに設定されているか、vimがデフォルトです。必要に応じて.profileアナログで設定できますあります)。

75
Explosion Pills

here のように、以下を使用できます。

Sudo -E vim README.txt

Manページから:

-E    The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables.  The
  security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.

受け入れられた答えが最も安全です。ただし、これはSudo -E operationを任意の操作で使用できるため、より柔軟であり、事前に他の設定を行う必要はありません。

24
leetNightshade

他の応答で提示された解決策は機能しますが、ファイルを編集するたびにパスワードを入力する必要があるため、あまり実用的ではありません。

私は通常tmuxセッションを開いており、その中でSudo suを介してルートされているので、セッションの最初に一度パスワードを入力すると、再度入力しなくても何時間も作業できます。

次のシンボリックリンクを作成することにより、ここで提示された問題を回避しました:Sudo su ln -s /home/MY-USER-NAME/.vimrc .vimrc ln -s /home/MY-USER-NAME/.vim .vim

最初に/root/.vim/ディレクトリを削除する必要がある場合があります。

これが役に立てば幸い

2

/root/.vimrcはSudo vimの作業ディレクトリです。

/ home/ec2-user/.vimrcから/ root/.vimrcに.vimrcファイルをコピーする必要があります

1
Yizhao He