Sudoを使用しているときにviで編集しているファイルで構文の強調表示を許可する方法がわかりません。私がSudo vi <filename>
の場合、端末は私の端末設定の白黒のみです。 viで:syntax on
と入力しても、何も変わりません。
vi <filename>
を実行すると、すべての構文が適切に色分けされます。 RHEL 5.4を使用して、関連する環境:
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;
33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;
32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;
32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.Zip=01;
31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;
31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;
35:*.png=01;35:*.tif=01;35:
Shell=/bin/bash
TERM=xterm-color
ラークスの答えがおそらく最もありそうです。 rootアカウントviをvimに永久に変更したくない場合があります。リソースが少ない場合、viは常に機能することがほぼ保証されているため、vimについてはよくわかりません。
あなたはおそらく(色)を使用しています
/usr/bin/vim
通常のユーザーの下で
/bin/vi
sudoまたはrootの下。以下を使用して確認できます。
which vi
一度は通常のユーザーの下に、もう一方はSudoを介して
Sudo which vi
する
man which
詳細が必要な場合
RHELシステムでは、/bin/vi
は通常、vim
の最小バージョンであり、構文の強調表示のサポートはありません。 /usr/bin/vim
はフル機能のエディターです。ユーザー環境では、vi
がvim
のエイリアスである可能性が非常に高いです。これを試して:
Sudo vim /some/file
構文の強調表示を今すぐ取得しますか?
あなたのvi
はおそらく/bin/vi
のvim-minimal
で、構文の強調表示をサポートしていません。 Sudo vi
が/bin/vi
を起動します。
Bashはコマンドラインの最初のWordでのみエイリアス展開を行うので、次のようになります。
Sudo vi
エイリアスを定義しても、vi
はvim
に置き換えられません。
ソリューションは、別のエイリアスを定義します(Sudo
を呼び出すユーザー用):
エイリアスSudo = 'Sudo'
2番目のSudo
の後のスペースに注意してください。
このSudo
を使用すると、bashはSudo vi
のvi
のエイリアス拡張を実行します。 Bash docのalias
セクションには次のように書かれています:
エイリアス値の最後の文字が空白の場合、エイリアスに続く次のコマンドWordでもエイリアス展開がチェックされます。
コマンドを入力した後、 Ctrl+Alt+Ebash
で展開結果を確認します。
クレジット:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-Sudo-with-an-alias
/root/.bashrc
のvi
にエイリアスを設定するだけでは機能しません。
/etc/profile.d/vim.shの一部のディストリビューションでは、ルートのvi
がエイリアスされていないことにも注意してください。
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
[ -x /usr/bin/id ] || return
ID=`/usr/bin/id -u`
[ -n "$ID" -a "$ID" -le 200 ] && return
# for bash and zsh, only if no alias is already set
alias vi >/dev/null 2>&1 || alias vi=vim
fi
これを変更しても問題は解決しません。
デフォルトでは、5.4ではviがデフォルトです。始めたバージョンを忘れています。これにより、必要なエイリアスが追加されます。
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
私のバージョンのvim(debian 7ではSudo apt-get install vim
でインストール)で、syntax on
コマンドが~/.vimrc
でユーザーごとに定義されていることがわかりました。ただし、デフォルトでは、インストールは/root/.vimrc
をロードするためのSudo vi
ファイルを作成しませんでした。だから私は~/.vimrc
を/root/
ディレクトリにコピーしただけで、これがうまくいきました:Sudo cp ~/.vimrc /root/
これは、rootユーザーがvim構成ファイルを持っていないためです。したがって、標準ユーザーのvim構成ファイルをルートディレクトリにコピーするだけです。
Sudo cp -r ~/.vi* /root/
のようなもの。
nb:vim用ではない~/vi*
に対応するファイルがないかどうかを確認します。
1)viではなくvimを実際に使用しているかどうかを確認します(残念ながら、これは新しくインストールされたシステムでは多くの場合デフォルトです)。
2)/etc/vim/vimrc
にsyntax on
という行があることを確認します
3)すべての種類のファイルにデフォルトで使用可能な構文強調情報があるわけではありません...