Seu vi
é provavelmente /bin/vi
do pacote vim-minimal
, que não suporta realce de sintaxe. sudo vi
lança /bin/vi
para você.
Bash só faz expansão de alias na primeira palavra na sua linha de comando, portanto em:
sudo vi
vi
não é substituído a vim
mesmo se você tiver esse alias definido.
A solução define outro alias (para o usuário invocando sudo
):
alias sudo='sudo '
Observe o espaço após o segundo sudo
.
Usando esse sudo
, o bash fará a expansão do alias para vi
em sudo vi
. Na seção alias
do Bash doc, diz:
If the last character of the alias value is a blank, then the next
command word following the alias is also checked for alias expansion.
Depois de inserir seu comando, você pode pressionar Ctrl + Alt + E em bash
para ver o resultado da expansão.
Créditos:
link
link
O aliasing vi
in /root/.bashrc
não funciona.
Pode-se notar também que vi
não é aliado para root em algumas distros em /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
A alteração também não resolve o problema.