it-swarm-id.com

Apa pro dan kontra Vim dan Emacs?

Bagaimana Anda membandingkan editor ini? Apa pro dan kontra dari masing-masing?

[note] Ini tidak dimaksudkan untuk dijawab oleh mereka yang "membenci satu dan mencintai yang lain" atau mereka yang belum menggunakan keduanya.

388
John Berryman

Saya menggunakan keduanya, meskipun jika saya harus memilih satu, saya tahu mana yang akan saya pilih. Namun, saya akan mencoba membuat perbandingan objektif pada beberapa masalah.

  • Tersedia di mana-mana? Jika Anda seorang administrator sistem profesional yang bekerja dengan sistem Unix, atau pengguna daya pada perangkat yang disematkan (router, smartphone dengan Busybox, ... ), Anda perlu tahu vi (bukan Vim), karena ini tersedia di semua sistem Unix dan sebagian besar sistem mirip Unix, baik desktop, server atau embedded. Untuk pengguna biasa, argumen ini tidak relevan: Emacs mudah tersedia untuk setiap OS desktop/server, dan karena mendukung pengeditan jarak jauh, itu sudah cukup untuk memilikinya di mesin desktop Anda.

  • Kembung? Emacs pernah berdiri dengan humor untuk “Delapan Megabita dan Terus Bertukar”. Saat ini, di komputer saya, Google Chrome membutuhkan sebanyak RAM per tab seperti yang dilakukan Emacs untuk 100 file terbuka, dan saya bahkan tidak akan menyebut Firefox) Pada abad ke-21, mengasapi Emacs hanyalah mitos.

    Fitur mengasapi juga bukan masalah. Jika Anda tidak menggunakannya, Anda tidak perlu tahu itu ada di sana. Fitur Emacs menghalangi ketika Anda tidak menggunakannya dan dokumentasinya sangat tertata dengan baik.

  • Waktu mulai : Vi (m) pendukung mengeluh tentang waktu startup Emacs. Ya, Emacs lambat untuk memulai, tetapi ini bukan masalah besar: Anda memulai Emacs sekali per sesi, lalu sambungkan ke proses yang berjalan dengan emacsclient. Jadi startup lambat Emacs kebanyakan mitos.

    Ada satu pengecualian, yaitu ketika Anda masuk ke mesin jarak jauh dan ingin mengedit file di sana. Memulai Emacs jarak jauh (biasanya) lebih lambat daripada memulai Vim jarak jauh. Dalam beberapa situasi Anda dapat membuat Emacs berjalan di dalam Layar. Anda juga dapat mengedit file jarak jauh dari dalam Emacs, tetapi itu memecah aliran jika Anda berada di sesi ssh di terminal. (Karena XEmacs 21 atau GNU Emacs 23, Anda dapat membuka jendela Emacs dari instance X yang berjalan di dalam terminal.)

    Membalik tabel, saya telah mengamati Vim mengambil beban yang jauh lebih lama daripada Emacs (vim -u /dev/null vs. emacs -q). Memang ini adalah platform aneh (Cygwin).

  • Kurva pembelajaran awal: Ini bervariasi dari orang ke orang. Grafik Michael Mrozek membuatku tertawa. Serius, saya setuju bahwa kurva belajar Vim mulai curam, lebih curam daripada editor lainnya, meskipun ini dapat dikurangi dengan menggunakan gvim.

    Karena saya telah menghilangkan beberapa mitos Emacs, izinkan saya menghilangkan mitos vi: editor modal tidak sulit atau menyakitkan untuk digunakan. Dibutuhkan sedikit kebiasaan, tetapi setelah beberapa saat rasanya sangat alami. Jika saya mendesain ulang vi (m), saya pasti akan mempertahankan modenya.

  • Kurva belajar asimptotik: Vim dan Emacs memiliki banyak fitur, dan Anda akan terus menemukan yang baru setelah bertahun-tahun digunakan.

  • Produktivitas : Ini adalah topik yang sangat sulit. Para pendukung vi (m) berpendapat bahwa Anda dapat melakukan hampir semua hal tanpa meninggalkan barisan rumah, dan itu membuat Anda lebih efisien ketika Anda sangat membutuhkannya. Para pendukung Emacs membalas bahwa Emacs memiliki banyak perintah yang tidak sering digunakan, jadi jangan menjamin pengikatan kunci, tetapi sangat nyaman ketika Anda membutuhkannya ( referensi xkcd wajib ).
    Pendapat pribadi saya adalah bahwa Emacs akhirnya menang kecuali Anda memiliki cacat pengetikan (dan bahkan kemudian Anda dapat mengonfigurasi Emacs hanya memerlukan urutan kunci dan bukan kombinasi seperti Ctrl+ huruf). Kunci baris rumah bagus, tetapi seringkali tidak terlalu banyak menang karena Anda harus beralih mode. Saya tidak berpikir ada yang bisa dilakukan Vim signifikan lebih efisien daripada Emacs, sedangkan yang sebaliknya benar.

  • Kustomisasi : Kedua editor dapat diprogram, dan ada banyak paket yang tersedia untuk keduanya. Namun, Vim adalah editor dengan bahasa makro; Emacs adalah editor yang ditulis dalam LISP dengan beberapa primitif ad-hoc. Emacs menang secara spektakuler ketika Anda mencoba melakukan sesuatu yang tidak terpikirkan oleh penulis. Ini tidak terjadi setiap hari, tetapi itu menumpuk selama bertahun-tahun.

  • Lebih dari sekedar editor : Vim adalah editor. Emacs bukan hanya editor: ini juga merupakan IDE, manajer file, emulator terminal, browser web, klien email, klien berita, ... Apakah itu hal yang baik atau buruk adalah masalah untuk diperdebatkan. Tetapi Anda dapat menggunakan Emacs sebagai editor biasa (lihat “fitur mengasapi” di atas).

  • Sebagai IDE : Baik Vim dan Emacs memiliki dukungan untuk banyak bahasa pemrograman dan format teks lainnya. Di luar dasar-dasar seperti pewarnaan sintaksis dan lekukan otomatis, keduanya memiliki fitur IDE canggih seperti pencarian referensi silang kode dan dokumentasi, penyisipan dan refactoring yang dibantu, kontrol versi terintegrasi, dan kemampuan untuk memulai suatu kompilasi dan lompat ke kesalahan pertama.

    Satu domain tempat Emacs lebih baik daripada Vim adalah interaksi dengan asinkron subproses. Saat itulah Anda memulai kompilasi yang panjang dan ingin melakukan hal lain di dalam instance editor yang sama saat kompiler berputar. Atau ketika Anda ingin berinteraksi dengan Read-eval-print loop - Emacs benar-benar bersinar dalam hal ini, Vim hanya memiliki peretasan yang ceroboh untuk ditawarkan. Namun demikian, garpu baru vim, Neovim telah membuktikan telah memperbaiki ini dan mengimplementasikan berbagai perbaikan bug lainnya yang tidak diterapkan dalam vim saham.

Saya akan memposting apa yang menurut saya merupakan manfaat utama dari masing-masing:


Emacs memiliki ekstensi yang jauh lebih banyak untuk memungkinkan Anda melakukan tugas-tugas yang hanya berhubungan dengan editor teks, seperti menelusuri sistem file atau mengacaukan kontrol versi, dan ekstensi yang sama sekali tidak terkait dengan editor teks, seperti membaca feed RSS. Jika Anda menginginkan lingkungan, bukan hanya editor teks, Emacs akan lebih baik daripada Vim. Saya juga berpikir Emacs jauh lebih mudah dipelajari, terlepas dari apa yang mungkin Anda yakini:

Editor learning curve comic

Secara khusus, saya pikir pengguna Emacs pemula akan lebih cepat daripada pengguna Vim pemula


Di sisi lain, Vim tidak dapat disangkal lebih cepat. Sepertinya ini adalah bagian inti dari argumen, tetapi menurut saya tidak ada kontes sama sekali; Saya menganggap diri saya pengguna Emacs yang fasih, dan saya tidak cocok untuk pasangan orang yang saya kenal yang memiliki pengetahuan yang sama tentang Vim. Masalahnya adalah, jumlah orang yang memiliki penguasaan Vim yang cukup untuk menjadi yang sangat cepat sangat kecil (dari ~ 30 orang yang saya ajak bicara secara teratur yang menggunakan Vim, saya pikir hanya satu yang sangat bagus dalam hal ini). Ada celah besar antara kemungkinan kenaikan kecepatan dan gain kecepatan aktual Anda mencapai; Pengguna Emacs akan hampir secepat 99% dari pengguna Vim, dan (seperti yang saya katakan di bagian Emacs) memulai pengguna Emacs mungkin akan lebih cepat daripada memulai pengguna Vim

272
Michael Mrozek

Ada vi tersedia di setiap sistem unix (atau hampir), namun Anda tidak bisa mengatakan ini tentang editor lain. Inilah alasan # 1, imo, untuk mempelajari dan membiasakan diri dengan vi (harap dicatat 'vi' bukan 'vim'). Saya belum pernah melihat Emacs tersedia di instalasi default.

Saya tidak mengatakan jangan menggunakan Emacs atau ini adalah satu-satunya alasan untuk menggunakan Vim, tetapi ketika Anda ingin dapat menggunakan sistem Unix yang bukan milik Anda ... vi adalah bagian dari universal bahasa.

83
xenoterracide

Saya pikir mereka berdua luar biasa. Saya pikir salah satu dapat melakukan apa saja yang dapat Anda bayangkan, dan keduanya sangat dapat disesuaikan, sehingga pada saat Anda selesai menyesuaikan mereka, mereka berdua persis seperti yang Anda inginkan, tidak lebih dan tidak kurang.

Emacs menonjol bagi saya karena sedikit lebih dekat (walaupun masih belum memenuhi) dengan standar kegunaan dan konsistensi ISO/IEC untuk antarmuka pengguna, dan karenanya tidak memainkan banyak trik dengan "insting" Anda tentang vim. Naluri seumur hidup yang telah Anda kembangkan bekerja dengan program lain tidak akan merugikan Anda.

Vim adalah model yang sama sekali berbeda, dan dalam banyak hal, ia lebih unggul dengan sendirinya sejauh mengandalkan jauh lebih sedikit pada urutan Cntrl/Alt, dan alih-alih hanya pada modenya, memungkinkan Anda untuk menjaga kesulitan Anda di baris rumah dan mengetik. lebih cepat. Tetapi vim sebenarnya unik, dan kecuali jika Anda menginstal beberapa perangkat lunak pendamping yang sangat tidak biasa (mis., Vimperator, Jumanji/Zathura, dll.), Naluri yang Anda kembangkan bekerja dengan vim tidak akan berpindah ke program lain dan sebaliknya. Yang mengatakan, saya sudah memutuskan sendiri. Anda harus menyelesaikannya cepat atau lambat, baik atau buruk, karena sulit untuk menguasai keduanya.

24
frabjous

Saya menggunakan keduanya secara teratur. Saya melihat Emacs sebagai editor "langsung", sedangkan saya menggunakan Vim untuk tugas cepat, sekali saja. Secara dangkal, Emacs jauh lebih membengkak daripada Vim, dan karenanya benar-benar tidak begitu nyaman untuk "Nyalakan" seperti Vim, tetapi saya juga menemukan bahwa filosofi antarmuka pengguna dari satu ke yang lain mendukung paradigma ini. Emacs jauh lebih dibangun untuk membuat Anda tetap di dalam, membuat hal-hal bagus dan nyaman sehingga Anda tidak harus pergi, sedangkan vim jauh lebih "Unixy" dan melihat dirinya sebagai bagian dari sabuk alat yang lebih besar.

Banyak orang melarikan diri dari Emacs karena ketergantungannya yang besar pada bucky bits , tetapi ini adalah alasan yang cukup konyol bagi saya. Kekuatan nyata yang dimiliki Emacs atas Vim adalah kemampuan kustomisasi, dan dengan kekuatan Viper dll, ini sebenarnya bukan masalah. Tentu saja Vim-Script menyediakan tingkat kustomisasi sendiri, dan jika, katakanlah, bahasa pemrograman favorit Anda tidak dilengkapi dengan highlighter sintaksis yang sesuai, Anda tentu bisa memasaknya, tetapi Emacs pada akhirnya adalah mesin LISP hosting otomatis, dan pada akhirnya Anda bisa berbuat banyak, lebih mengutak-atiknya. Tidak ada alat seperti gnus atau mode-org di Vim, untuk beberapa nama. Singkatnya, Emacs bukan hanya editor, ini praktis sistem operasi terkutuk.

Untuk memanipulasi teks, saya katakan mereka persis setara.

21
Eli Frey

Saya akan menaruh nilai $ 0,02 saya, karena saya menghabiskan beberapa tahun menggunakan emacs dan XEmacs dan kemudian pindah ke vim. Agar adil, saya sebenarnya telah menggunakan vi sedikit sekitar tahun 1990-1992 jadi saya terbiasa dengan antarmuka penggunanya.

Emacs

  • Emacs telah digambarkan sebagai sistem LISP yang kebetulan digunakan untuk menulis editor, dan ada butir kebenaran dalam hal ini. Anda dapat menerapkan hampir semua hal yang Anda inginkan di elisp jika Anda ingin meluangkan waktu untuk memahami lingkungan. Saya tidak bisa mengatakan bahwa saya pernah mengetahuinya dengan baik, tetapi saya melakukan hal-hal yang aneh. Emacs dan Xemacs tidak sepenuhnya kompatibel pada level ini, jadi skrip pihak ketiga dapat berjalan pada satu tetapi tidak pada yang lain.

  • Telah diamati bahwa RMS dan beberapa peretas Emacs terkemuka lainnya harus pensiun dari pemrograman karena masalah dengan OOS, di mana Bill Joy, Bram Moolenaar dan berbagai tokoh lainnya masih ada di sana. Emacs adalah keras di jari kelingking Anda.

  • Emacs adalah sistem yang jauh lebih katolik daripada vi, dan dipandang sebagai contoh kanonik amplop perangkat lunak . Bersamaan dengan Netscape, ini adalah salah satu kontribusi jwz untuk membuktikan hukum ini.

Satu hal unik yang saya lakukan dengan xemacs dulu adalah menjalankannya pada mesin dan membuka sesi x pada xterminal (sebenarnya Sun repurposed 3/60) di ruangan yang berbeda melawan buffer yang sama pada instance running yang sama.

Kelebihan: Dapat diperluas, lebih kuat daripada editor lainnya yang dikenal manusia, integrasi matang dengan hampir semua alat pemrograman perangkat lunak bebas utama.

Kontra: Ergonomis yang dipertanyakan, elisp tidak mudah dipelajari.

Vim

Disclamer - Saya beralih dari menggunakan emacs ke vim sekitar 10 tahun yang lalu dan saya terbiasa menggunakan vim pada sistem berbasis Windows dan Unix/Linux.

  • Vi dan turunannya memiliki fasilitas makro keyboard yang sangat bagus untuk mengotomatiskan tugas-tugas pengeditan. Fasilitas scripting di vim tidak secanggih elisp, tetapi Anda dapat membangunnya dengan dukungan untuk Python, Tcl, Perl dan mungkin beberapa sistem lainnya. Saya hanya sesekali menulis skrip (di luar file .vimrc) untuk vim.

  • Vim memiliki jejak kaki yang lebih kecil dari emacs, tetapi ini bukan masalah besar akhir-akhir ini.

  • Dokumentasi dan bantuan online Vim cukup bagus. Emacs memiliki dokumentasi on-line yang cukup bagus, tapi saya pikir itu tidak selengkap vim.

  • Vim mewarisi antarmuka pengguna modal unik vi, tetapi memiliki kemampuan untuk berperilaku seperti editor tanpa mod sekarang, karena Anda dapat menavigasi dalam mode penyisipan. Pada Windows, ia dapat berperilaku sangat mirip dengan aplikasi windows.

Kelebihan: Fasilitas makro keyboard yang bagus, ekstensibilitas dan skrip yang lumayan bagus, tetapi tidak sebagus emacs. Vim atau editor yang diturunkan vi adalah standar pada kebanyakan jika tidak semua distro linux unix atau keperluan umum. Ergonomi bisa dibilang lebih baik.

Kontra: Antarmuka pengguna modal terasa aneh bagi orang yang terbiasa dengan UI Windows. Kurang dari masalah dengan vim hari ini.

Saya biasanya menggunakan Vim, tetapi mereka berdua adalah editor yang hebat.

Belajar menggunakan vi itu jahat, tetapi saya berhasil melewatinya dan belajar untuk menyukainya. Momen paling frustasi saya adalah ketika kunci caps lock menyala. Anda dapat mencoba dengan gVim, tetapi salah satu keuntungan terbesar dengan vi dan Emacs adalah kemampuan untuk melakukan hal-hal yang rapi sambil tetap menggunakan keyboard, dan gVim kemungkinan akan membuat Anda tetap menggunakan mouse. (Belajar bermain game roguelike pada saat yang sama memberi saya latihan dengan tombol gerakan kursor, tetapi terkadang membuat saya mencoba bergerak secara diagonal dalam dokumen.)

Emacs mungkin lebih mudah didekati. Ini modeless, dan Anda tidak akan mengacaukan diri Anda dengan menekan tombol caps lock. Gagasan mengendalikan editor melalui mengetik huruf dengan tombol kontrol turun seharusnya tidak terlalu asing bagi pengguna listrik modern, meskipun kunci sebenarnya untuk melakukan hal-hal akan tampak liar dan sewenang-wenang untuk pengguna Windows/Mac OS X khas. Sekali lagi, versi yang memungkinkan Anda untuk menggunakan mouse akan membantu Anda dalam jangka panjang.

Keduanya membutuhkan beberapa tingkat keahlian untuk digunakan secara efektif. Tidak seperti, katakanlah, Notepad, Anda tidak bisa hanya duduk dan mengedit.

Keduanya dapat dikonfigurasi, meskipun untuk ekstensi penulisan uang saya di LISP yang sama editor yang ditulis dalam membuat pengalaman yang lebih halus. (Emacs, seperti yang biasanya didistribusikan, sebenarnya bukan editor. Ini adalah lingkungan LISP yang dirancang untuk pemrosesan teks, dengan banyak perangkat lunak pra-tertulis, termasuk editor. Oleh karena itu lelucon "Emacs membuat Shell yang layak, tetapi bisa menggunakan editor yang lebih baik. ")

Saya biasanya menggunakan Vim karena, setelah pelatihan yang ekstensif, rasanya lebih mudah. Ini mungkin karena keuntungan dalam sistem mode, di mana sejumlah besar perintah tersedia menggunakan satu jari di dekat baris rumah, atau "sindrom bebek bayi", yang berlaku sangat banyak untuk editor: setelah Anda belajar yang baik, Anda biasanya tetap untuk itu.

Anda tidak akan salah menggunakan salah satu.

15
David Thornley

Saya kebetulan berpikir bahwa komentar "vim is modal" di atas tidak benar. Vim memiliki perintah. Anda dapat melakukan "11a Sekarang adalah waktu untuk semua orang baik .." dan berakhir dengan 11 baris teks baru yang identik dalam file Anda. Itu perintah, bukan mode. Tapi sebenarnya ada perbedaan yang sangat mendasar dalam perintah Vim vs perintah Emacs. Saya tidak sepenuhnya yakin saya bisa menggambarkannya, tetapi Eric Fischer memasukkan pengeditan garis gaya Emacs dalam driver TTY 10+ tahun yang lalu, dan menerbitkan makalah tentang itu:

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

Dia menemukan bahwa pengeditan garis gaya Emacs pada dasarnya berbeda dari vi-gaya.

Jadi Emacs memiliki kelebihan bahwa banyak hal lain (bash, gnuplot, zsh, ksh beberapa yang lain tidak dapat saya pikirkan), semua akhirnya menerapkan pengeditan garis gaya Emacs.

Saya harus mencatat bahwa saya pribadi menggunakan Vim sepanjang waktu. Saya hanya pengguna Emacs yang sangat jarang.

9
Bruce Ediger

Karena belum dinyatakan secara eksplisit, saya akan menambahkan bahwa tidak ada lingkungan pemrograman yang lebih baik (LISP dalam kotak, SLIME, dll.) Daripada distribusi Emacs yang sedikit dimodifikasi. Semua kebutuhan pemrograman saya (99%) dipenuhi dari dalam Vim, tetapi untuk semua perpustakaan dan rutinitas LISP yang saya tulis, saya harus menjalankan Emacs untuk menyelesaikan sesuatu yang produktif.

9
Shamster

Alasan utama saya tidak menggunakan vi/vim adalah karena modalnya. Alasan utama saya menggunakan vi adalah karena ini tersedia hampir di mana-mana.

Saya menggunakan Vim/gVim.

Saya dulu menggunakan Emacs, tetapi saya menemukan gVim umumnya bekerja lebih cepat pada mesin yang lebih lambat, ditambah, karena persyaratan POSIX-nya, vi tersedia hampir di mana-mana.

Saat menggunakan Vim atau gVim, saya sering menggunakan mouse, dukungannya bagus, saya pikir.

Saya mulai menggunakan Emacs, karena lebih mudah digunakan untuk pengguna pemula. Saya menemukan penggunaan nano menjadi cukup rentan karena beberapa alasan, dan pada titik tertentu saya menyadari bahwa saya jauh lebih nyaman dengan menggunakan vi.

Sekarang, ini campuran. Saya menggunakan Eclipse dan gedit juga cukup sering. Vim, bagaimanapun, masih menjadi editor favorit saya dan paling banyak digunakan.

8
polemon

Saya menggunakan gVim dan Emacs dengan cukup baik untuk menjadi produktif, meskipun saya tidak ahli dalam keduanya. Satu hal yang dapat saya katakan dengan pasti adalah bahwa Vim dan gVim berjalan lebih cepat pada laptop Windows 7 saya (yang harus saya gunakan di tempat kerja). Emacs, pada kotak Windows, memiliki kebiasaan aneh "berhenti" hingga menit dan menjadi tidak responsif, bahkan sambil terus menerima input keyboard, sebelum memuntahkan semua yang terakumulasi dalam buffer keyboard dalam Rush. Ini tidak terjadi di Mac OS atau Linux. Meskipun demikian saya menemukan diri saya menggunakan Vim atau gVim sebagian besar waktu di semua platform hanya jadi saya tidak harus berhenti dan memikirkan editor mana yang saya gunakan dan sesuaikan. Yang mengatakan, dalam lingkungan murni * nix, saya mungkin akan tetap dengan Emacs karena saya menemukan mengedit modeless sedikit lebih alami.

Intinya: menurut saya kedua editor cukup kuat untuk menangani semua dan semua kebutuhan pengeditan teks. Pilihan harus didasarkan pada pertimbangan praktis (seperti spesifikasi implementasi platform), dan gaya kerja.

7
Wing Flanagan

Perbedaan utama antara Emacs dan Vim adalah ergonomis. Ada sindrom carpal tunnel, CTS, seperti yang Anda tahu. Emacs sangat "berbahaya" jika Anda memiliki CTS dan memprovokasi CTS. Vim - tidak, Anda dapat membaca tentang perbedaan ini di banyak tempat. Misalnya, di Vim Anda dapat mengedit teks hanya dengan satu jari. Di Emacs - Anda tidak bisa :)

3
Paul