it-swarm-id.com

VISUAL vs EDITOR - apa bedanya?

Saya biasanya mengatur variabel lingkungan VISUAL dan EDITOR ke hal yang sama, tetapi apa bedanya? Mengapa saya mengaturnya secara berbeda? Saat mengembangkan aplikasi, mengapa saya harus memilih untuk melihat VISUAL sebelum EDITOR atau sebaliknya?

196
xenoterracide

Editor EDITOR harus dapat bekerja tanpa menggunakan fungsionalitas terminal "lanjutan" (seperti mode lama ed atau ex dari vi). Itu digunakan pada terminal teletype.

Editor VISUAL dapat berupa editor layar penuh sebagai vi atau emacs.

Misalnya. jika Anda memanggil editor melalui bash (menggunakan C-x C-e), bash akan mencoba dulu VISUAL editor dan kemudian, jika VISUAL gagal (karena terminal tidak mendukung editor layar penuh), ia mencoba EDITOR.

Saat ini, Anda dapat membiarkan EDITOR tidak disetel atau setel ke vi -e.

157
andcoz

Jawaban yang diterima mungkin merupakan perlakuan yang baik dan singkat, tetapi ini akan menjadi upaya untuk lebih dalam ketika perbedaan antara VISUAL dan EDITOR mungkin masih penting (membangun jawaban Adam Katz ).

Spesifikasi POSIX masih membedakan antara editor mode visual dan editor baris. Ini sangat penting pada masa ketika posisi kursor melalui koneksi serial sulit (terutama karena kecepatan koneksi serial). The artikel Wikipedia untuk vi memberikan latar belakang yang bermanfaat tentang perbedaan antara vi (editor mode visual) dan ex (editor baris). Jika Anda Gali cukup dalam penelitian, Anda akan menemukan bagian "RATIONALE" dari spec "ex" , yang memberikan alasan untuk perbedaan yang masih ada dalam spec:

Diakui bahwa sebagian dari vi akan sulit, jika bukan tidak mungkin, untuk diterapkan secara memuaskan pada terminal mode blok, atau terminal tanpa bentuk pengalamatan kursor apa pun, sehingga bukan persyaratan wajib bahwa fitur tersebut harus bekerja pada semua terminal . Namun demikian, maksudnya adalah bahwa implementasi vi harus menyediakan set lengkap kemampuan pada semua terminal yang mampu mendukungnya.

Saya tidak memerlukan ini sejak memberikan modem baud 300, tetapi saya dapat membayangkan bahwa orang-orang yang menggunakan jalur serial lambat untuk terhubung ke sistem tertanam (dan/atau melalui koneksi yang benar-benar tidak pasti) mungkin masih menghargai dapat memiliki editor mode baris yang disukai berbeda dari editor "visual" seperti vi. Kode terminal VT100-gaya atas koneksi lossy, laggy, sempit mungkin "mengasapi" dalam aplikasi terbatas.

Bagi kita semua, tampaknya jawaban yang "benar" tampaknya "atur keduanya menjadi editor pilihan Anda". Mungkin tidak apa-apa untuk mengkooptasi perbedaan ini untuk editor lokal/grafis (misal Sublime atau gvim) vs editor jendela terminal (mis. Vi atau emacs), tetapi kemungkinan ada segunung alasan warisan mengapa itu mungkin tidak akan berfungsi seperti yang diharapkan .

37
robla

Saya telah menyimpulkan bahwa $VISUAL adalah grafis dan $EDITOR adalah baris perintah. Jika tidak terdefinisi, apa pun yang mencari $VISUAL harus lalu coba $EDITOR lanjut.

(Kutipan diperlukan: Saya ingin mendapatkan dokumentasi yang tepat, mungkin halaman manual atau spesifikasi POSIX?)

Saat ini, saya punya barang seperti ini di ~/.bashrc dan ~/.zshrc:

EDITOR="$(command -v vim)"

# we have gvim, not in an SSH term, and the X11 display number is under 10
if command -v gvim >/dev/null 2>&1 \
&& [ "$SSH_TTY$DISPLAY" = "${DISPLAY#*:[1-9][0-9]}" ]; then
  export VISUAL="$(command -v gvim) -f"
  Sudo_EDITOR="$VISUAL"
else
  Sudo_EDITOR="$EDITOR"
fi

gvim tanpa -f tidak akan bekerja dengan program-program yang berharap untuk bertindak pada suntingan Anda. Ini pasti termasuk sudoeditor (Sudo -e).

Ini dapat rusak jika Anda memiliki spasi putih di jalur ke vim. Jika itu masalah, instal dengan benar atau pertimbangkan symlink seperti /usr/local/bin/gvim

3
Adam Katz

Beberapa alat hanya menerima EDITOR, misalnya Shell builtin fc:

-e ENAME  select which editor to use.  Default is FCEDIT, then EDITOR, then vi
2
Steven Penny

Karena sepertinya tidak ada lingkungan di mana vi atau yang serupa akan gagal, saya telah mengambil pengaturan VISUAL untuk sesuatu yang memerlukan X DISPLAY, dan EDITOR untuk ex.

Sebagian besar, itu sepertinya membuat saya masalah ketika beberapa program tidak menggunakan VISUAL.

0