Mude o editor padrão quando sudo visudo

23

Ao fazer sudo visudo, o editor padrão é nano.
Eu quero mudar para viou vim.

Já criei vimo editor padrão e o uso como um substituto para geditabrir arquivos php, .txt, .c e .h, colocando um vim.desktoparquivo ~/.local/share/applications/e editando corretamente um ~/.local/share/applications/mimeapps.listou outro /etc/gnome/defaults.list. No entanto, aparentemente, isso não se aplica nano.

Qualquer pista ?

Cbhihe
fonte
Você checou man visudo?
precisa saber é o seguinte
Descobri mais algumas coisas desde que escrevi - espero acrescentar mais tarde; As distribuições Linux lidam com isso de maneira diferente.
Volker Siegel
Sim e defino meu env-var VISUAL como vim e "exportado" em .bashrc e em .bash_profile e, em seguida, procurei o shell, mas sem sucesso. Mesmo sessão desconectada e registrada novamente para garantir.
Cbhihe
2
Eu adicionei o sudo -E visudomais tarde na resposta, você tentou isso? O -E sudonão remove todos os ambientes. Ele faz porque o Ubuntu tem uma linha Defaults env_resetem/etc/sudoers
Volker Siegel
Além disso, você tentou o que update-alternativeseu também adicionei?
Volker Siegel

Respostas:

19

O problema não é que não se aplica nano, é que não se aplica ao shell:

Basta definir a VISUALvariável de ambiente:

export VISUAL=vim

Adicione isso também ~ / .bashrc para torná-lo permanente.

Como você parece usar o vim em geral, defina ambos VISUALe EDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

ou mais POSIX-correto

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

Eu suponho que nanoera o valor de uma ou ambas as variáveis.

Para usar o editor no visudo, precisamos lidar com isso sudoque não mantém as variáveis ​​de ambiente normalmente. A opção -Emuda isso.

sudo -E visudo

Sem o -Eaqui, você terminaria com o padrão nanonovamente


As duas variáveis ​​estavam em uso muito antes dos arquivos nomeados *.desktopou mime*mesmo existirem.
(E o mais impressionante é que eles foram realmente usados ​​como um padrão comum .)
No Ubuntu, o padrão do sistema parece estar definido sudo update-alternatives --config editor. Ele mostra um menu para alterar a associação atual.


Veja a seção ENVIRONMENTem man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set
Volker Siegel
fonte
1
Você tentou? Por padrão, sudodesativa a maioria das variáveis ​​de ambiente do ambiente para o comando que ele executa. VISUAL=vim sudo visudo(e as variações sugeridas) não funcionam para mim e não devem funcionar. sudo VISUAL=vim visudofunciona, no entanto. (Acabei de tentar os dois novamente, para ter certeza.) A propósito, VISUALe EDITORsão desativados por padrão, não configurados para nano. VISUALe EDITORnão é o mecanismo através do qual a visudoseleção é selecionada nanona configuração padrão (exceto na medida em que as consulta, descobre que estão desabilitadas ou em branco e segue em frente).
Eliah Kagan
3
Funciona com sudo -E visudo- o que certamente deve estar na resposta, certo.
Volker Siegel
+1 e aceito sua excelente resposta, Volker. "Besten Dank!" Eu ainda recebi uma mensagem de erro com o sinalizador -E, sobre não ter permissão para transmitir variáveis ​​de ambiente, mas então passei de um usuário de acesso restrito para outro com privilégio de administrador e bingo! Tudo funciona bem.
Cbhihe #
Oh, estou feliz em adicionar mais uma coisa que pode dar errado / pode ajudar;) Você pode verificar as opções (linhas com Default) nos seus / etc / sudoers? Eu acho que existe uma opção que proíbe isso, mas não estava no meu arquivo padrão.
Volker Siegel
@ VolkerSiegel: Eu imagino que você se refira ao padrão env_reset em / etc / sudoers . Está definido exatamente no meu caso.
Cbhihe #
8

Conforme descrito nesta resposta , adicione

Defaults editor=/path/to/editor

para o arquivo sudoers .

Nota: isso só funcionará se o arquivo que está sendo editado contiver a Defaults editor=/path/to/editorlinha ou incluir um arquivo que a contenha.

Por exemplo: visudo -f /etc/sudoers.d/my_sudoers_extensionserá padronizado como Nano.

Muhamed Huseinbašić
fonte
2
+1: Bom, e eu não tinha notado isso quando iniciei este tópico, obrigado.
precisa saber é o seguinte
3

Se você nunca planeja usar o nano, também pode simplesmente removê-lo. Em seguida, o sistema usará o vi / vim como padrão.

sudo apt-get purge nano

Eu sei que não é a resposta oficial, mas é um dos primeiros comandos para mim depois de instalar o Ubuntu.

Philipp Claßen
fonte
Isso definitivamente se qualifica como "necroposting", mas ei ... A resposta é interessante, pois lida com o Ubuntu. Algumas outras distros (entre elas o ArchLinux) têm apenas o (s) editor (es) que você instalou em primeiro lugar, portanto, você não possui o pbm que encontrei com o Ubuntu nem a necessidade de recorrer à medida sugerida. No caso em questão (ubuntu + nano + vim), sinto que muitos podem ter necessidade de opções em termos de editores. É verdade que raramente se vê emacse vimcoexiste ativamente no perfil de qualquer usuário. No entanto, nanoe vimacontecem juntos na natureza ... Continue nano!
Cbhihe 07/04
definitivamente a melhor resposta
botkop
emacse vimcoexistem alegremente e são constantemente usados. nanoé como a praga, quanto mais cedo ela for removida do sistema, melhor. Entendo que algumas pessoas possam achar confortável, mas essa resposta é perfeitamente válida.
mementum