Ubah editor default saat sudo visudo

23

Saat melakukannya sudo visudo, editor default adalah nano.
Saya ingin mengubahnya ke viatau vim.

Saya sudah membuat vimeditor default, dan menggunakannya sebagai pengganti untuk geditmembuka file php, .txt, .c dan .h, dengan menempatkan vim.desktopfile di dalamnya ~/.local/share/applications/dan dengan mengedit salah satu ~/.local/share/applications/mimeapps.listatau /etc/gnome/defaults.list. Namun ternyata ini tidak berlaku untuk nano.

Ada petunjuk?

Cbhihe
sumber
Pernahkah Anda memeriksanya man visudo?
fkraiem
Saya telah menemukan beberapa hal lagi sejak saya menulisnya - saya berharap untuk menambahkan lebih banyak nanti; Distrbutions Linux menanganinya secara berbeda.
Volker Siegel
Ya dan saya mengatur VISUAL env-var saya ke vim dan "diekspor" di .bashrc dan .bash_profile dan kemudian mengambil shell tetapi tidak berhasil. Bahkan logout dan login-in sesi untuk memastikan.
Cbhihe
2
Saya menambahkan jawaban sudo -E visudonanti, apakah Anda mencobanya? -E membuat sudotidak menghapus semua env vars. Itu karena ubuntu memiliki baris Defaults env_resetdalam/etc/sudoers
Volker Siegel
Juga, apakah Anda mencoba update-alternativessaya juga menambahkan?
Volker Siegel

Jawaban:

19

Masalahnya bukan itu tidak berlaku nano, itu tidak berlaku untuk shell:

Cukup atur VISUALvariabel lingkungan:

export VISUAL=vim

Tambahkan ini juga ~ / .bashrc untuk membuatnya permanen.

Saat Anda tampaknya menggunakan vim secara umum, atur keduanya VISUALdan EDITOR:

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

atau lebih POSIX-benar

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

Saya berasumsi nanoadalah nilai dari satu atau kedua variabel.

Untuk memanfaatkan editor dalam visudo sebenarnya, kita perlu menangani yang sudotidak menjaga variabel lingkungan secara normal. Opsi -Emengubah itu.

sudo -E visudo

Tanpa di -Esini, Anda akan berakhir dengan default nanolagi


Dua variabel yang digunakan jauh sebelum file dinamai *.desktopatau mime*bahkan ada.
(Dan hal yang mengesankan adalah: mereka sebenarnya digunakan sebagai standar umum .)
Di Ubuntu, standar sistem tampaknya diatur dengan sudo update-alternatives --config editor. Ini menunjukkan menu untuk mengubah asosiasi saat ini.


Lihat bagian ENVIRONMENTdalam man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set
Volker Siegel
sumber
1
Apakah kamu sudah mencobanya? Secara default, sudohapus sebagian besar variabel lingkungan dari lingkungan untuk perintah yang dijalankannya. VISUAL=vim sudo visudo(dan variasi yang Anda sarankan) tidak berfungsi untuk saya dan seharusnya tidak diharapkan berfungsi. sudo VISUAL=vim visudotidak bekerja. (Saya baru saja mencoba keduanya lagi, tentu saja.) Omong-omong, VISUALdan EDITORtidak disetel secara default, tidak disetel ke nano. VISUALdan EDITORbukankah mekanisme yang visudodipilihnya nanodalam konfigurasi default (kecuali sejauh berkonsultasi dengannya, mendapati mereka tidak disetel atau kosong, dan bergerak terus).
Eliah Kagan
3
Ini bekerja dengan sudo -E visudo- yang tentunya harus ada dalam jawaban, benar.
Volker Siegel
+1 dan saya menerima jawaban yang luar biasa, Volker. "Besten Dank!" Saya masih mendapat pesan kesalahan dengan tanda -E, tentang tidak diizinkan untuk meneruskan variabel lingkungan, tetapi kemudian saya menuntut dari pengguna akses terbatas ke yang memiliki hak istimewa admin dan bingo! Semua berfungsi dengan baik.
Cbhihe
Oh, saya senang menambahkan satu hal lagi yang bisa salah / dapat membantu;) Bisakah Anda memeriksa opsi (baris dengan Default) di / etc / sudoers Anda? Saya pikir ada opsi yang melarang itu, tetapi tidak ada dalam file default saya.
Volker Siegel
@VolkerSiegel: Saya membayangkan Anda merujuk ke default env_reset di / etc / sudoers . Sudah diatur begitu dalam kasus saya.
Cbhihe
8

Seperti dijelaskan dalam jawaban ini , tambahkan

Defaults editor=/path/to/editor

ke file sudoers .

Catatan: ini hanya akan berfungsi jika file yang sedang diedit mengandung Defaults editor=/path/to/editorbaris atau menyertakan file yang mengandungnya.

Misalnya: visudo -f /etc/sudoers.d/my_sudoers_extensionakan default ke Nano.

Muhamed Huseinbašić
sumber
2
+1: Bagus, dan saya tidak menyadarinya ketika saya pertama kali memulai utas ini, terima kasih.
Cbhihe
3

Jika Anda tidak pernah berencana untuk menggunakan nano, Anda juga bisa menghapusnya. Kemudian sistem akan menggunakan vi / vim sebagai default.

sudo apt-get purge nano

Saya tahu itu bukan jawaban resmi, tetapi itu adalah salah satu perintah pertama bagi saya setelah menginstal Ubuntu.

Philipp Claßen
sumber
Ini pasti memenuhi syarat sebagai "necroposting", tapi hei ... Jawaban Anda menarik, karena ini berkaitan dengan Ubuntu. Beberapa distro lain (ArchLinux di antara mereka) hanya memiliki editor yang Anda instal di tempat pertama, jadi Anda tidak memiliki pbm yang saya temui dengan Ubuntu, atau kebutuhan untuk menggunakan ukuran yang Anda sarankan. Dalam hal yang dihadapi (ubuntu + nano + vim), saya merasa bahwa banyak yang mungkin membutuhkan opsi dalam hal editor. Memang benar seseorang jarang melihat suka emacsdan vimaktif hidup berdampingan di profil satu pengguna. Namun nanodan vimlakukan bersama di alam liar ... Tetap nano!
Cbhihe
pasti jawaban terbaik
botkop
emacsdan vimdengan senang hati hidup berdampingan dan selalu digunakan. nanoseperti halnya hama, semakin cepat dihapus dari sistem, semakin baik. Saya mengerti bahwa beberapa orang mungkin merasa nyaman, tetapi jawaban ini sangat valid.
mementum