Cambia l'editor predefinito quando sudo visudo


23

Quando lo fa sudo visudo, l'editor predefinito è nano.
Voglio cambiarlo in vio vim.

Ho già creato viml'editor predefinito e lo uso come sostituto per geditaprire i file php, .txt, .c e .h, inserendo un vim.desktopfile ~/.local/share/applications/e modificando correttamente ~/.local/share/applications/mimeapps.listo /etc/gnome/defaults.list. Comunque apparentemente questo non si applica a nano.

Qualche idea?


Hai controllato man visudo?
fkraiem,

Ho scoperto alcune altre cose da quando l'ho scritto - spero di aggiungerne altre in seguito; Le distrazioni di Linux lo gestiscono in modo diverso.
Volker Siegel,

Sì e ho impostato il mio env-var VISUAL su vim ed "esportato" in .bashrc e in .bash_profile e quindi ho acquistato la shell ma senza risultati. Anche disconnesso e riconnesso in sessione per assicurarsi.
Cbhihe,

2
Ho aggiunto la sudo -E visudorisposta successiva, ci hai provato? -E sudonon rimuove tutte le variabili ambientali. Lo fa perché Ubuntu ha una linea Defaults env_resetin/etc/sudoers
Volker Siegel

Inoltre, hai provato update-alternativesanche io ho aggiunto?
Volker Siegel,

Risposte:


19

Il problema non è che non si applica a nano, è che non si applica alla shell:

Basta impostare la VISUALvariabile di ambiente:

export VISUAL=vim

Aggiungi anche questo ~ / .bashrc per renderlo permanente.

Dato che sembri usare vim in generale, imposta entrambi VISUALe EDITOR:

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

o più POSIX-corretto

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

Presumo nanofosse il valore di una o entrambe le variabili.

Per utilizzare effettivamente l'editor in visudo, dobbiamo gestire che sudonormalmente non mantiene le variabili di ambiente. L'opzione -Ecambia questo.

sudo -E visudo

Senza il -Equi, finiresti con un valore predefinito di nanonuovo


Le due variabili erano in uso molto prima dei file denominati *.desktopo mime*addirittura esistevano.
(E la cosa impressionante è: sono stati effettivamente utilizzati come standard comuni .)
In Ubuntu, l'impostazione predefinita del sistema sembra essere impostata con sudo update-alternatives --config editor. Mostra un menu per cambiare l'associazione corrente.


Vedi la sezione ENVIRONMENTin man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

1
Hai provato? Per impostazione predefinita, sudodisattiva la maggior parte delle variabili di ambiente dall'ambiente per il comando che esegue. VISUAL=vim sudo visudo(e le varianti che suggerisci) non funziona per me e non dovrebbe essere previsto che funzioni. sudo VISUAL=vim visudofunziona, però. (Ho appena provato di nuovo entrambi, per sicurezza.) A proposito, VISUALe EDITORnon sono impostati di default, non impostato su nano. VISUALe EDITORnon sono il meccanismo attraverso il quale visudoseleziona nanonella configurazione predefinita (tranne nella misura in cui li consulta, trova disinseriti o vuoti e passa avanti).
Eliah Kagan,

3
Funziona con sudo -E visudo- che dovrebbe sicuramente essere nella risposta, giusto.
Volker Siegel,

+1 e accetto la tua eccellente risposta, Volker. "Besten Dank!" Ho ancora ricevuto un messaggio di errore con il flag -E, in merito al fatto che non mi è stato permesso di trasmettere variabili d'ambiente, ma poi ho fatto causa a un utente con accesso limitato a uno con privilegi di amministratore e bingo! Funziona tutto bene.
Cbhihe,

Oh, sono felice di aggiungere un'altra cosa che può andare storto / può aiutare;) Potresti controllare le opzioni (linee con Default) nel tuo / etc / sudoers? Penso che ci sia un'opzione che lo proibisce, ma non era nel mio file predefinito.
Volker Siegel,

@VolkerSiegel: Immagino che ti riferisca al valore predefinito env_reset in / etc / sudoers . È impostato proprio nel mio caso.
Cbhihe,

8

Come descritto in questa risposta , aggiungi

Defaults editor=/path/to/editor

nel file sudoers .

Nota: funzionerà solo se il file in corso di modifica contiene la Defaults editor=/path/to/editorriga o include un file che lo contiene.

Ad esempio: visudo -f /etc/sudoers.d/my_sudoers_extensionverrà impostato automaticamente su Nano.


2
+1: Buono, e non l'avevo notato quando ho iniziato questa discussione, grazie.
Cbhihe,

4

Se non prevedi mai di utilizzare nano, puoi anche semplicemente rimuoverlo. Quindi il sistema utilizzerà vi / vim come predefinito.

sudo apt-get purge nano

So che non è la risposta ufficiale, ma è uno dei primi comandi per me dopo aver installato Ubuntu.


Questo sicuramente si qualifica come "necroposting", ma hey ... La tua risposta è interessante, in quanto si tratta di Ubuntu. Alcune altre distro (tra cui ArchLinux) hanno solo l'editor o gli editor installati al 1 ° posto, quindi non hai né il pbm che ho incontrato con Ubuntu, né la necessità di ricorrere alla misura che suggerisci. Nel caso in esame (ubuntu + nano + vim), sento che molti potrebbero aver bisogno di opzioni in termini di editor. È vero che raramente si vedono artisti del calibro emacse vimcoesistono attivamente sul profilo di qualsiasi utente. Tuttavia nanoe vimsuccede insieme in natura ... Keep nano!
Cbhihe,

1
sicuramente la risposta migliore
botkop

1
emacse vimcoesistono felicemente e vengono costantemente utilizzati. nanoè proprio come il parassita, prima viene rimosso dal sistema, meglio è. Capisco che alcune persone potrebbero trovarlo a proprio agio, ma questa risposta è perfettamente valida.
ricordo il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.