Solution 1 :
La réponse de Larks est probablement la plus probable. Vous ne souhaiterez peut-être pas changer vos comptes root vi en vim de manière permanente, car si vos ressources sont faibles, vi est presque garanti de toujours fonctionner, je ne suis pas si sûr de vim.
Vous utilisez probablement (couleur)
/usr/bin/vim
sous votre utilisateur normal et
/bin/vi
sous sudo ou root. Vous pouvez vérifier en utilisant :
which vi
une fois sous votre utilisateur normal et l'autre via sudo
sudo which vi
Faites un
man which
si vous avez besoin de plus de détails
Solution 2 :
Sur un système RHEL, /bin/vi
est généralement une version minimale de vim
, sans prise en charge de la coloration syntaxique. /usr/bin/vim
est l'éditeur complet. Il est très probable que dans votre environnement utilisateur, vi
est un alias pour vim
. Essayez ceci :
sudo vim /some/file
Avez-vous maintenant la coloration syntaxique ?
Solution 3 :
Votre vi
est probablement /bin/vi
du paquet vim-minimal
qui ne prend pas en charge la coloration syntaxique. sudo vi
lance /bin/vi
pour vous.
Bash ne développe les alias que sur le premier mot de votre ligne de commande, donc dans :
sudo vi
vi
n'est pas remplacé par vim
même si vous avez défini cet alias.
La solution est de définir un autre alias (pour l'utilisateur invoquant sudo
):
alias sudo='sudo '
Notez l'espace après le deuxième sudo
.
En utilisant ce sudo
, bash fera l'expansion d'alias pour vi
en sudo vi
. Dans le alias
section de Bash doc, il dit :
Si le dernier caractère de la valeur de l'alias est un espace, le mot de commande suivant suivant l'alias est également vérifié pour l'expansion de l'alias.
Après avoir entré votre commande, vous pouvez appuyer sur Ctrl +Alt +E en bash
pour voir le résultat de l'expansion.
Crédits :
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
En aliasant simplement vi
en /root/.bashrc
ne fonctionnera pas.
On peut également noter que vi
n'est pas alias pour root sur certaines distributions dans /etc/profile.d/vim.sh :
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
Changer cela ne résoudra pas non plus le problème.
Solution 4 :
Par défaut dans 5.4 vi est la valeur par défaut. J'ai oublié dans quelle version cela a commencé. Cela ajoutera l'alias nécessaire pour vous :
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
Solution 5 :
j'ai trouvé cela dans ma version de vim (installer avec sudo apt-get install vim
sur debian 7) le syntax on
la commande est définie pour chaque utilisateur dans ~/.vimrc
. cependant, par défaut, l'installation n'a pas créé de /root/.vimrc
fichier pour sudo vi
charger. donc j'ai juste copié ~/.vimrc
dans le /root/
dir et ceci a fait l'affaire :sudo cp ~/.vimrc /root/