Pertanyaan Ubah editor default ketika sudo visudo


Saat melakukan sudo visudo, editor defaultnya nano.
Saya ingin mengubahnya menjadi vi atau vim.

Saya sudah membuat vim editor default, dan menggunakannya sebagai pengganti gedit untuk membuka file php, .txt, .c dan .h, dengan menempatkan a vim.desktop file di ~/.local/share/applications/ dan dengan mengedit dengan benar ~/.local/share/applications/mimeapps.list atau /etc/gnome/defaults.list. Namun ternyata ini tidak berlaku untuk nano.

Ada petunjuk?


21
2017-10-01 20:46


asal


Hve Anda diperiksa man visudo? - fkraiem
Saya telah menemukan beberapa hal lagi sejak saya menulisnya - saya berharap untuk menambahkan lebih banyak nanti; Distrbution Linux menanganinya secara berbeda. - Volker Siegel
Ya dan saya mengatur VISUAL env-var saya ke vim dan "diekspor" di .bashrc dan di .bash_profile dan kemudian bersumber shell tetapi tidak berhasil. Bahkan keluar dan masuk kembali dalam sesi untuk memastikan. - Cbhihe
Saya menambahkan sudo -E visudo kemudian jawabannya, apakah Anda mencobanya? The -E membuat sudo tidak menghapus semua env vars. Itu karena ubuntu memiliki garis Defaults env_reset di /etc/sudoers - Volker Siegel
Juga, apakah Anda mencoba update-alternatives Saya juga menambahkan? - Volker Siegel


Jawaban:


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

Atur saja VISUAL variabel lingkungan:

export VISUAL=vim

Tambahkan ini juga ~ / .bashrc untuk membuatnya permanen.

Seperti Anda tampaknya menggunakan vim secara umum, atur keduanya VISUAL dan EDITOR:

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

atau lebih POSIX-benar

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

Saya berasumsi nano adalah nilai dari satu atau kedua variabel.

Untuk menggunakan editor dalam visudo sebenarnya, kita perlu mengatasinya sudo tidak menjaga variabel lingkungan dengan normal. Pilihan -E mengubahnya.

sudo -E visudo

Tanpa -E di sini, Anda akan berakhir dengan default nano lagi


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


Lihat bagian ENVIRONMENT di man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

17
2017-10-01 21:42



Apakah kamu sudah mencobanya? Secara default sudo menghapus sebagian besar variabel lingkungan dari lingkungan untuk perintah yang dijalankannya. VISUAL=vim sudo visudo (dan variasi yang Anda sarankan) tidak bekerja untuk saya dan tidak diharapkan bekerja. sudo VISUAL=vim visudo memang berhasil. (Saya baru saja mencoba keduanya lagi, untuk memastikan.) By the way, VISUAL dan EDITOR tidak disetel secara default, tidak disetel ke nano. VISUAL dan EDITOR bukan mekanisme yang melaluinya visudo memilih nano dalam konfigurasi default (kecuali sejauh itu berkonsultasi dengan mereka, menemukan mereka tidak disetel atau kosong, dan pindah). - Eliah Kagan
Ia bekerja dengan sudo -E visudo - Yang pastinya ada dalam jawaban, benar. - Volker Siegel
+1 dan saya menerima jawaban yang sangat bagus, Volker. "Besten Dank!" Saya masih mendapat pesan kesalahan dengan -E flag, tentang tidak diizinkan untuk meneruskan variabel lingkungan, tetapi kemudian saya su'd dari pengguna akses terbatas ke satu dengan admin-privilege dan bingo! Semuanya bekerja dengan baik. - Cbhihe
Oh, saya senang menambahkan satu hal lagi yang bisa salah / dapat membantu;) Bisakah Anda memeriksa opsi (dengan garis Default ) di / etc / sudoers Anda? Saya pikir ada opsi yang melarang itu, tetapi tidak ada di file default saya. - Volker Siegel
@VolkerSiegel: Saya membayangkan Anda mengacu pada env_reset default di / etc / sudoers. Sudah diatur begitu dalam kasus saya. - Cbhihe


Seperti yang dijelaskan dalam jawaban ini, tambahkan

Defaults editor=/path/to/editor

ke file sudoers.

Catatan: ini hanya akan berfungsi jika file yang diedit mengandung Defaults editor=/path/to/editor garis atau termasuk file yang berisi itu.

Sebagai contoh: visudo -f /etc/sudoers.d/my_sudoers_extension akan default ke Nano.


8
2018-01-19 15:29



+1: Bagus, dan saya tidak menyadarinya ketika saya pertama kali memulai utas ini, terima kasih. - Cbhihe


Jika Anda tidak pernah berencana menggunakan nano, Anda juga dapat menghapusnya. Maka sistem akan menggunakan vi / vim sebagai default.

sudo apt-get purge nano

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


2
2018-01-11 16:58



Ini pasti memenuhi syarat sebagai "necroposting", tapi hei ... Yr jawabannya menarik, karena itu berhubungan dengan Ubuntu. Beberapa distro lain (ArchLinux diantaranya) hanya memiliki editor yang Anda instal di tempat pertama, jadi Anda tidak memiliki pbm yang saya temui dengan Ubuntu, atau tidak perlu menggunakan ukuran yang Anda sarankan. Dalam kasus di tangan (ubuntu + nano + vim), saya merasa bahwa banyak yang mungkin memiliki kebutuhan untuk opsi dalam hal editor. Memang benar jarang melihat orang seperti itu emacs dan vim aktif hidup berdampingan di profil satu pengguna. Namun nano dan vim terjadi bersama di alam liar ... Terus nano ! - Cbhihe
pasti jawaban terbaik - botkop