Por padrão e por motivos de segurança, sudo
não preserva o ambiente do usuário.
Existem várias maneiras de lidar com isso; Para o seu caso específico, recomendo adicionar VISUAL=/usr/bin/vim
(e EDITOR=/usr/bin/vim
para programas que usam o errado) em /etc/environment
.
Segunda escolha, se você tiver uma configuração de sudo permissiva (talvez porque seja apenas você, ou todos os sudoers têm acesso de raiz real), execute visudo
e adicione Defaults env_keep="VISUAL EDITOR"
para permitir que todos os sudoers especifiquem seus próprios preservar essa variável de ambiente).
Seu arquivo sudo existente já pode ter (ou incluir) uma ou mais instruções env_keep, por exemplo. isso (do exemplo pastebin):
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
O primeiro desses env_keep
linhas sobrescreverá quaisquer edições que você fizer acima (atribuição), as outras linhas estenderão a lista ( +=
). Para manter tudo funcionando do jeito que você está acostumado e, a menos que você tenha um motivo para alterar o conjunto, recomendamos adicionar uma linha imediatamente após :
Defaults env_keep += "VISUAL EDITOR"
(Existem outras opções para usar seu editor preferido, mas elas são desnecessariamente complicadas ou excessivamente permissivas e perigosas, então você terá que ler man sudoers
, descobrir você mesmo e entender quais os problemas associados ser.)