Lösung 1:
Larks Antwort ist wahrscheinlich die wahrscheinlichste. Vielleicht möchten Sie Ihre Root-Konten nicht dauerhaft von vi zu vim ändern, da Ihre Ressourcen niedrig sind. vi funktioniert fast garantiert immer, bei vim bin ich mir nicht so sicher.
Sie verwenden wahrscheinlich (Farbe)
/usr/bin/vim
unter Ihrem normalen Benutzer und
/bin/vi
unter sudo oder root. Sie können dies überprüfen, indem Sie Folgendes verwenden:
which vi
einmal unter Ihrem normalen Benutzer und das andere über sudo
sudo which vi
Mach ein
man which
wenn Sie weitere Details benötigen
Lösung 2:
Auf einem RHEL-System /bin/vi
ist normalerweise eine minimale Version von vim
, ohne Syntaxhervorhebungsunterstützung. /usr/bin/vim
ist der voll funktionsfähige Editor. Es ist sehr wahrscheinlich, dass in Ihrer Benutzerumgebung vi
ist ein Alias für vim
. Versuchen Sie Folgendes:
sudo vim /some/file
Bekommst du jetzt Syntax-Highlighting?
Lösung 3:
Ihr vi
ist wahrscheinlich /bin/vi
aus Paket vim-minimal
die keine Syntaxhervorhebung unterstützt. sudo vi
startet /bin/vi
für dich.
Bash führt die Alias-Erweiterung nur beim ersten Wort in Ihrer Befehlszeile durch, also in:
sudo vi
vi
wird nicht durch vim
ersetzt auch wenn Sie diesen Alias definiert haben.
Die Lösung wird ein weiterer Alias definiert (für den Benutzer, der sudo
aufruft ):
alias sudo='sudo '
Beachten Sie das Leerzeichen nach dem zweiten sudo
.
Verwenden Sie diesen sudo
, führt bash eine Aliaserweiterung für vi
durch in sudo vi
. Im alias
Abschnitt des Bash-Dokuments heißt es:
Wenn das letzte Zeichen des Alias-Wertes ein Leerzeichen ist, dann wird auch das nextcommand-Wort nach dem Alias auf Alias-Expansion geprüft.
Nachdem Sie Ihren Befehl eingegeben haben, können Sie Strg drücken +Alt +E in bash
um das Ergebnis der Erweiterung zu sehen.
Danksagungen:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Aliasing einfach vi
in /root/.bashrc
wird nicht funktionieren.
Es kann auch darauf hingewiesen werden, dass vi
wird auf einigen Distributionen in /etc/profile.d/vim.sh nicht als Root bezeichnet:
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
Auch eine Änderung wird das Problem nicht lösen.
Lösung 4:
Standardmäßig in 5.4 ist vi default. Ich habe vergessen, in welcher Version das gestartet wurde. Dies fügt den erforderlichen Alias für Sie hinzu:
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
Lösung 5:
Ich habe das in meiner Version von vim gefunden (mit sudo apt-get install vim
installieren auf debian 7) der syntax on
Der Befehl wird auf Benutzerbasis in ~/.vimrc
definiert . jedoch hat die Installation standardmäßig keinen /root/.vimrc
erstellt Datei für sudo vi
Laden. also habe ich einfach ~/.vimrc
kopiert in den /root/
dir und das hat es geschafft:sudo cp ~/.vimrc /root/