Ubah editor default menjadi vim untuk _ sudo systemctl edit [unit-file] _

17

[4.13.12-1-ARCH dengan gnome3 dan gdm di Xorg]

Saya sudah mengatur VISUAL dan EDITOR saya untuk env-vars vim. Demikian pula saya mencoba SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR di ~ / .bashrc saya, tetapi tidak berhasil.

Saat memodifikasi file unit di Arch (systemd) via

 $ sudo systemctl edit _unit_ 

Aku mendapati diriku menatap nano. Hidup ini terlalu singkat dan saya inginkan vimdengan segala cara. Bagaimana saya melakukan ini?

Cbhihe
sumber

Jawaban:

13

Anda mengatur variabel untuk pengguna Anda sendiri, tetapi menjalankan systemctlperintah sebagai root ( sudo). Oleh karena itu, variabel yang Anda tetapkan untuk pengguna Anda tidak relevan.

Untuk memperbaikinya, Anda dapat (tetapi menggunakan 1):

  1. Jalankan sudodengan -Esehingga mengekspor lingkungan saat ini:

    sudo -E systemctl edit _unit_
    
  2. Tambahkan variabel (Anda hanya perlu SYSTEMD_EDITORini) ke root ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Kemudian jalankan dengan

    sudo -i systemctl edit _unit_ 
    

Terakhir, perhatikan bahwa Anda perlu menentukan path lengkap ke editor Anda, bukan hanya namanya. Jadi /bin/vidan tidak vim.

terdon
sumber
Saya sudah bekerja dengan sudo -E ...setelah dimodifikasi /root/.bashrc. Tidak terpikir untuk menjalankan sudo sebagai shell login ( sudo -i ...). Tidak ada yang sangat memuaskan karena Anda perlu mengingat bendera yang sesuai, tapi hei ... ada hal-hal yang lebih buruk, saya kira ... Masih (mungkin itu menarik), saya mengkonfirmasi bahwa bagi sebagian dari kita: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(sebagai root) adalah Baik. Path semua tergantung pada bagaimana Anda mendapatkan vimpkg Anda diinstal di tempat 1. Ditambah seperti yang saya mendefinisikan PATH untuk root, vimsudah cukup. Tidak hanya ada satu cara untuk melakukannya. Terima kasih @terdon.
Cbhihe
1
@ cbhihe ah, oke. Saya mencoba dengan adil vimdan mengeluh itulah sebabnya saya menyebutkannya. Dan hei, saya pengguna emacs :)
terdon
1
@ Cbhihe percaya saya itu bukan pilihan yang mudah. Saya bahkan mengujinya menggunakan vim! Butuh waktu tiga hari untuk menutup barang itu.
terdon
21

Metode pertama, Anda dapat menambahkan baris ini ke ~/.bashrc:

export SYSTEMD_EDITOR=vim

Dan kemudian sudo visudo, tambahkan baris ini:

Defaults  env_keep += "SYSTEMD_EDITOR"

Mulai sesi bash baru untuk mulai berlaku, lalu jalankan sudo systemctl edit <foo>seperti biasa.

Metode kedua adalah menggunakan update-alternatives:

Instal yang Anda inginkan editor, misalnya vim.gtk3:

$ editor mana
editor adalah / usr / bin / editor
$ sudo perbarui-alternatif - instal "$ (editor mana)" editor "$ (yang vim.gtk3)" 15

Kemudian pilih yang Anda inginkan editor:

$ sudo update-alternatives --config editor
There are 7 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/vim.gtk3    50        auto mode
  1            /bin/ed             -100       manual mode
* 2            /bin/nano            40        manual mode
  3            /usr/bin/code        0         manual mode
  4            /usr/bin/gedit       5         manual mode
  5            /usr/bin/vim.basic   30        manual mode
  6            /usr/bin/vim.gtk3    50        manual mode
  7            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 6
update-alternatives: using /usr/bin/vim.gtk3 to provide /usr/bin/editor (editor) in manual mode

Metode ketiga adalah mengatur langsung EDITORpada saat runtime:

sudo EDITOR=vim systemctl edit <foo>

Diutamakan adalah metode pertama> metode ketiga> metode kedua .

Jangan mencoba mengatur "GUI" editor seperti geditkarena Mengapa tidak gksu / gksudo atau meluncurkan aplikasi grafis dengan sudo bekerja dengan Wayland? dan Gedit menggunakan 100% CPU saat mengedit file

林果 皞
sumber
1
Terima kasih 林果 皞, tapi aku sungguh bermaksud vim, tidak gedit.
Cbhihe
@ Cbhihe gedithanyalah sebuah contoh untuk membuktikan bahwa bahkan editor gui berfungsi, tentu saja Anda dapat menggunakan vimjawaban ini.
林果 皞
1
林 さ ん, kamu benar. Sebenarnya saya menerapkan solusi thn dengan mengedit file sudoers dengan sudo visudo... Saya terlalu cepat dalam menerima respon pertama. Apa yang saya cari sebenarnya adalah modifikasi /etc/suddoersfile seperti yang Anda usulkan. Terima kasih dan maaf tidak memilih solusi. Salahku.
Cbhihe
[PEMBARUAN] Saya mengedit jawaban saya untuk menambahkan saran yang tidak disetel gedit.
林果 皞
0

Saya tidak sabar dengan Nano dan lebih suka membunuh nyamuk dengan meriam.

Saya menghapus Nano dan menempatkan symlink ke vim di tempatnya.

Selesai

Daniel Baker
sumber