Perbedaan antara Emacs dan Vim

685

Tanpa masuk ke argumen keagamaan tentang mengapa yang satu lebih baik dari yang lain, apa perbedaan praktis antara Emacs dan Vim? Saya ingin belajar satu atau yang lain, tetapi saya menyadari kurva belajar untuk masing-masing tinggi dan saya tidak bisa memutuskan. Saya tidak pernah menggunakan editor jenis ini (saya selalu menggunakan IDE), jadi apa pun yang membantu pemula adalah nilai tambah.


Sebelum perang api dimulai: Saya tidak bertanya mana yang lebih baik, saya bertanya perbedaan antara keduanya. Saya ingin perbandingan objektif .

Sasha Chedygov
sumber
3
Jika Anda menggunakan Mac (OSX), maka Anda akan menemukan bahwa banyak perintah pergerakan kursor emacs dasar bekerja cukup banyak di mana-mana. (Misalnya mereka bekerja di sini di mana saya mengetik komentar ini ke halaman web.) Jadi bagi pengguna Mac, ada manfaat sistem untuk mempelajari setidaknya subset emacs berikut: ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt
2
@JamesAnderson: dalam pengalaman saya justru sebaliknya. Sudah menggunakan vim selama 2,5 tahun, kemudian beralih ke emacs. Orang-orang emacs kebanyakan tidak peduli ... "apa pun yang bekerja untuk Anda" Inilah yang ,salespitchdikatakan di #emacs<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
Silex
2
Emacs jelas merupakan sistem operasi yang hebat, tetapi tidak memiliki editor yang layak.
technical_difficulty
1
@ JimmyM.G.Lim Tidak, ia menggunakan pager saat ini pada sistem. Jika Anda menjalankan PAGER=cat manmaka manusia akan menampilkan teks langsung ke layar.
SS Anne
1
tebak polisi "terutama berdasarkan pendapat" tidak ada ketika ini pertama kali ditanyakan ;-) ah, kali lebih sederhana ... satu hal yang akan saya katakan adalah bahwa sekali, membaca buku tentang emacs dan mencobanya, saya pikir itu adalah bomnya. 3 minggu liburan kemudian saya menemukan saya benar-benar lupa semua penekanan tombol. vim di sisi lain bukan benar-benar hal saya, tapi saya dapat andal berfungsi dengan itu ketika dibutuhkan hanya menggunakan i, esc, wq.
JL Peyret

Jawaban:

491

(teks di bawah ini adalah pendapat saya, tidak boleh dianggap sebagai fakta atau penghinaan)

Dengan Emacs Anda diharapkan membuatnya buka 24/7 dan tinggal di dalam program, hampir semua yang Anda lakukan dapat dilakukan dari sana. Anda menulis ekstensi Anda sendiri, menggunakannya untuk membuat catatan, organisasi, permainan, pemrograman, akses shell, akses file, mendengarkan musik, menjelajah web. Butuh berminggu-minggu sampai Anda akan senang dengan itu dan kemudian Anda akan belajar hal-hal baru setiap saat. Anda akan terganggu ketika Anda tidak memiliki akses ke sana dan terus mengubah konfigurasi Anda. Anda tidak akan dapat menggunakan versi emacs orang lain dengan mudah dan itu tidak hanya diinstal. Ini menggunakan Lisp, yang sangat bagus. Anda dapat membuatnya menjadi apa pun yang Anda inginkan. (apa-apa)

Dengan Vim, hampir selalu diinstal sebelumnya. Itu cepat. Anda membuka file, lakukan edit cepat lalu keluar. Anda dapat bekerja dengan pengaturan dasar jika Anda menggunakan komputer orang lain. Ini tidak begitu dapat diedit, tetapi masih jauh lebih baik daripada kebanyakan editor teks. Itu mengakui bahwa sebagian besar waktu Anda membaca / mengedit tidak mengetik dan membuat bagian itu lebih cepat. Anda tidak menderita kelingking emacs . Itu tidak begitu menyebalkan. Lebih mudah dipelajari.

Meskipun saya menggunakan Emacs sepanjang hari setiap hari (dan menyukainya) kecuali jika Anda bermaksud menghabiskan banyak waktu dalam program yang Anda pilih, saya akan memilih vim

James Brooks
sumber
153
Jika tidak tersedia: Saya sarankan menempatkan .emacs dan .emacs.d Anda dalam repo kontrol sumber, dan mendapatkan pengaturan Emacs yang sempurna hanyalah masalah checkout.
Duncan Bayne
7
Baik emacs dan vim dapat menderita dari apa yang dijelaskan di atas: keduanya dapat dikonfigurasi ke titik di mana mereka tidak dapat dikenali dibandingkan dengan bentuk vanilla mereka. Juga, saya gunakan kedua vcs.
Alexej Magura
11
Sistem apa yang Anda gunakan, @Radu? Saya belum pernah melihat sistem kehidupan nyata di tahun 2010-an yang memiliki yang nyata vialih-alih disebut vimdengan itu.
DAPAT DITERIMA
9
Mungkin Vim lebih mudah dipelajari daripada Emacs, tetapi ini sangat membingungkan saat pertama kali Anda memulainya jika Anda tidak memiliki pengalaman sebelumnya dengannya! Saya harus menggunakan google untuk dapat menutupnya, dan masih harus mencoba beberapa kali untuk memperbaikinya.
HelloGoodbye,
9
Jangan pernah meremehkan merembes "pra-instal" VIM: itu hampir selalu tersedia di mana pun Anda pergi, dan dapat digunakan dengan sedikit / tanpa penyesuaian. Saya menggunakannya setiap saat saat sshke komputer lain. Inilah sebabnya saya mempelajarinya lebih dulu — itu, dan karena teman-teman saya mengenal VIM dan dapat membantu saya. (Jangan meremehkan dukungan teman!)
jvriesem
137

Vim bukan shell. Dan itu tidak berkomunikasi dengan baik dengan subproses. Ini hampir sesuai desain, sedangkan di Emacs, elemen-elemen ini termasuk dalam desain. Ini berarti bahwa beberapa hal, seperti menanamkan debugger atau interpreter (menghasilkan semacam IDE), sulit di Vim.

Juga, pintasan Emacs terutama diakses melalui pengubah, dan jelas antarmuka Vim adalah modal terkenal, memberikan akses ke jumlah langsung dari kunci langsung untuk manipulasi.

Emacs dulunya adalah satu-satunya editor dari keduanya yang dapat diprogram, dan sementara Vim memiliki banyak level aneh pada kemampuan diprogramnya, dengan penambahan ikatan Python dan Ruby (dan banyak lagi, saya lupa), Vim juga dapat diprogram dalam banyak hal Anda akan peduli.

Saya menggunakan Vim, dan saya cukup senang dengannya.

Svend
sumber
6
Pembaruan kecil: Vim mendukung komunikasi yang jauh lebih baik dengan sub-proses sejak versi 8.0 dan 8.1 bahkan memperkenalkan buffer terminal, sehingga semakin dekat dengan emacs dalam hal ini.
DarkWiiPlayer
110

Vim:

  • lebih baik sebagai editor sederhana (lebih sedikit tombol yang diperlukan untuk tugas-tugas sederhana)
  • komunitas skrip yang lebih aktif - bahasa internal: vimscript
  • satu repositori pusat skrip, plugin, skema warna, ...
  • juga dapat dikembangkan dengan python, ruby
  • dapat dibuat portable (emacs memiliki beberapa masalah dengan itu)

Emacs:

  • non modal secara default (sebagian besar editor hari ini telah mengambil pendekatan ini). Meskipun ada mode jahat yang meniru perilaku vim.
  • bahasa yang lebih kuat untuk memperluasnya (elisp adalah bahasa yang penuh sesak nafas, dan dalam emacs Anda dapat secara praktis mendefinisikan kembali segala sesuatu; sementara di vim Anda tidak dapat mendefinisikan kembali membangun dalam fungsi editor. tidak menyerupai apa pun)
  • lebih bisa diperluas
  • dukungan luar biasa untuk alat GNU (banyak dari mereka)

Secara pribadi, saya lebih suka vim - ini kecil, melakukan apa yang seharusnya dilakukan, dan ketika saya berharap IDE penuh saya buka VS. Pendekatan Emacs untuk menjadi editor yang ingin menjadi IDE (atau harus saya katakan, OS), tetapi tidak cukup, adalah IMHO, ketinggalan jaman. Di masa lalu memiliki klien email, klien ftp, tetris, ... yang lainnya dalam satu paket (emacs) masuk akal ... saat ini, tidak lagi.

Namun keduanya merupakan topik diskusi keagamaan di kalangan programmer dan pengguna komunitas pengguna super, dan dalam hal itu, keduanya sangat baik untuk memulai perang api jika melakukan kontak (dalam kalimat / pertanyaan yang sama).

Benteng
sumber
47
"lebih baik sebagai editor" cukup samar. Saya akan tertarik melihat alasan mengapa.
Allen
41
@ Allen - Apa yang samar di dalamnya? Saya jarang bertemu dengan pengguna baik vim dan emacs, yang memiliki masalah dengan pernyataan itu. Bahkan pengguna hardcore emacs biasanya menerimanya sebagai fakta. Sudahkah Anda menggunakan kedua editor? Saya percaya relatif jelas bahwa vim memiliki keunggulan dalam aspek fitur pengeditan teks.
Benteng
36
Saya ragu siapa pun akan menerimanya sebagai fakta. Sebagai pengguna lama baik emacs dan polos VI, saya telah menggunakan vim beberapa kali - tetapi "lebih baik sebagai editor" harus pergi ke emacs dalam pikiran saya jika tanpa alasan lain selain pilihan mode utama dan minor yang jauh lebih luas untuk membantu Anda saat Anda mengetik.
Kendall Helmstetter Gelner
61
Vim lebih baik sebagai editor karena memanipulasi teks membutuhkan lebih sedikit gerakan tangan dan jari Anda daripada emacs, setidaknya itu adalah pengalaman saya.
StackedCrooked
7
Tapi selain itu, vim efektif lebih cocok untuk pengeditan: nomor baris, mode visual, manipulasi wint1.kaist.ac.kr/files/attach/images/59/450/… . FCOL, saya kesulitan mendapatkan emacs hanya untuk menggulir satu baris pada satu waktu.
Benteng
52

Jika Anda mencari analisis obyektif dari kedua editor, lihat asal mereka dan filosofi di balik desain masing-masing. Pikirkan, mana yang lebih cocok untuk Anda dan mempelajarinya (dan mempelajarinya dan mempelajarinya, karena perlu waktu sebelum Anda menemukan utilitas sebenarnya dibandingkan dengan IDE apa pun). Pengantar Editing Layar dengan Vi ditulis oleh Bill Joy dan Mark Horton dan dia menjelaskan mengapa dia memilih modal desain dan alasan untuk berbagai stroke utama (ini membantu saya untuk mengingat bahwa CTRL-W + W (akan beralih ke W indow berikutnya dan itu) akan sama untuk CTRL W + CTRL W, kalau-kalau Anda memegang kunci CTRL untuk durasi yang lebih lama.

Berikut ini tautan ke timeline Emacs dan memiliki referensi ke makalah Multics Emacs. Di sini adalah makalah RMS tentang Emacs , di mana saya melihat tekanannya ada pada editor teks yang dapat diprogram (bahkan jauh di tahun 1981 dan sebelumnya).

Saya belum membaca surat kabar emacs, tetapi telah membaca surat kabar Bill Joy beberapa kali. Keduanya sudah tua, tetapi Anda masih akan mendapatkan filosofi dan Anda mungkin memilih untuk menggunakan alat saat ini (vim 7.x atau emacs 25?)

Sunting: Saya lupa menyebutkan bahwa dibutuhkan kesabaran dan imajinasi untuk membaca kedua makalah ini karena akan membawa Anda kembali ke masa ketika membacanya. Tapi itu layak.

Senthil Kumaran
sumber
43
  1. Vim selalu lebih cepat untuk memulai daripada Emacs. Saya mengatakan bahwa pada mesin apa pun, pemasangan Vim yang out-of-the-box akan dimulai lebih cepat daripada pemasangan Emacs yang out-of-the-box. Dan saya cenderung berpikir bahwa setelah kustomisasi dalam jumlah sedang, Vim masih akan mulai lebih cepat daripada Emacs.

  2. Setelah itu, perbedaan praktis lainnya adalah mode Emacs. Mereka membuat hidup Anda jauh lebih mudah saat mengedit XML, C / C ++ / Java / apa pun, LaTeX, dan sebagian besar bahasa populer yang dapat Anda pikirkan. Mereka membuat Anda ingin membuat editor terbuka untuk sesi dan pekerjaan yang panjang.

Secara keseluruhan, saya akan mengatakan bahwa Vim menarik Anda ke sana untuk tugas pengeditan yang cepat dan singkat; sementara Emacs mendorong Anda untuk menyelam dalam sesi panjang.

Yawar
sumber
1
Saya tidak berpikir mode membuat hidup lebih mudah, sebaliknya. Dan Larry Tesler juga berpikiran sama .
Eliran Malka
2
Bagaimana mode Emacs membantu pengodean? (Saya baru
mengenalnya
4
Dulu saya beralih dari vi ke emacs karena empat alasan: (a) satu klik untuk sampai ke kesalahan kompiler berikutnya, (b) integrasi gdb, (c) grep dan find-grep. Apakah mungkin melakukan hal-hal ini dalam vim sekarang?
zzz777
"Vim selalu lebih cepat untuk memulai daripada Emacs" - jika Anda menjaga server emacs berjalan, tarting emacs-client sangat cepat. Saya punya skrip untuk itu, yang saya tiru (menggunakan git) di semua mesin saya. (I * do * juga menggunakan vim, sebenarnya; itu selalu tergantung di mana saya berada, dan apa tugasnya)
Jay
"Vim selalu lebih cepat untuk memulai daripada Emacs" - juga, dengan use-packagedan :deferopsinya, Emacs saya terbuka segera. Saya bahkan menyerah menggunakan emacsclient.
Jay
37

VI selalu tersedia dan akan berjalan pada mode pengguna tunggal yang paling lumpuh, grafik rusak, tanpa keymap, mesin tautan lambat - jadi patut diketahui cara mengedit file sederhana di dalamnya hanya untuk tugas sysadmin.

Emacs adalah antarmuka pengguna yang lengkap dalam editor. Idenya adalah Anda menyalakan Emacs ketika Anda menghidupkan mesin dan tidak pernah meninggalkannya. Mungkin ada ribuan sesi yang hadir.

Apakah mempelajari kemampuan Emacs layak dibandingkan dengan menggunakan editor GUI / IDE dan menggunakan sesuatu seperti python / awk / etc untuk tugas-tugas tambahan terserah Anda.

Martin Beckett
sumber
2
Saya tahu VI hanya untuk alasan-alasan itu - tetapi hari ini saya akan mengatakan bahwa sangat tidak mungkin Anda akan menemukan sistem UNIX tanpa setidaknya instalasi EMACS dasar, dan itu dapat membuat lingkungan shell yang buruk lebih dapat ditoleransi.
Kendall Helmstetter Gelner
3
Atau, selai busybox ke initrd dan debug driver penyimpanan yang rusak untuk perangkat boot, begitu awal dalam proses init sehingga yang Anda miliki hanyalah disk ram awal, namun Anda masih memiliki editor - vi.
smcameron
2
Setelah beberapa saat dengan vi, jari-jari Anda tahu gerakannya - tetapi Anda tidak dapat mengingat apa kunci yang sebenarnya!
Martin Beckett
10
Saya pikir itu adalah ed"selalu tersedia dan akan berjalan pada mode pengguna tunggal yang paling lumpuh, grafis rusak, tanpa keymap, mesin tautan lambat." Tunggu, tahun berapa ini? (Huh - ed, aku tidak akan pernah melupakanmu.)
belacqua
2
@Kendall: Linux ubuntu saat ini tidak datang dengan emacs diinstal.
intuited
25

Saya penggemar berat Emacs, tetapi saya mengenal VI jauh sebelum saya mengenal Emacs. Yang mengatakan, saya membuat semua orang saya belajar VI karena selalu tersedia, di mana-mana. Tidak bisa salah dengan salah satu dari mereka.

Joe Casadonte
sumber
2
Ini juga pengalaman saya ... Emacs atau uEmacs tidak pernah tersedia. Editor pertama saya adalah uEmacs (di Amiga) tetapi karena saya belajar vim, terlalu nyaman untuk memilikinya.
Marius
Ini pada dasarnya pengalaman saya juga. Vi ada di mana-mana dan umumnya diinstal sebagai $ EDITOR default pada sistem unix, jadi Anda harus mengetahuinya jika Anda bekerja dengan unix. Yang mengatakan, saya menggunakan emacs untuk mengedit teks setiap hari dan saya menyukainya.
Fergie
14

Tampaknya jawaban sudah dipilih, tetapi perbedaan besar bagi saya selalu menjadi modal vs non-modal. Vim adalah modal, yang berarti melakukan optimasi berdasarkan serangkaian mode penggunaan tertentu. Setidaknya begitulah aku selalu melihatnya. Ini membuat menggunakan Vim pengalaman yang berbeda karena alih-alih memiliki area kerja tempat Anda mengetik kode, Anda benar-benar memberitahu lingkungan untuk bertindak pada teks. Inilah sebabnya mengapa orang mengatakan hal-hal seperti dengan Vim Anda benar-benar belajar bahasa. The: wq dan: s / foo / bar adalah bagian dari lingkungan mirip shell yang mengedit dan membaca teks.

Emacs di sisi lain jauh lebih dekat dengan kebanyakan editor / pengolah kata / dll. kamu lihat hari ini. Anda memiliki ruang kerja yang memiliki antarmuka yang sangat dapat diprogram. Itulah mengapa Anda melihat hal-hal seperti email, irc, shells, dll. Sebagai seorang programmer mudah untuk berpikir dalam hal mengatakan "ambil nomor baris saya dan lakukan sesuatu dengan informasi". Keinginan untuk meninggalkan editor menjadi lebih sedikit karena daripada harus berhenti, buka beberapa aplikasi / bahasa lain dan melakukan hal-hal pada beberapa teks, Anda memiliki Emacs di mana Anda dapat melakukan hal-hal ini dalam lingkup editor Anda.

Kedua ide tersebut tidak selalu kontras, tetapi hanya karena mereka mengungkapkan dua fokus yang berbeda. Secara pribadi saya menggunakan Emacs, tetapi saya telah melihat orang-orang yang mengenal Vim dengan sangat baik dan dapat dengan jujur ​​mengatakan tidak masalah yang Anda pilih. Saya mencoba Vim pertama tetapi Emacs akhirnya menempel untuk saya. Memang benar bahwa apa pun yang Anda pilih, Anda harus setidaknya cukup mahir dalam Vim karena selalu tersedia.

elarson
sumber
13

Saya mulai dengan vi, pergi ke emacs, lalu ke vim. Saya sudah berpikir untuk mencoba Emacs untuk melihat apa yang berubah dalam lima tahun terakhir. (Ngomong-ngomong tentang IDE, saya sempat masuk ke gerhana sebentar, tapi saya lebih suka jendela terminal saya menghubungkan mac saya ke kotak linux (suami)).

Masalah memotong dan menempel telah mengganggu saya akhir-akhir ini. Memotong dan menempel di Vim membutuhkan lebih banyak langkah daripada di Emacs, IIRC. Dan menyisipkan dari mengatakan browser ke jendela terminal menjengkelkan kecuali jika Anda melakukan sesuatu yang tidak ingin saya lakukan, jadi saya tahan dengan lekukan aneh. Saya pikir, mengedit banyak file di emacs lebih mudah. Setidaknya melompat dari satu file ke yang lain jika Anda memiliki keduanya di layar.

Saya belum bermain dengan fitur mewah baik vi atau emacs, karena saya hanya ingin sampai ke bisnis pengkodean. Yang saya butuhkan adalah warna cantik dan konversi tab ke ruang yang tepat (terutama penting dengan python).

Saya pikir itu semua tergantung pada apakah Anda ingin menggunakan :wqatau Ctrl-x Ctrl-s(IIRC) untuk menyimpan file jika Anda tidak peduli dengan hal-hal mewah.

@ mgb benar. Saya sudah berada di linux minimum untuk memperbaiki sesuatu hanya satu atau dua bulan yang lalu di distro Debian. vi adalah satu-satunya editor yang tersedia.

Elizabeth Buckwalter
sumber
1
Ini masih belum selesai, tetapi jauh lebih mudah daripada menyesuaikan semua pengaturan yang mengacaukan pasta terminal. Gunakan :set paste, lalu tempel teks Anda dan setelah selesai :set nopasteakan kembali ke mode normal. Ada juga :set pastetoggle=<F2>perintah yang akan beralih ini menggunakan kombo kunci yang Anda pilih.
hbar
Dalam mode indentasi, Anda dapat melakukan ^R^P+paste dari clipboard dan menjaga indentasi saat ini. ^R^O+akan menjatuhkan lekukan. ^R+akan memasukkannya seolah-olah Anda akan mengetiknya. :help i_^R^Puntuk info lebih lanjut.
intuited
3
Saya tidak bisa membayangkan memotong / menempel menjadi lebih mudah daripada yyp. Juga, lihat di sini untuk memotong dan menempel ke dan dari berbagai jendela stackoverflow.com/a/8757876/654789
puk
@puk - Ctrl-k (yank) / Ctr-y (put) sama mudahnya di emacs. Di Emacs Anda juga memiliki banyak register (az), Anda dapat menyimpan teks atau posisi saat ini ke ...
Kendall Helmstetter Gelner
3
vim juga memiliki beberapa register
TamaMcGlinn
12

Ada perbedaan besar pada level sehari-hari - Vim (atau varian vi) secara inheren modal (Anda masuk ke mode perintah di mana Anda tidak dapat mengedit) dan Emacs (bersama dengan sebagian besar editor lain) tidak.

Tentu, menggunakan menu dan semacamnya Anda tidak harus benar-benar masuk ke mode perintah di Vim - pada awalnya. Tetapi untuk menggunakan bahkan sebagian kecil dari kekuatan Vim Anda akan melakukannya. Itulah inti dari debat Vim / Emacs.

Secara pribadi, saya juga berpikir Emacs jauh lebih fleksibel. Anda dapat menemukan paket Elisp untuk banyak hal.

Saya ingin tahu, mengapa Anda berpikir untuk mempelajari salah satunya melalui IDE yang lebih tradisional. Untuk apa Anda ingin mempelajari salah satunya?

Kendall Helmstetter Gelner
sumber
8
Saya hanya ingin mempelajarinya untuk melihat apakah itu sesuai dengan hype, jujur. Saya telah melihat betapa fleksibelnya keduanya, dan saya telah melihat para ahli melakukan beberapa hal yang cukup gila di dalamnya, dan saya ingin melihat apakah itu layak untuk kurva pembelajaran. Plus, IDE saya tidak mendukung Lisp. :)
Sasha Chedygov
3
Hmm. Masalahnya adalah bahwa ada begitu banyak Emacs ... tetapi hal yang saya masih meninggalkan IDE untuk menggunakan emacs adalah serangkaian tugas kompleks yang berulang, yang saya otomatisasi menggunakan perekaman makro. Misalnya Anda dapat mengambil kata atau ungkapan saat ini, salin itu ke dalam "buffer" (pikirkan cut / paste saja Anda dapat memiliki lebih dari satu), kemudian masuk ke file lain, ketik beberapa teks sebagian menggunakan nilai yang disalin dan kemudian yang lain sebelumnya nilai yang disalin juga, lanjutkan kursor, simpan posisi dan kembali ke buffer pertama lagi ... kemudian ulangi proses untuk baris berikutnya dari file asli.
Kendall Helmstetter Gelner
1
Saya telah banyak menggunakan Macro di vi dan Emacs. Apa yang Anda lewatkan adalah fakta bahwa Emacs memiliki pilihan metode yang jauh lebih luas untuk diakses saat menggunakan makro, dan fakta bahwa Anda dapat menggunakan buffer potong di mana saja - bahkan di tengah istilah pencarian misalnya. Tolong beritahu saya bagaimana Anda akan menulis makro yang akan memilih satu kata dari ekspresi berdasarkan regex, ambil istilah yang ditemukan, cari dokumen lain pada istilah itu dan kemudian lakukan penggantian di sekitarnya?
Kendall Helmstetter Gelner
2
@ kendall-helmstetter-gelner - yang dimungkinkan dengan vimscript, atau bahasa vim memiliki binding untuk (seperti ruby ​​/ vim / tcl / perl). Anda memiliki akses ke semua fungsi vim dan buffer editor dari bahasa skrip.
Segy
1
Itu mengesankan tetapi untuk melakukan hal yang sama di Emacs hanya perlu menggunakan penekanan tombol yang sudah saya tahu untuk membentuk makro yang kompleks, daripada harus menulisnya dengan tangan. Sangat mudah bagi siapa saja yang tahu emacs untuk membuat makro yang melakukan tugas itu, tetapi saya akan mengatakan tidak ada banyak pengguna VI yang bisa membangun makro yang Anda buat tanpa banyak penelitian.
Kendall Helmstetter Gelner
11

Ada banyak hal yang telah dikatakan tentang kedua editor, tetapi saya hanya perlu menambahkan 5 pence saya. Kedua editor itu hebat dan Anda tidak bisa salah dengan keduanya.

Saya pengguna vi / vim selama sekitar 15 tahun sekarang. Saya sudah mencoba mengonversi ke emacs beberapa kali, tetapi setiap kali menemukan bahwa vim sebenarnya dapat melakukan hal yang hilang dari kotak tanpa perlu menulis ekstensi lisp atau menginstal sesuatu.

Bagi saya perbedaan utama dalam editor yang vim membuat Anda menggunakan lingkungan / OS, sementara emacs mencoba untuk merangkum atau menggantinya. Misalnya Anda dapat menambahkan tanggal dalam teks Anda dengan: r! Date in vim, atau kalender dengan: r! Cal 1 2014, atau bahkan mengganti konten buffer Anda dengan versi hex konten. Misalnya. :%! xxd, edit hex lalu kembalilah dengan:%! xxd -r, dan banyak lagi kegunaan lain, seperti builtin grep, sed, dll.

Contoh lain digunakan dengan jqdan gron. Misalnya. rekatkan json blob ke editor lalu jalankan untuk tranformation:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

ATAU

:%!jq .path.to.stuff

Setiap perintah pipa di atas dapat dijalankan secara terpisah melalui :%!<command>, di mana %berarti semua dokumen, tetapi juga dapat dijalankan pada seleksi, baris yang dipilih, dll. Di sini gron outputdapat digunakan sebagai jqpath.

Anda juga mendapatkan fungsionalitas pengeditan batch EX, mis. Mengganti kata-kata tertentu, memformat ulang kode, mengonversi dos-> unix karakter baris baru, menjalankan makro pada ucapkan 100 file sekaligus. Ini mudah dilakukan dengan mantan. Saya tidak yakin apakah emacs memiliki sesuatu yang serupa.

Dengan kata lain IMHO vim mendekati filosofi unix. Ini umumnya lebih sederhana dan lebih kecil, tetapi jika Anda tahu OS dan alat Anda, Anda mungkin tidak perlu lebih dari itu (VIM) yang ditawarkan. Saya tidak pernah melakukan.

Selain vi adalah defacto standar pada sistem unix / linux, mengapa belajar menggunakan 2 alat yang melakukan hal yang sama. Tentu saja beberapa sistem menawarkan mg atau yang serupa, tetapi jelas tidak semuanya. Unix + Vi <3.

Yah, hanya 5 pence saya.

Alex
sumber
8
"Vim mendekati filosofi unix." - Anda berbicara di sini tentang filosofi mengenai alat yang tersedia dari shell Anda. Shell itu sendiri, bagaimanapun, adalah aglomerasi besar built-in, sejarah, globbing, kontrol proses, kemampuan program, dan sebagainya. Emacs jelas lebih dekat dengan filosofi shell unix: menyediakan lingkungan yang sangat dapat disesuaikan di mana alat dapat digunakan bersama, dan membuatnya mudah bagi pengguna untuk memperluas set alat dengan potongan kode mereka sendiri saat mereka bekerja. Saya pikir kita dapat melihat bahwa baik emacs dan vim berakar kuat dalam tradisi unix.
Matt
1
Terima kasih atas komentar Anda. Bukan berarti niat saya untuk memulai perang editor di sini juga bukan untuk menyinggung pengguna emacs . Saya hanya merasa lebih mudah dan lebih portabel untuk menjalankan perintah aktual dari shell (atau dari dalam editor) sebagai kebalikan dari menulis ekstensi kompleks untuk merangkum fungsi dalam emacs , yang cenderung membuat lingkungan membengkak dari waktu ke waktu. Namun ekstensi ini tergantung pada preferensi pengguna dan dapat dilakukan tetapi tidak berarti diberlakukan oleh salah satu editor. Jadi setuju dengan Anda mengenai tempat emacs dan vi (m) dalam tradisi UNIX.
Alex
1
Hanya untuk melanjutkan non-perang, saya harap jelas bahwa saya tidak tidak setuju dengan analogi Anda "vim lebih seperti alat unix". Hanya terpikir oleh saya bahwa intuisi ini dapat diperpanjang dengan "dan emacs lebih seperti shell unix". :-)
Matt
@ Matt: Saya suka analoginya. Amin untuk itu. ;)
Alex
2
Anda dapat melakukan semua yang Anda sebutkan, dan lebih banyak lagi, dalam emacs (hexl-mode misalnya, langsung mengedit file dalam hex dengan pratinjau ascii ke samping). Saya tahu VI dengan cukup baik juga, tetapi membuat makro jauh lebih mudah dan lebih fleksibel dalam Emacs, dan itu bisa melakukan jauh lebih banyak daripada bahkan kebanyakan implementasi VIM modern. Itulah alasan untuk mengetahuinya, karena emacs ada di sebagian besar tempat dan dapat menawarkan peningkatan pengeditan teks nyata.
Kendall Helmstetter Gelner
10

Bagi saya pro emacs adalah,

  • tramp-mode memungkinkan Anda untuk mengedit file jarak jauh melalui ssh. sama seperti file lokal.
  • tramp-mode + dired = klien sftp berfitur lengkap
  • dukungan untuk setiap bahasa yang Anda butuhkan.
  • dibangun di terminal emulator (term-mode) sehingga saya dapat terus mengkode tanpa beralih di antara aplikasi.
  • diperpanjang apa pun yang Anda tidak suka, Anda dapat mengubah menggunakan lisp.
Hamza Yerlikaya
sumber
11
FWIW: vim cukup banyak memiliki 3 pertama (meskipun dengan nama yang berbeda. "Tramp-mode" adalah "netrw" dalam vim). # 4 umumnya dianggap sebagai bug, bukan fitur oleh pengguna vim. # 5 benar dalam vim jika Anda mengganti "elisp" (dialek cadel terburuk yang pernah, kata teman-teman saya yang pencinta Emacs) dengan python / mzscheme / perl / ruby ​​/ tcl / vimscript.
Laurence Gonsalves
3
dapatkah Anda berkomentar mengapa bug nomor 4?
Hamza Yerlikaya
2
Periksa addon Conque untuk shell yang tertanam di vim.
intuited
9

Bagi saya, emacs memiliki alat pengembangan yang lebih baik (tidak hanya alat berbasis tag).

bmeric
sumber
9

Di sini saya ingin mengutip kutipan dari buku "The Art of UNIX Programming":

Banyak orang yang secara teratur menggunakan vi dan Emacs cenderung menggunakannya untuk hal-hal yang berbeda, dan merasa berharga untuk mengetahui keduanya.

Secara umum, vi paling baik untuk pekerjaan kecil - balasan cepat ke email, penyesuaian sederhana untuk konfigurasi sistem, dan sejenisnya. Ini sangat berguna ketika Anda menggunakan sistem baru (atau yang jauh melalui jaringan) dan tidak memiliki file kustomisasi Emacs Anda.

Emacs hadir dengan sendirinya untuk sesi pengeditan yang diperpanjang di mana Anda harus menangani tugas-tugas kompleks, memodifikasi beberapa file, dan menggunakan hasil dari program lain selama sesi. Untuk programmer yang menggunakan X pada konsol mereka (yang khas pada Unix modern), adalah normal untuk memulai Emacs segera setelah waktu login di jendela besar dan membiarkannya berjalan selamanya, mungkin mengunjungi lusinan file dan bahkan menjalankan program di beberapa subwindows Emacs.

Yang benar-benar ingin saya tekankan di sini adalah: « Banyak orang merasa berharga untuk mengetahui keduanya

Andriy Tykhonov
sumber
Ini mungkin sudah ketinggalan zaman. Saya pikir hari-hari itu kemampuan bawaan Emacs untuk memiliki Browser, SSH, Music Player dan sistem lambat yang berhenti menyalakan aplikasi lain membuatnya percaya bahwa lebih baik membuka satu aplikasi dan tetap menggunakannya?
Nishant
Berita bagusnya adalah: itu tidak ketinggalan jaman! Anda dapat menggunakan Browser, Music Player dll di luar Emacs tetapi apa yang benar-benar membawa Emacs adalah antarmuka yang sama baik untuk semua fungsi ini dan satu cara (Elisp) untuk memperluas mereka.
Andriy Tykhonov
Menurut saya, perspektif TAUP tentang Emacs sudah usang karena, masa itu Emacs merupakan keuntungan untuk memilikinya karena ini adalah aplikasi tunggal yang berjalan yang dapat melakukan banyak hal sekaligus - seperti irc, musik, edit jarak jauh dll. Namun hari ini Anda memiliki aplikasi yang sangat baik untuk masing-masing tujuan ini dan memori tidak menjadi masalah seperti sebelumnya juga ... Bayangkan membaca Gmail di Emacs - Maksud saya antarmuka Gmail benar-benar memiliki ikatan kunci yang luar biasa dalam pembuatannya, mengkustomisasi itu menjadi Emacs Email Client. membutuhkan waktu yang lama dan mungkin tidak sebagus Antarmuka Gmail asli dll.
Nishant
Itu tidak ketinggalan jaman! :)
Andriy Tykhonov
> Namun hari ini Anda memiliki aplikasi yang sangat baik untuk masing-masing tujuan ini. Ya, tetapi Anda memiliki semua aplikasi ini dengan antarmuka, konfigurasi, pengalaman pengguna yang sangat berbeda, dll. Dll. Tapi Emacs adalah Alat Satu! Sebagai contoh, saya sangat suka binding kunci Emacs, saya menggunakannya di shell di browser. Dan sangat bagus bahwa setidaknya beberapa hal sama dalam aplikasi ...
Andriy Tykhonov
9

Manfaat Emacs

  • Emacs memiliki antarmuka non-modal (secara default) dan modal satu (mis. Emacs dapat meniru vim dan vi melalui Evil, Viper, atau Vimpulse).

  • Salah satu program komputer yang paling porting. Ini berjalan dalam mode teks dan di bawah antarmuka pengguna grafis pada berbagai sistem operasi, termasuk sebagian besar sistem mirip Unix (Linux, berbagai BSD, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, dan OpenVMS. Sistem Unix, baik yang gratis maupun berpemilik, sering kali memberi Emacs paket dengan sistem operasi.

  • Arsitektur server Emacs memungkinkan banyak klien untuk melampirkan ke instance Emacs yang sama dan berbagi daftar buffer, kill ring, undo history dan state lainnya.

  • Peresmikan sistem bantuan online dengan ikatan kunci, fungsi, dan perintah yang didokumentasikan dengan cepat.

  • Varian bahasa pemrograman Lisp yang dapat diperluas dan dapat disesuaikan (Emacs Lisp), dengan fitur yang meliputi:

  • File manager yang kuat dan dapat dikembangkan (dired), debugger terintegrasi, dan serangkaian besar pengembangan dan alat-alat lainnya.

  • Memiliki setiap perintah menjadi fungsi Emacs Lisp memungkinkan perintah untuk DWIM (Do What I Mean) dengan secara terprogram merespons tindakan sebelumnya dan status dokumen. Sebagai contoh, perintah switch-atau-split-window dapat beralih ke jendela lain jika ada, atau buat jika diperlukan. Ini mengurangi jumlah penekanan tombol dan perintah yang harus diingat pengguna.

  • "Sebuah OS di dalam OS". Emacs Lisp memungkinkan Emacs untuk diprogram jauh melampaui fitur pengeditan. Bahkan instalasi dasar berisi beberapa lusin aplikasi, termasuk dua browser web, pembaca berita, beberapa agen surat, empat klien IRC, versi ELIZA, dan berbagai permainan. Semua aplikasi ini tersedia di mana saja Emacs berjalan, dengan antarmuka dan fungsi pengguna yang sama. Dimulai dengan versi 24, Emacs termasuk manajer paket, membuatnya mudah untuk menginstal aplikasi tambahan termasuk browser web alternatif, EMMS (Emacs Multimedia System), dan banyak lagi. Juga tersedia banyak paket untuk pemrograman, termasuk beberapa yang ditargetkan pada kombinasi bahasa / perpustakaan tertentu atau gaya pengkodean.

Manfaat editor mirip vi

  • Perintah edit komposable
  • Vi memiliki antarmuka modal (yang dapat ditiru oleh Emacs)
  • Secara historis, vi memuat lebih cepat dari Emacs.
  • Sementara sangat terkait dengan tradisi UNIX, ini berjalan pada semua sistem yang dapat mengimplementasikan pustaka C standar, termasuk UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD dan POSIX-compliant sistem.
  • Dapat diperluas dan disesuaikan melalui skrip Vim atau API untuk bahasa yang ditafsirkan seperti Python, Ruby, Perl, dan Lua
  • Di mana-mana. Pada dasarnya semua sistem mirip Unix dan Unix hadir dengan vi (atau varian) bawaan. Vi (dan ex, tetapi bukan vim) ditentukan dalam standar POSIX.
  • Lingkungan penyelamatan sistem, sistem tertanam (terutama yang dengan busybox) dan lingkungan terbatas lainnya sering menyertakan vi, tetapi tidak emacs.

Sumber: https://en.wikipedia.org/wiki/Editor_war

artamonovdev
sumber
7

Sekarang Anda bahkan tidak perlu memikirkan perbedaan antara keduanya karena Spacemacs . Ini adalah distribusi Emacs berbasis komunitas.

Seperti yang dikatakan,

Editor terbaik bukanlah Emacs atau vim, Ini Emacs dan Vim.

Spacemacs menggabungkan yang terbaik dari Emacs dan Vim, yang membuat hidup dan pekerjaan Anda jauh lebih mudah.

Lihat tangkapan layar di bawah,


(sumber: spacemacs.org )

Lorem Ipsum Dolor
sumber
3
Ini curang ... Ini emacs dengan beberapa konfigurasi funky;) Sebenarnya cukup banyak konfigurasi
Alex
2
Ini bagus - ketika itu berhasil. Ketika tidak - jika Anda belum tahu elisp dan emacs atau Anda tidak dapat menemukan kontributor inti dalam obrolan gitter - Anda biasanya terjebak dan kurang beruntung. (Kadang-kadang menghapus direktori melpa Anda di .emacs dapat memperbaiki hal-hal, ...)
Aaron Hall
1
Meskipun memiliki lebih banyak barang daripada yang saya butuhkan, saya benar-benar puas dengan Spacemacs. Saya memiliki dotfile saya di github sehingga saya dapat mengatur mesin baru dengan mudah / cepat, dan karena saya menggunakan evil (vim keybindings) saya memiliki cukup keterampilan untuk bertahan ketika saya harus bekerja pada mesin di mana saya tidak dapat menginstal konfigurasi spacemacs saya.
anr78
6

Perbedaan terbesar bagi saya dalam memilih untuk menggunakan emacs lebih dari vim adalah dukungan built in gdb di emacs. Vim tidak memasukkan ini ke dalam distribusi defaultnya dan proyek di sana untuk mengintegrasikan gdb dan vim hampir tidak mungkin untuk dapat bekerja dengan MacVim

Grant Limberg
sumber
1
Saya menggunakan Vim untuk mengedit, dan Xcode untuk debugging, itu kurang dari ideal tapi bisa dilakukan ..
StackedCrooked
4

Seperti apel dan jeruk. Keduanya memiliki desain dan filosofi yang berbeda. Vim adalah Editor Teks sedangkan Emacs adalah Lisp Interpreter yang melakukan Editing Teks.

Saya menggunakan Vim karena cepat, ramping, dan sangat bagus dalam memanipulasi teks. Ini memiliki kunci alami yang dapat diikat yang mengikat yang dapat membuat tugas pengembangan Anda benar-benar harmonis. Vim didasarkan pada philiosphy * nix sederhana dalam melakukan satu hal dengan sangat baik - yaitu Manipulasi Teks.

Memperluas Vim menggunakan bash / zsh dan tmux biasanya mudah dan memungkinkan Anda belajar banyak hal. IMHO ini adalah kurva belajar yang baik. Kuncinya adalah belajar bagaimana mengintegrasikan hal-hal ini untuk mendapatkan aplikasi yang lebih besar. Dengan Vim, Anda harus mempelajari integrasi karena tidak secara alami berintegrasi kecuali Anda memberi tahu caranya. Ekstensi berharga lainnya yang saya gunakan adalah Tig. Ini adalah antarmuka berbasis Git ncurses. Saya hanya memiliki ikatan yang membuka Tig diam-diam dan kemudian saya melakukan semua hal Git di sana.

Terserah pengguna akhir untuk memutuskan mana yang terbaik. Bahwa Emacs dan Vim telah teruji oleh waktu adalah bukti kelayakan mereka. Akhirnya seorang programmer yang baik tidak membutuhkan lebih dari sekadar pena dan kertas untuk menjadi kreatif. Algoritma yang baik tidak memerlukan editor untuk mendukungnya. Jadi cobalah keduanya dan lihat apa yang membuat Anda lebih produktif. Dan pelajari pola desain dari kedua perangkat lunak ini karena ada banyak hal untuk dipelajari dan ditemukan!

Nishant
sumber
4

Emacs memiliki mode viper, jadi dalam beberapa hal, ia menyediakan superset fitur (kecuali yang dijelaskan dalam fitur Apa Vim yang hilang di Emacs dengan Viper dan Vimpulse? ).

vi (dan VIM IIRC) lebih ringan (dapat mengedit file di tempat), tetapi menawarkan lebih sedikit fitur (komunikasi subproses, bahasa ekstensi).

Trey Jackson
sumber
3

Emacs sebenarnya lebih merupakan program do everything , dan vi (m) sebenarnya hanyalah editor. Jika Anda mengedit teks, keduanya baik-baik saja, tetapi saya lebih suka emacs, hanya karena saya harus menggeser satu dari baris home untuk bergerak, dan terus mengetik hal-hal yang salah dalam mode perintah. Jika Anda tidak memiliki masalah itu, vi (m) mungkin editor untuk Anda.

qwertyuiop924
sumber
2

Sudut pandang kuning:

vi (bukan vim) adalah kebutuhan profesional. Anda selalu memiliki beberapa bentuk vi yang tersedia dengan mudah, apa pun lingkungannya. Anda bisa berada di vi saat di emacs, Anda bisa berada di vi untuk membangun perintah bash di unix-land.

Bahkan Microsquish harus mendukung vi (walaupun mereka melakukan pekerjaan yang baik untuk menyembunyikannya) karena pemerintah dan kepatuhan perusahaan dengan standar yang diterbitkan.

Menurut pendapat saya, jika Anda berada dalam pekerjaan langsung di lingkungan yang sibuk - bukan bunga rumah kaca terbatas pada satu rig mewah di lingkungan pengembangan, atau di akademi - mengetahui banyak tentang editor mewah adalah cacat pekerjaan. Jangan mempelajari semua trik mewah dalam vim atau emacs, dan jangan mengembangkan banyak makro untuk membuat lingkungan pengeditan berubah sesuai keinginan Anda. Ini adalah tenggang waktu yang sangat besar yang menghalangi Anda ketika Anda menghadiri mesin yang berbeda yang mungkin tidak dapat Anda benarkan dalam lingkungan pabrik.

Baca makalah Bill Joy - ini adalah latihan teknik yang sangat kompeten, bahkan mungkin indah, dalam mengedit teks biasa sangat, sangat cepat. Aturan Parito berlaku di sini: 80% dari buah adalah 20% dari keranjang. Mengedit teks biasa sangat cepat adalah inti dari kompetensi pengeditan - yang lainnya opsional - dan terkadang menyakitkan.

pengguna3305072
sumber
3
Koran mana yang kamu bicarakan? Bisakah Anda setidaknya memberi nama, jika bukan tautan?
darkfeline
2
"Bahkan MS harus mendukung vi." Bisakah Anda mendukung ini?
dodgethesteamroller
1

Jika Anda sering berpindah dari satu situs ke situs lain atau pekerjaan Anda melibatkan masuk ke sistem produksi maka vim adalah cara untuk pergi.

Semua mesin * nix akan diinstal secara default.

Kebanyakan sysdamin lebih memilih ksh sebagai shell default. ksh menggunakan penekanan tombol perintah vi (atau emacs) untuk mencari riwayat dan mengedit baris perintah.

Jika Anda tidak tahu benar Anda cacat parah ketika Anda masuk ke kotak unix dengan konfigurasi standar.

Untuk alasan ini saja saya akan merekomendasikan vim sebagai editor normal Anda setiap hari. Saya telah melihat penggemar emacs merobek rambut mencoba mengubah file konfigurasi pada server unix.

James Anderson
sumber
1
Untuk bash coba gunakan set -o vidi Anda .bashrc, alih-alih set -o emacs, yang digunakan secara default. Saya tidak pernah menggunakan ksh, tetapi mungkin sama.
sjas
1

Dalam pertanyaan Anda, Anda belum menyebutkan bahwa Anda ingin memprogram di Lisp! Tetapi karena Anda telah mengomentari jawaban Anda, saya mengerti bahwa Anda sebenarnya menginginkan antarmuka pemrograman LISP.

Untuk tugas yang tepat itu, lupakan saja Vi. Integrasi Emacs dengan LISP luar biasa! Anda harus menggunakan SLIME. Anda kemudian akan memiliki integrasi yang luar biasa dengan REPL, bisa evalberfungsi, buffer atau file langsung menjadi interpreter yang berjalan dalam buffer emacs dan banyak lagi ...

Pedro Morte Rolo
sumber
1
Ya, saya menyadari hal ini, tetapi saya mencari editor Lisp yang layak bukan alasan saya untuk mengajukan pertanyaan ini - itu hanya sebuah contoh. Terima kasih atas tanggapannya!
Sasha Chedygov
1

Saya telah bekerja dengan spacemacs selama sekitar 2 tahun dan neovim selama sekitar satu tahun sekarang dalam lingkungan produksi / penelitian. Spacemacs adalah emacs dengan beberapa fitur tambahan yang bagus seperti layer dll. Dan neovim adalah garpu vim lagi dengan beberapa fitur tambahan.

Saya cukup tidak puas dengan keduanya dalam hal pengalaman. Dan saya masih mencari solusi jangka panjang untuk kebutuhan pengeditan teks saya.

Berikut ini perbandingan sederhana:

  • Neovim, vim, emacs, spacemacs, dll. Semua editor itu mengonsumsi lebih sedikit sumber daya dibandingkan dengan sebagian besar editor di luar sana.

  • Neovim / vim sedikit lebih cepat dari emacs, terutama lebih cepat dari spacemacs.

  • Dalam hal pengalaman mengedit. Saya dapat dengan mudah mengatakan bahwa paket emacs terasa superior. Saya pikir itu karena mereka berbaur lebih baik dengan inti emacs.

  • Vimscript bagus dan tentu saja ada proyek-proyek hebat di ekosistem vim juga. Hal baiknya adalah mereka didokumentasikan dengan lebih baik daripada kebanyakan proyek emacs yang telah saya lihat sejauh ini.

  • Keduanya bisa jadi sangat tergantung pada paket yang Anda gunakan. Spacemac cenderung membeku, dan neovim cenderung menampilkan pesan kesalahan yang menakutkan, jadi pilih racun Anda di sana.

  • Pengeditan modal dalam vim, bukan konsep intuitif, tetapi begitu Anda terbiasa, Anda menginginkannya. Kedua editor memberikan itu.

Kaan E.
sumber
1
"Pengeditan modal (...) setelah Anda terbiasa, Anda menginginkannya" - itu menarik. Saya menghabiskan bertahun-tahun menggunakan Emacs dengan mode jahat, dan digunakan untuk mengedit modal, dan sekarang kembali ke non-modal ... Rasanya lebih baik. Saya pikir ini tidak hanya tergantung pada orangnya, tetapi juga pada konteks / waktu dalam hidup / apa pun. Rasanya, kurasa. :)
Jay
1
@ Mungkin saya kira, tapi jangan sampai ketinggalan, hal-hal seperti pemilihan kolom, dan melompat-lompat dengan ": XX"?
Kaan E.
Tidak juga ... Saya kadang-kadang menggunakan pilihan persegi panjang Emacs, dan bukannya: xx saya melakukan "Mg g XX" - beberapa penekanan tombol lagi, tapi saya jarang perlu langsung ke baris. Biasanya, aplikasi Emacs (debugger, dll) akan mengirim saya ke baris yang benar.
Jay
0

Eksekusi keystroke ::: vi mengedit mempertahankan setiap permutasi dari tombol yang diketik. Ini menciptakan jalur di pohon keputusan yang secara jelas mengidentifikasi perintah apa pun, sedangkan perintah Emacs adalah kombinasi dari kunci yang diketik yang dieksekusi segera, yang membuat pengguna memiliki pilihan apakah akan menggunakan perintah atau tidak.

Penggunaan memori dan kemampuan penyesuaian ::: vi adalah program yang lebih kecil dan lebih cepat, dengan kapasitas penyesuaian yang lebih terbatas, sedangkan Emacs membutuhkan waktu lebih lama untuk memulai dan membutuhkan lebih banyak memori. Namun, ini sangat dapat disesuaikan dan mencakup sejumlah besar fitur, karena pada dasarnya merupakan lingkungan eksekusi untuk program Lisp yang dirancang untuk mengedit teks.

Sudhir Bastakoti
sumber
0

vim adalah editor praktis, Anda mengetik sederhana vim filenameuntuk membuka file, mengedit, menyimpan dan menutup.

emacs adalah "sistem operasi" yang berpura-pura menjadi editor, Anda dapat membuat evalkode untuk mengubah perilakunya, dan memperluasnya sesuka Anda. A modeuntuk menerima / mengirim email pada emacs seperti perangkat lunak email pada sistem operasi.

Ketika melakukan pengeditan sederhana, misalnya, memodifikasi file konfigurasi, saya menggunakan vim .

Kalau tidak, saya tidak pernah meninggalkan emacs .

Richard
sumber
0

Saya pikir perbedaan utama adalah target desain. VIM untuk UNIX sebagai editor yang berfungsi. Emacs adalah untuk peretas GNU dan lisp, jadi ia memiliki beberapa elemen desain campuran.

Saya menggunakan vim di workstation saya, sementara saya juga suka emacs.

7xEquation
sumber
0

Saya adalah penggemar Emacs tetapi mendorong pengembang lain untuk belajar VI karena:

  1. Anda dapat menggunakan VI untuk mengedit file emacs.
  2. VI termasuk perintah ed dan setiap pengguna UNIX harus tahu ed dan sed.

Saya perhatikan beberapa komentar tentang VIM yang dimulai lebih cepat dari emacs. Jika Anda benar-benar peduli tentang itu, jalankan emacs dalam mode server dan alias 'emacs' hingga 'emacsclient'. Klien sangat cepat karena yang dikerjakan adalah mengetuk server di bahu dan beri tahu file mana yang ingin Anda edit. Di MacOSX, emacsclient hanya 33K sedangkan emacs adalah 287M.

Saya tidak yakin semua ini diperlukan pada perangkat keras modern. Di MacBook Pro (Retina 2013) saya, emacs memuat hampir secara instan ketika saya menjalankannya dari shell. Saya mendeteksi tidak ada jeda sama sekali. Ketika saya menjalankan Emacs.app (versi GUI) mungkin butuh semua 3 detik.

Kebanyakan keluhan yang saya dengar tentang emacs tampaknya berasal dari orang-orang yang salah informasi tentang emacs. Setelah menggunakan vi dan emacs sejak 1982, saya benar-benar ingat saat ketika emac memuat jauh lebih lambat daripada vi dan menggunakan sebagian besar memori fisik dalam kotak UNIX awal saya, tetapi itu tidak lagi terjadi dan belum ada setidaknya 15- 20 tahun.

Satu keluhan yang akan saya akui adalah "emacs pinkie". Ini tidak pernah mengganggu saya sama sekali ketika saya masih muda. Sekarang saya berusia 58 tahun, kelingking saya agak sakit karena berulang kali mengakses kunci Kontrol untuk chording emacs. Ini terutama benar pada keyboard MacBook Pro di mana Kontrol dipindahkan satu posisi ke kanan untuk memberi ruang bagi tombol "fn". Ini hampir tidak mengganggu ketika Kontrol adalah tombol kiri bawah.

Phil Harbison
sumber
Anda juga dapat "membuang" emacs, yang pada dasarnya berarti mengambil snapshot dari ekstensi elisp yang dikompilasi yang Anda inginkan. Emacs dimulai jauh lebih cepat dengan cara ini, tetapi butuh sedikit waktu untuk menentukan ekstensi mana yang ingin Anda sertakan.
Phil Harbison
Plus, Anda dapat memainkan "Towers Of Hanoi" di emacs. Betapa kerennya itu? :)
Phil Harbison
Re: "emacs pinkie". Pada beberapa keyboard yang lebih lama, misalnya, Sun Type 3/4, yang menjadi dasar HHKB Professional, Kontrol ditempatkan di tempat Caps Lock biasanya. Saya tidak memiliki pengalaman emacs yang Anda miliki, namun, saya sangat cepat terbiasa dengan Kontrol di baris rumah. Sedemikian rupa sehingga saya membuat perubahan itu pada semua keyboard saya (MacBook Pro juga). HHKB memiliki beberapa peningkatan lebih lanjut, misalnya, Backspace tepat di atas Enter, dan Esc di sebelah 1.
martinweiss
@ PhilHarbison bisa menguraikan "dump"?
A_P
0

Saya adalah pengguna vim pertama, kemudian saya beralih ke emacs, lalu ke vim, sekarang saya bereksperimen dengan emacs lagi.

  • Keduanya adalah editor yang hebat.
  • Keduanya sangat extensible hari ini
  • Keduanya memiliki plugin dan komunitas yang bagus

Sebagai pengembang, kami banyak mengetik, dan, akhirnya bagi saya, bergerak dalam buffer dan file adalah tugas berulang yang terbesar, jadi saya ingin editor di mana saya BISA PINDAH CEPAT!

Motivasi untuk bereksperimen dengan emacs lagi adalah bahwa saya gagal Ctrl memimpin keybinds lebih cepat dari vim, dan lebih mudah untuk dipikirkan.

Dalam vim Anda memiliki mode, Anda memiliki mode penyisipan, mode visual, mode normal, apa yang terjadi ketika Anda menekan sesuatu tergantung pada mode yang Anda gunakan, adalah pendekatan stateful untuk mengedit. Anda bergerak, masuk dalam mode sisipkan, edit, keluar dari mode sisipkan dan pindah lagi. Saya sering kehilangan diri saya jika saya kehilangan pers ESC atau sesuatu seperti ini.

Di emacs tidak ada mode, pada dasarnya Anda menekan Ctrl dengan pink Anda dan ketik keystroke, seperti Cx Cf, Cx Cs, Cx Cc. Ada keybinds di mana Anda perlu melepaskan kunci ctrl, saya benci yang ini dan selalu menggantinya dengan yang dengan kontrol ditekan.

Saya pikir pendekatan emacs lebih cepat untuk berpikir dan mengetik, tetapi vim memiliki kekuatan lain. Perintah-perintahnya dapat dikomposisikan, mereka biasanya memiliki format. Misalnya, untuk menghapus garis yang dapat Anda gunakan dd, untuk menghapus kata dw. Plugin memanfaatkan penebangan itu, dengan plugin vim-surround Anda dapat menghapus tanda kutip dengan ds "(delete surround"), hapus hingga / / berikutnya dt/. Hapus hingga / / sebelumnya dT/dan seterusnya. Jadi selama Anda mempelajari hal-hal yang bergerak mulai menjadi sangat menarik.

Kesimpulannya, hari ini saya yakin emacs keybinds lebih cepat untuk pengeditan makro dan perintah vim lebih kuat untuk microediting

Saya telah menggunakan vim selama lima tahun terakhir jadi saya mengedit pemikiran terutama tentang kata-kata, garis, sekeliling, blok, dll. Hapus baris ini, hapus tanda kutip, ganti tanda kutip, hapus kata dalam kursor, saya mencoba mencari emacs bergerak untuk itu

Sebagai kutipan terakhir saya akan mengatakan itu, saya lebih peduli tentang fzf daripada tentang emacs atau vim, saya ingin memiliki editor yang sepenuhnya berbasis fzf

tokek
sumber
-9

Pertama Vi (realisasi asli) tidak digunakan hari ini. Yang Anda katakan adalah beberapa derivasi Vim.

Untuk memperluas fungsionalitas Vim Anda harus mengkompilasi ulang Vim, Emacs tidak.

Emacs memiliki Vim sendiri (mode-viper).

Emacs biasanya memerlukan instalasi secara manual, Vim biasanya sudah diinstal pada semua Unix seperti OS (tetapi jika Anda memiliki akses ssh ke mode host tramp, menangkan Vim :).

Jika Anda mencoba Vim, Anda membenci Emacs, jadi mulailah dari Emacs terlebih dahulu.

Baca juga http://www.dina.dk/~abraham/religion/vi-tutorial.html (tautannya turun jadi gunakan ini )

Jawab pencarian di hxxp: //en.wikipedia.org/wiki/Editor_war

gavenkoa
sumber
8
Anda tidak perlu mengkompilasi ulang vim untuk memperpanjangnya. Anda bahkan tidak perlu keluar dari vim.
terlalu banyak php
1
Memiliki akses vimscript / Python / Ruby / etc ke semua struktur internal Vim? Jika editor basis kode membantu membuat ekstensi atau kompleksitas ekstensi pada satu tingkat kompleksitas EDITOR?
gavenkoa
1
Banyak skrip Vim seperti MACROS intelektual. Untuk memperpanjang Vim, Anda perlu plugin ((
gavenkoa
1
Vi tidak digunakan?!?! Apa? Apakah nvi dianggap asli? Atau 'vi tradisional'? Banyak sistem seperti FreeBSD, ArchLinix menggabungkan vi atau nvi tradisional dan saya berterima kasih untuk itu. Beberapa sistem seperti Debian menggunakan vim yang dalam mode yang kompatibel secara default (terasa hampir seperti vi tradisional)
Alex
1
@gavenkoa, saya sangat setuju dengan Alex, Anda jelas tidak pernah mencoba sistem yang membutuhkan instalasi manual seperti Gentoo, beberapa BSDs atau Arch Linux. Juga, «Jika Anda mencoba Vim, Anda membenci Emacs, jadi mulailah dari Emacs terlebih dahulu.» akan membuat saya mencoba VIM terlebih dahulu, dan Anda juga, jika Anda berpikir sedikit. Itu mengingatkan saya pada orang yang mengatakan untuk tidak mencoba pemrograman fungsional terlebih dahulu. Saya sedih saya tidak mencobanya lebih cepat ...
JMCF125