Solución 1:
La respuesta de Larks es probablemente la más probable. Es posible que no desee cambiar sus cuentas raíz vi a vim de forma permanente, ya que si sus recursos son bajos, casi se garantiza que vi funcione siempre, no estoy tan seguro acerca de vim.
Probablemente estés usando (color)
/usr/bin/vim
bajo su usuario normal y
/bin/vi
bajo sudo o root. Puede verificar usando:
which vi
una vez bajo su usuario normal y la otra vía sudo
sudo which vi
Haz un
man which
si necesita más detalles
Solución 2:
En un sistema RHEL, /bin/vi suele ser una versión mínima de vim , sin ningún soporte de resaltado de sintaxis. /usr/bin/vim es el editor completo. Es muy probable que en tu entorno de usuario, vi es un alias para vim . Prueba esto:
sudo vim /some/file
¿Obtienes resaltado de sintaxis ahora?
Solución 3:
Tu vi es probablemente /bin/vi del paquete vim-minimal que no admite el resaltado de sintaxis. sudo vi lanza /bin/vi para ti.
Bash solo hace la expansión de alias en la primera palabra en su línea de comando, así que en:
sudo vi
vi no se sustituye por vim incluso si tiene definido ese alias.
La solución es definir otro alias (para el usuario que invoca sudo ):
alias sudo='sudo'
Tenga en cuenta el espacio después del segundo sudo .
Usando este sudo , bash hará una expansión de alias para vi en sudo vi . En el alias sección de Bash doc dice:
Si el último carácter del valor del alias está en blanco, la siguiente palabra de comando que sigue al alias también se comprueba para la expansión del alias.
Después de ingresar su comando, puede presionar Ctrl +Alt +E en bash para ver el resultado de la expansión.
Créditos:
https://bbs.archlinux.org/viewtopic.php?id=36796
http://www.shellperson.net/using-sudo-with-an-alias
Simplemente alias vi en /root/.bashrc no funcionará.
También se puede señalar que vi no tiene alias para root en algunas distribuciones en /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
Cambiar esto tampoco resolverá el problema.
Solución 4:
Por defecto en 5.4 vi es por defecto. Olvidé en qué versión comenzó. Esto agregará el alias necesario para usted:
cat <<_EOF >>/root/.bashrc
alias "vi"="/usr/bin/vim"
_EOF
Solución 5:
encontré eso en mi versión de vim (instalar con sudo apt-get install vim en debian 7) el syntax on El comando se define por usuario en ~/.vimrc . sin embargo, de forma predeterminada, la instalación no creó un /root/.vimrc archivo para sudo vi cargar. así que copié ~/.vimrc en el /root/ dir y esto hizo el truco:sudo cp ~/.vimrc /root/