Je ne comprends pas comment autoriser la coloration syntaxique dans les fichiers que je modifie via vi lors de l'utilisation de sudo. Lorsque je sudo vi <filename>
le terminal est uniquement en noir et blanc de mes paramètres de terminal. Dans vi si j'entre :syntax on
rien ne change.
Quand j'ai vi <filename>
toute la syntaxe est correctement colorée. En utilisant RHEL 5.4, env pertinent:
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
vi
ne prend pas en charge la couleur, donc tout ce qui montre la couleur est en cours d'exécutionvim
ou similaire.Réponses:
La réponse des alouettes est probablement la plus probable. Vous ne souhaiterez peut-être pas changer vos comptes root vi en vim de façon permanente, comme si vos ressources sont faibles vi est presque garanti de toujours fonctionner, je ne suis pas sûr de vim.
Vous utilisez probablement (couleur)
sous votre utilisateur normal et
sous sudo ou root. Vous pouvez vérifier en utilisant:
une fois sous votre utilisateur normal et l'autre via sudo
Fait une
si vous avez besoin de plus de détails
la source
Sur un système RHEL, il
/bin/vi
s'agit généralement d'une version minimale devim
, 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
soit un alias pourvim
. Essaye ça:Obtenez-vous la coloration syntaxique maintenant?
la source
Votre
vi
est probablement/bin/vi
du packagevim-minimal
qui ne prend pas en charge la coloration syntaxique.sudo vi
se lance/bin/vi
pour vous.Bash ne fait que l'extension d'alias sur le premier mot de votre ligne de commande, donc dans:
vi
n'est pas remplacévim
même si vous avez défini cet alias.La solution est de définir un autre alias (pour l'utilisateur invoquant
sudo
):Notez l'espace après la seconde
sudo
.En utilisant cela
sudo
, bash fera une extension d'alias pourvi
insudo vi
. Dans laalias
section du doc Bash, il est écrit:Après avoir entré votre commande, vous pouvez appuyer sur Ctrl+ Alt+ Een
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
Aliasing simplement
vi
en/root/.bashrc
ne fonctionnera pas.Il peut également être noté qu'il
vi
n'est pas aliasé pour root sur certaines distributions dans /etc/profile.d/vim.sh:Changer cela ne résoudra pas non plus le problème.
la source
Par défaut dans 5.4 vi est par défaut. J'ai oublié la version qui a commencé. Cela ajoutera l'alias nécessaire pour vous:
la source
j'ai constaté que dans ma version de vim (installer avec
sudo apt-get install vim
sur debian 7) lasyntax on
commande est définie sur une base par utilisateur dans~/.vimrc
. cependant, par défaut, l'installation n'a pas créé de/root/.vimrc
fichiersudo vi
à charger. donc je viens de copier~/.vimrc
dans le/root/
répertoire et cela a fait l'affaire:sudo cp ~/.vimrc /root/
la source
C'est parce que votre utilisateur root n'a pas de fichier de configuration vim. il vous suffit donc de copier votre fichier de configuration standard de l'utilisateur vim dans le répertoire racine.
sudo cp -r ~/.vi* /root/
quelque chose comme ca.nb: vérifiez si vous n'avez pas de fichier correspondant à
~/vi*
ce qui n'est pas pour vim.la source
1) Vérifiez si vous utilisez vraiment vim et non vi (qui est malheureusement souvent par défaut sur les nouveaux systèmes installés)
2) Vérifiez que vous avez
/etc/vim/vimrc
la lignesyntax on
3) Tous les types de fichiers ne disposent pas d'informations de mise en évidence de la syntaxe par défaut ....
la source
Pour ceux qui recherchent toujours de l'aide, essayez ces commandes.
sudovi = which sudo vi
usrvi = which vi
Autrement...
mv $sudovi $sudovi.save
ln -s $usrvi $sudovi
(lien symbolique)la source