Apa perbedaan antara implementasi vim yang berbeda?


25

Saya mengetahui beberapa implementasi vim yang berbeda di Emacs. Ada mode-jahat, viper, vimpulse dan vim-mode. Apakah ada yang lain? Bagaimana mereka membandingkan?

Saya perhatikan bahwa ada banyak evil-*paket pada MELPA, menyarankan tidak satupun dari mereka yang 100% lengkap fitur. Fitur vim apa yang mereka sediakan, dan fitur vim apa yang tidak ada?

(Saya tidak tertarik pada kebalikannya di mana " satu set makro vi yang merupakan implementasi Emacs cukup lengkap "!)


1
Mungkin "emulasi" akan lebih benar dan tidak membingungkan karena tujuan dari mode yang terdaftar adalah memberi Anda perilaku yang Anda inginkan, bukan menerapkan seluruh editor di atas Emacs.
wasamasa

Jawaban:


35

vi, vipdan viper(dipesan berdasarkan tanggal pembuatan) dilengkapi dengan Emacs, semuanya meniru VI. vim-modeadalah upaya baru yang berdiri sendiri untuk benar-benar meniru Vim, vimpulseadalah satu set tambahan viperuntuk memberikan salah satu fitur Vim yang paling berguna. evildibuat sebagai pengganti vim-mode.

eviladalah proyek terbaru dan satu-satunya yang dikembangkan secara aktif. Tujuannya adalah untuk meniru model pengeditan Vim dengan setia, meningkatkan fungsi Emacs yang ada di mana pun ia bisa. Secara pribadi saya akan mengatakan itu sekitar 90% selesai, karena beberapa perintah agak baru (seperti gn) hilang, beberapa fungsi yang berhubungan dengan tampilan cukup sulit untuk diciptakan kembali (seperti tampilan tildes setelah akhir file) dan tidak mengimplementasikan penerjemah Vimscript atau apa pun di luar dasar-dasar mode Ex. Namun lebih mudah untuk memperluas dan mengintrospeksi daripada yang asli, evil-*ekstensi adalah setara Emacs dengan plugin Vim di hampir semua kasus ( evil-leadermisalnya akan menjadi pengecualian karena itu tidak perlu untuk menawarkan mempertimbangkan dukungan keymap Emacs).

Menimbang evilmelampaui Vim pada poin (lihat :sdan pratinjau visualnya atau betapa sedikit upaya membuat pose mode baru yang berguna ), saya dengan sepenuh hati merekomendasikannya kepada semua orang yang tertarik dalam mengedit modal untuk Emacs.


Anda menyebutkan g/menjadi perintah yang agak baru di Vim. Saya belum pernah melihatnya, dan tidak dapat menemukan dokumentasi di dalamnya. Apa yang dilakukan di Vim?
ivan

Maaf, maksud saya gn. Itu mengubah hasil pencarian menjadi objek teks. Juga, sudah diterapkan sekarang.
wasamasa

Ah, begitu. Saya senang mendengarnya telah diimplementasikan karena saya menggunakan yang sedikit di Vim.
ivan

9

Karena evilsatu-satunya mode emulasi vim yang dikembangkan secara aktif untuk pengetahuan saya, saya akan membuat jawaban saya spesifik-jahat. evilsangat berguna dan sangat dekat dengan pengalaman seperti vim, tetapi ada beberapa fitur vim yang kemungkinan besar tidak akan diimplementasikan (dengan desain) dan beberapa yang tidak lengkap tetapi mungkin akan ditambahkan pada akhirnya. Beberapa contoh hal yang kemungkinan besar tidak akan ditambahkan:

  1. Tidak ada interpreter vimscript, dan setahu saya tidak ada rencana untuk mengimplementasikannya.
  2. Menambah dan mengurangi angka ( C-adan C-x) tidak akan ditambahkan karena C-xterlalu penting dari pengikatan kunci Emacs.
  3. Tidak ada konsep built-in kunci pemimpin; sebaliknya, \terikat evil-execute-in-emacs-statesecara default.
  4. C-utidak terikat untuk menggulir ke atas secara default karena terlalu penting sebagai penjilidan kunci Emacs (meskipun Anda dapat menimpanya dengan evil-want-C-u-scroll).

Untuk menemukan daftar fitur vim yang belum diimplementasikan (pada saat penulisan jawaban ini), tempat terbaik untuk melihat adalah pelacak masalah . Contoh acak hal-hal yang ada dalam daftar:

  1. Menambahkan file dengan extidak diterapkan .
  2. Beberapa perintah gerak tidak berperilaku seperti vim .
  3. :maketidak dipetakan keM-x compile .
  4. C-odalam insertmode tidak berperilaku cukup seperti di vim .
  5. Tukar buffer jendela tidak diterapkan .

Ada banyak lagi, termasuk perintah yang tidak ada dalam daftar masalah terbuka (terutama experintah yang rumit ), tetapi seperti yang Anda lihat dari daftar, mereka cenderung fitur vim yang cukup kecil atau tidak jelas (vim adalah target yang agak besar untuk mencapai paritas fitur 100%).


karena emacs menggunakan lisp. tidak ada yang tak mungkin. misalnya, meskipun kunci pemimpin tidak ada di dalamnya, Anda dapat menginstal plugin jahat-pemimpin.
chen bin

@chenbin tentu saja, saya hanya merujuk pada hal-hal yang built-in dan diaktifkan secara default dengan kejahatan.
shosti

3

Tujuan Evil adalah untuk meniru Vim, sedangkan tujuan Viper adalah untuk meniru Vi. Mode-Vim dan Vimpulse adalah pendahulu dari Jahat dan setahu saya tidak dikembangkan lagi. Proyek Jahat dimulai untuk mengatasi kekurangan dari proyek-proyek ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.