GNU/Linux >> Linux の 問題 >  >> Linux

sudo vi <filename> を実行しても構文が強調表示されないのはなぜですか?

解決策 1:

ラークスの答えはおそらく最も可能性が高いです。 root アカウント vi を vim に永久に変更したくない場合があります。リソースが少ない場合、vi はほぼ常に動作することが保証されていますが、vim についてはよくわかりません。

おそらく (色) を使用しています

/usr/bin/vim 

通常のユーザーと

の下で
/bin/vi

sudo または root の下。以下を使用して確認できます。

which vi

1 回は通常のユーザーの下で、もう 1 回は sudo 経由で

sudo which vi

する

man which 

詳細が必要な場合

解決策 2:

RHEL システムでは、/bin/vi 通常、vim の最小バージョンです 、構文の強調表示はサポートされていません。 /usr/bin/vim フル機能のエディターです。あなたのユーザー環境では vi である可能性が非常に高いです vim のエイリアスです .これを試してください:

sudo vim /some/file

シンタックス ハイライトは表示されますか?

解決策 3:

あなたの vi おそらく /bin/vi です パッケージ vim-minimal から 構文の強調表示をサポートしていません。 sudo vi /bin/vi を起動します

Bash は、コマンド ラインの最初の単語でのみエイリアス展開を行うため、次のようになります。

sudo vi

vi vim に代入されません そのエイリアスが定義されていても。

解決策 別のエイリアスを定義する (sudo を呼び出すユーザー用) ):

<ブロック引用>

alias sudo='sudo'

2 番目の sudo の後のスペースに注意してください .

この sudo を使用する 、bash は vi のエイリアス展開を行います sudo vi で . alias で Bash doc のセクションには次のように書かれています:

<ブロック引用>

エイリアス値の最後の文字が空白の場合、エイリアスに続く次のコマンド ワードもエイリアス展開のためにチェックされます。

コマンドを入力したら、 Ctrl を押すことができます +Alt +E bash で 拡張結果を表示します。

クレジット:

https://bbs.archlinux.org/viewtopic.php?id=36796

http://www.shellperson.net/using-sudo-with-an-alias

単純に vi をエイリアシングする /root/.bashrc で 動作しません。

vi であることにも注意してください。 一部のディストリビューションでは、/etc/profile.d/vim.sh で root のエイリアスが設定されていません:

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

これを変更しても問題は解決しません。

解決策 4:

5.4 ではデ​​フォルトで vi がデフォルトです。どのバージョンで開始されたか忘れました。これにより、必要なエイリアスが追加されます:

cat <<_EOF >>/root/.bashrc

alias "vi"="/usr/bin/vim"
_EOF

解決策 5:

私のバージョンのvimでそれを見つけました(sudo apt-get install vimでインストールします Debian 7 では syntax on コマンドは ~/.vimrc でユーザーごとに定義されています .ただし、デフォルトでは、インストールは /root/.vimrc を作成しませんでした sudo vi のファイル ロードします。 ~/.vimrc をコピーしました /root/ に dir とこれはトリックを行いました:sudo cp ~/.vimrc /root/


Linux
  1. なぜCdはプログラムではないのですか?

  2. sudo:コマンドが見つかりません

  3. Linux/POSIX に lchown があるのに lchmod がないのはなぜですか?

  1. SudoとSuを介して実行すると、パス変数が異なるのはなぜですか?

  2. sudoがエイリアスを無視するのはなぜですか?

  3. ユーザーをグループに追加しますが、ID を実行すると反映されません

  1. sudo:bundle コマンドが見つからないのはなぜですか?

  2. sudo の使用時にコマンドが見つからない

  3. 4.0 GiB が確実にあるのに、システムが 3.2 GiB の RAM しか表示しないのはなぜですか