Keuntungan produktivitas spesifik apa yang diberikan Vim / Emacs dibandingkan editor teks GUI?

100

Ini tidak dimaksudkan sebagai troll atau flamebait atau semacamnya. Saya telah menggunakan Vim sebagai editor-konsol pilihan saya selama beberapa bulan sekarang (untuk mengedit file konfigurasi saat berada di terminal saya), tetapi saya rasa saya tidak tahan dengan pekerjaan normal saya, setiap hari menulis aplikasi web , yang saya lakukan dengan editor teks GUI (yang tidak penting).

Saya merasa editor teks GUI saya dapat melakukan semua yang saya butuhkan untuk pekerjaan saya. Ini memiliki pencarian / penggantian yang layak dengan riwayat pelengkapan otomatis untuk keduanya. Ini memiliki penyorotan sintaks, penomoran baris, antarmuka tab, mudah menyalin dan menempel, dll. Satu-satunya hal yang hilang dari editor saya saat ini adalah pencocokan ekspresi reguler, tetapi ada banyak editor teks GUI yang akan melakukan pencarian / penggantian regex.

Mengingat apa yang baru saja saya katakan, keunggulan produktivitas apa yang dimiliki Vim (atau bahkan Emacs) dibandingkan editor teks GUI selain dari fakta bahwa ia diinstal pada setiap komputer. Saya ingin tugas tertentu yang lebih baik / lebih cepat di Vim / Emacs atau yang tidak mungkin dilakukan dengan editor teks GUI yang ada.

Adam Plumb
sumber
1
Saya tidak ingat vim sedang diinstal pada salah satu mesin windows saya ...
Greg
9
@Greg: Itu tidak diinstal secara pasif. Anda keluar dan melakukannya sendiri. Entah Anda bukan pengembang perangkat lunak sungguhan , atau Anda telah melakukannya begitu banyak, Anda sekarang menginstal vim dalam tidur Anda. :-)
TED
6
Ini harus ditandai sebagai pertanyaan Wiki Komunitas karena bersifat subjektif.
STW
7
@Yoooder: Mengapa orang terus mengeluh tentang pertanyaan wiki komunitas? Saya tidak menemukan aturan yang mengatur wiki komunitas.
John Smith

Jawaban:

111

Untuk Vim:

  • Vim memiliki integrasi yang lebih baik dengan alat lain (perintah shell, skrip, kompiler, sistem kontrol versi, ctag, dll.) Daripada kebanyakan editor. Bahkan sesuatu yang sederhana seperti :.!, untuk menyalurkan output perintah ke buffer, adalah sesuatu yang tidak akan Anda temukan di sebagian besar editor GUI.

  • Antarmuka tab tidak sebaik antarmuka "berjendela" yang diberikan Vim / Emacs kepada Anda. Anda dapat melihat dua atau lebih file secara berdampingan. Semakin banyak Anda dapat melihat di layar, semakin Anda membebaskan pikiran untuk memikirkan masalah Anda daripada melakukan pembukuan mental nama variabel dan tanda tangan fungsi.

  • Jangan meremehkan kekuatan ekspresi reguler Vim. Ada banyak ekstensi khusus Vim untuk mencocokkan kolom tertentu, tanda, posisi kursor, kelas karakter tertentu (kata kunci, pengenal), dll.

  • Terintegrasi diffdan grep(platform independen sehingga Anda tidak perlu mengunduh dan mempelajari alat baru setiap kali Anda mengganti komputer).

  • Mode blok visual (untuk mengedit kolom) adalah sesuatu yang tidak dimiliki oleh banyak editor, tetapi saya tidak dapat hidup tanpanya. Saya telah mengejutkan dan membuat kagum orang-orang di tempat kerja hanya dengan menggunakan ini, membuat beberapa pengeditan dalam beberapa penekanan tombol yang seharusnya dilakukan seseorang selama sepuluh menit secara manual.

  • Beberapa register salin / tempel. Ketika Anda hanya memiliki satu, Anda akhirnya mengalami perubahan yang aneh untuk menghindari clobber clipboard. Anda tidak perlu melakukannya.

  • Sistem undo / redo Vim tidak terkalahkan. Ketik sesuatu, batalkan, ketik sesuatu yang lain, dan Anda masih bisa mendapatkan kembali hal pertama yang Anda ketikkan karena Vim menggunakan pohon urung daripada tumpukan. Di hampir setiap program lainnya, riwayat hal pertama yang Anda ketikkan hilang dalam keadaan ini.

  • Memindahkan, menyalin, menempel, dan menghapus teks sangat cepat di Vim. Perintahnya sederhana, menekan satu tombol, dan dapat disusun. Tambahkan semua waktu Anda melakukan sorotan mouse yang hati-hati dan melelahkan dan Ctrl-X, lalu ganti semuanya dengan da((hapus satu set tanda kurung yang cocok dan semua yang ada di dalamnya). Ini menghemat lebih banyak waktu daripada yang Anda pikirkan

  • Hal-hal kecil, seperti *mencari kata di bawah kursor, atau .mengulangi perintah, atau %berpindah antara tanda kurung buka dan tutup. Terlalu banyak dari daftar ini.

  • Bahasa skrip bawaan dan pemetaan kunci yang kuat serta kemampuan makro sehingga editor dapat diperluas dengan cara apa pun yang Anda butuhkan. Berton-ton skrip sudah ditulis dan diunduh.

Jika Anda melihat cukup dekat, Anda akan menemukan bahwa bahkan fitur yang editor lain juga miliki, Vim seringkali lebih baik. Semua editor memiliki penyorotan sintaks, tetapi Vim memiliki file sintaks untuk hampir setiap format file di bawah matahari, seringkali dengan banyak opsi konfigurasi, dan sangat mudah untuk menulis sendiri. Banyak editor menangani pengkodean file yang berbeda OK, tetapi Vim memberi Anda cara yang sangat spesifik dan sangat mudah untuk mengatur pengkodean file dan mengonversi di antara mereka. Hal pertama yang membuat saya terkesan tentang Vim adalah seberapa sempurna Vim menangani opsi indentasi tab / space dan linebreak Unix / DOS dibandingkan dengan editor lain yang bermasalah dengan saya saat itu.

Banyak dari poin-poin ini berlaku sama baiknya untuk Emacs (dengan cara yang berbeda tetapi biasanya sama kuatnya).

Brian Carper
sumber
2
Ini adalah contoh yang baik untuk beberapa hal konkret yang meningkatkan produktivitas di vim.
Adam Plumb
14
Anda lupa menyebutkan dukungan lintas platform yang luar biasa. Bahkan sejauh menggunakan editor yang sama pada baris perintah yang Anda gunakan di lingkungan berjendela.
Singletoned
3
Poin tentang tampilan tab vs. berjendela agak ketinggalan jaman. Sebagian besar editor gui yang saya gunakan mengizinkan tata letak berjendela.
Shawn O'Hare
1
Org-Mode di Emacs adalah peningkatan produktivitas yang sangat besar.
18bytes
37

(vim's my poison; saya yakin emacs menawarkan keuntungan serupa)

Keuntungan terbesar: tidak perlu menyentuh mouse.

Bagi saya, hal paling praktis adalah melompat maju ke (atau tepat sebelum) huruf atau kombinasi huruf tertentu, atau melompat mundur, dengan beberapa penekanan tombol. Melompat maju dengan kondisi yang sama dua kali, atau sepuluh kali, hanyalah masalah mengawali dengan angka.

Jika Anda harus mengulangi pengeditan, Anda melompat maju ke tempat itu (2-3 penekanan tombol), lalu tekan "." untuk mengulangi pengeditan terakhir. Melompat maju (atau mundur) lebih mudah - satu penekanan tombol - jika kondisi pencariannya sama.

Pada dasarnya, dengan waktu tunggu yang kecil, Anda dapat mempelajari sepuluh atau dua puluh pintasan keyboard yang berarti Anda tidak perlu terus-menerus menggerakkan tangan untuk memegang mouse. Itu memberi Anda tiga atau empat kali lebih banyak gerakan / perintah pengeditan seperti yang Anda lakukan jika Anda harus terus memegang mouse.

Setelah beberapa hari, Anda akan merasa kesal setiap kali harus meraih mouse (atau menekan <Down>15 kali), saat Anda berada di editor GUI.

Jeremy Smyth
sumber
2
Perlu dicatat bahwa jika Anda menggunakan gVim (atau jika Anda menginstal gpm dan hanya menggunakan vim biasa di terminal), Anda sebenarnya dapat menggunakan mouse jika Anda mau. Ada beberapa situasi di mana penggunaan mouse menjadi berguna.
thebrokencube
1
Saya memiliki "set mouse = a" di .vimrc saya, kalau-kalau saya perlu menggesek sekumpulan visual;)
Jeremy Smyth
Ya, mouse dapat menjadi penghemat waktu untuk memilih area teks, atau memindahkan kursor ke tempat tertentu dalam banyak teks. Kalau tidak, itu sia-sia.
TED
1
Dari suaranya, saya bisa melakukan apa yang Anda jelaskan menggunakan Ctrl + Kiri atau Ctrl + Kanan di editor lain. Saya juga terus mendengar bahwa Anda dapat melakukan sesuatu seperti "d5w" untuk menghapus 5 kata ... tetapi Ctrl + Delete melakukannya lebih cepat.
DisgruntledGoat
4
Ctrl-Right hanya memindahkan kata ke depan. Anda harus melakukannya 5 kali untuk maju lima kata. Di vim, Anda mengetik 5w untuk maju 5 kata :) atau 9w untuk maju 9 kata. atau) untuk ke awal kalimat berikutnya, atau} untuk ke paragraf berikutnya. Ada begitu banyak jalan pintas kecil dengan satu atau dua tombol untuk bergerak ke segala arah yang cerdas. Dan jika Anda ingin menghapus semuanya hingga titik yang baru saja Anda pindahkan, Anda cukup memberi awalan pada perintah movement dengan d. Jadi untuk menghapus tiga kalimat, d3) adalah yang Anda butuhkan :)
Jeremy Smyth
33

Saya selalu bertanya-tanya mengapa hanya sedikit orang yang kagum dengan Vim. Lihat video pengguna Vim power beraksi:

https://www.youtube.com/watch?v=FcpQ7koECgk

Jika editor Anda saat ini dapat melakukan apa yang dia lakukan, tidak perlu beralih! :)

Juga, baca http://www.viemu.com/a-why-vi-vim.html ini

Setelah menonton video dan membaca artikel itu, saya tidak punya pilihan selain mulai belajar VIM. Sudah hampir setahun sejak saya beralih ke VIM dan saya tidak dapat membayangkan menggunakan yang lain.

SolutionYogi
sumber
4
Wow, video-video itu sangat luar biasa! Terima kasih telah mempostingnya!
thebrokencube
Video yang cukup menarik, sayang sekali butuh waktu lama bagi saya untuk mengingat semuanya dalam latihan. :)
Frerich Raabe
8
pembuat video pertama perlu mempelajari mode blok visual - ini lebih cepat daripada makro untuk mengubah blok teks di bagian bawah.
Peter
23

Saya rasa salah satu kekuatan sebenarnya dari editor teks khusus adalah pengeditan makro. Pengulangan menyakitkan bagi banyak programmer, dan menulis makro yang tepat bisa sangat menghibur. Jika Anda tidak melakukan semuanya melalui keyboard, membuat makro akan membutuhkan sekumpulan perintah tambahan daripada menggunakan yang sudah Anda gunakan.

Stefan Mai
sumber
5
Kustomisasi adalah fitur yang hilang di hampir semua editor GUI. Anda dapat menggunakan utilitas perluasan makro pihak ke-3 (AutoKey, apa pun) untuk membantu beberapa hal ini, tetapi membuatnya menjadi editor sangat berguna.
Alex Feinman
Oh, sebagai catatan. Saya bekerja dengan produk Microsoft, dan menggunakan VimEmu untuk Visual Studio telah menjadi berkah. Masih ingin pulang ke terminal saya dan Vim sekalipun :)
Stefan Mai
1
ViEmu jelas merupakan anugerah. Saya akan mengatakan bahwa Visual Studio benar-benar tidak dapat digunakan tanpanya. :)
thebrokencube
1
Textpad di Windows memiliki ini, dan ini sangat sederhana: tekan Rekam, lakukan makro, lalu simpan. Anda juga dapat menetapkan pintasan untuk itu. Sayangnya saya belum menemukan yang setara di Linux (TP berfungsi pada Wine tetapi terlihat jelek dan melewatkan beberapa fungsi Linux).
DisgruntledGoat
1
@DisgruntledGoat - Jika Anda dapat mempertimbangkan ctrl-X (menjadi "hit record" dan ctrl-X) menjadi "save", maka Anda sekarang telah menemukan padanannya di Linux, Windows, Unix, dan setiap platform Emacs lainnya telah di-porting untuk.
TED
15

Saya semi-kompeten dengan vi keybindings, tapi saya lebih suka Emacs secara keseluruhan. Alasan editor ini memiliki pengikut yang kuat adalah karena model pengeditan yang mereka sediakan lebih bertenaga daripada sistem yang lebih baru, itulah mengapa memberikan "pengikatan vii" atau "pengikatan tombol emacs" tidak cukup, bahkan jika Anda tidak menggunakan fitur ekstensi apa pun atau kustomisasi untuk emacs atau vi.

Saya hanya akan berbicara tentang model Emacs karena saya paling memahaminya. Model umum untuk pengeditan teks saat ini melibatkan buffer teks, di mana teks dapat disisipkan, dihapus, dipilih, dan dipotong / disalin / ditempelkan ke papan klip sistem.

Buffer Emacs, tentu saja, dapat mendukung operasi ini. Seiring dengan melacak posisi kursor untuk setiap jendela tempat mereka terlihat, mereka juga melacak "tanda" yang dibuat di dalamnya. Teks antara "titik" (posisi kursor) dan "tanda" disebut "wilayah", dan secara kasar sesuai dengan pilihan editor utama.

Perbedaannya adalah bahwa Emacs melacak beberapa lokasi terakhir tempat tanda ditetapkan di cincin tanda, dan Anda dapat kembali ke sana dengan penekanan tombol (atau dua, tergantung pada konfigurasi Anda). Saya menemukan ini sangat berguna, terutama karena banyak perintah Emacs yang mengubah lokasi Anda di buffer menetapkan tanda di lokasi lama Anda. Contohnya adalah ketika saya mengedit modul Python dan perlu menambahkan pernyataan import ke bagian atas file. Penekanan tombol untuk pergi ke atas buffer (Alt- <) menetapkan tanda. Saya menambahkan pernyataan impor. Saya menekan Ctrl-u Ctrl-Space dan saya kembali ke tempat saya memulai. Saya dapat terus melakukan ini untuk kembali ke posisi sebelumnya juga. (Mungkin saya perlu memilih beberapa teks sambil menambahkan pernyataan impor itu.)

Perbedaan Emacs lainnya (dan yang lebih terkenal) adalah cincin pembunuh. Sebagian besar penekanan tombol untuk menghapus teks dari buffer menyimpan teks ke kill ring, yang kemudian dapat dipanggil kembali dengan perintah "yank" (Ctrl-y). Fitur penting adalah bahwa perintah yank berikutnya mengambil teks lama yang sudah mati. Jadi Anda dapat membunuh beberapa bagian teks secara berurutan, lalu mengambilnya secara berurutan. Anda juga dapat menelusuri kill ring dengan Alt-y setelah sentakan, menghapus teks yang diambil dan memasukkan entri berikutnya ke dalam ring.

Emacs memiliki fitur-fitur ini pada tahun 1978. Satu-satunya sistem besar lainnya yang menerapkannya sejauh mana pun adalah NeXTStep (dan sekarang diwarisi oleh Cocoa). Alat lain menyediakan lebih banyak fitur untuk tugas tertentu, dapat diperluas dalam bahasa yang lebih mudah digunakan daripada Emacs Lisp, dan memiliki antarmuka visual yang lebih bagus ... tetapi Emacs tetap lebih baik dalam mengedit teks. Itulah sebabnya, begitu Anda tahu cara menggunakannya, sangat sulit untuk berhenti.

Allen
sumber
Tidak diragukan lagi emacs bisa menjadi pilihan yang layak bagi banyak orang, karena ada begitu banyak pengguna. Tapi berapa lama saya harus merasa nyaman? Menurut pengalaman saya, saya adalah seorang typer yang sangat cepat dan dapat menggunakan macbook pro touchpad dengan sangat baik menggunakan editor teks gui seperti textmate. Saya tidak pernah bisa terbiasa dengan emacs dengan semua binding. Tangan saya sakit setelah sekitar sebulan menggunakan; Secara keseluruhan saya hanya tidak yakin bahwa emacs membuat saya lebih cepat. Sistem penunjuk mac sangat tepat dan cepat, dan editor teks gui bawaan ini memiliki banyak tombol pintas yang dapat melakukan banyak hal. Saya telah menghabiskan banyak waktu, dan belum ada keuntungan yang terlihat.
user798719
13

Ini bukan tugas yang spesifik, tetapi untuk orang yang bahkan mungkin menderita RSI, fakta bahwa tangan Anda tidak pernah meninggalkan keyboard di vim hampir tak ternilai harganya. Saya benar-benar akhirnya menjadi kidal pada mouse saya di tempat kerja karena itu membiarkan saya menggerakkan tangan saya lebih sedikit untuk meraih mouse (keyboard saya di rumah tidak memiliki papan angka, jadi saya bisa menyimpannya di kanan).

Satu keuntungan kecil lainnya adalah, IIRC, vi asli dirancang untuk mempercepat pengeditan file melalui koneksi jarak jauh yang sangat lambat. Memang itu tidak terjadi hampir sebanyak hari ini, tetapi jika Anda memiliki koneksi yang lambat, semoga berhasil menjalankan editor teks gui dan membuatnya responsif.

Mark Rushakoff
sumber
2
Jika Anda memiliki koneksi yang lambat, saya sarankan menggunakan Emacs dan Tramp.
John Smith
1
Edit perubahan melalui sftp, sinkronkan saat simpan.
Roman A. Taycher
@Roman: Menggunakan Emacs dan Tramp pada dasarnya melakukan itu (kurang lebih) tanpa upaya tambahan sama sekali - paling banyak Anda harus memasukkan kata sandi Anda sekali atau dua kali. Setelah itu, mengedit file jarak jauh berfungsi seperti mengedit file lokal, dan menyimpan mengirimkan perubahan ke komputer jarak jauh secara otomatis.
Tikhon Jelvis
13

Bagi saya hal-hal produktivitas yang besar

  • Saya dapat melakukan hampir semua hal dari keyboard.
  • Makro yang kuat.
  • Dalam 20 tahun karir saya menggunakan 9 OS, binding keyboard dasar tidak berubah. Saya dapat menggunakan hampir semua sistem dan sudah mengetahui cara saya menggunakan editor.
  • Hampir semua fitur yang Anda inginkan di editor teks telah ditambahkan.
TED
sumber
11

Satu hal yang saya sangat suka tentang vim adalah perintah "repeater". Pada dasarnya, dengan menekan .dalam mode perintah, ini mengulangi tindakan terakhir Anda. Ini hanyalah salah satu contoh fitur yang sangat keren yang dimiliki "programmer text editor" yang sering tidak dimiliki GUI.

kotak pisah
sumber
Oh ya! itu salah satu perintah termanis! Saya tidak dapat membuat kode tanpa :-)
Jay Atkinson
8

Dalam pengalaman saya, keuntungan produktivitas utama yang diberikan oleh vim dan emacs (saya sendiri adalah orang vim, tetapi emacs pasti serupa) adalah:

  • Anda dapat memiliki fitur-fitur yang disediakan oleh IDE modern (seperti siklus edit-build-run satu tombol dan dokumentasi inline dan penyelesaian tab dan yang lainnya) tetapi Anda tidak perlu melakukannya . Keuntungan produktivitas? Anda hanya melihat sebanyak yang Anda ingin lihat. Menurut pengalaman saya, IDE tidak membuat orang lebih produktif, juga karena mereka menunjukkan terlalu banyak informasi (semua jenis browser). Ini "sedikit kekuatan ekstra, ketika Anda membutuhkannya - tetapi tidak lebih cepat" adalah IMHO keuntungan produktivitas yang cukup.

  • Editor sangat populer di kalangan pemrogram, yang berarti ada banyak sekali repositori skrip, buku, dan grup pengguna yang tersedia.

  • Dalam pengalaman saya (saya hanya dapat berbicara tentang vim di sini) rata-rata pengguna vim adalah insinyur perangkat lunak yang cukup baik. Saya tidak tahu mengapa itu (atau mungkin saya hanya beruntung), tetapi mungkin orang yang mengambil penghalang untuk terbiasa dengan alat 'lama' seperti emacs atau vim memiliki dedikasi yang tepat (dan kontak dengan orang lain seperti itu ). Mungkin ini adalah efek tidak langsung dari editor ini, tetapi bergaul dengan orang vim (atau emacs) lain di misalnya IRC ternyata cukup menarik, karena orang yang sama juga cukup tertarik pada semua jenis masalah rekayasa perangkat lunak (atau ilmu komputer) . Para editor ini tampaknya menarik jenis kepribadian tertentu. :-)

Frerich Raabe
sumber
7

"Keuntungan produktivitas" yang saya peroleh karena menggunakan tiruan emacs ringan untuk program kecil adalah bahwa program ini dijalankan seperti kilat berminyak. Saya biasanya dapat membuat program tes cepat di C # sebelum Visual Studio selesai memuat solusi "kotak pasir".

Tentu saja, saya bisa membiarkan Visual Studio terbuka (atau yang lain VS terbuka jika saya sedang mengerjakannya pada saat itu) tetapi kemudian akan ditukar jika saya membiarkannya menganggur untuk sementara waktu, dll.

Untuk ukuran apa pun yang signifikan - atau jika saya tidak tahu API yang saya gunakan dengan cukup baik - IDE adalah jalan ke depan, IMO.

Jon Skeet
sumber
6
Jalankan emacs dalam mode daemon, dan "waktu startup" sangatlah mudah.
aehlke
6

Saya menggunakan gvim untuk windows, jadi secara teknis ini adalah editor teks GUI, tetapi vim ..

Untuk peningkatan produktivitas, saya menemukan:

  1. Saya tidak perlu menggunakan mouse, oleh karena itu saya lebih cepat.
  2. cari, ganti, salin / tempel, dll. semuanya lebih cepat dengan keybindings vim vs gerakan mouse (setelah kurva pembelajaran diatasi)
  3. Seperti yang disebutkan dalam komentar sebelumnya, RSI berkurang secara signifikan. Pergelangan tangan saya berterima kasih sejak saya pindah ke vim.
  4. ringan dan cepat
codefly
sumber
4

Anda tahu, untuk vi saya pikir itu bermuara pada memiliki mode penyisipan dan perintah. Meskipun ini mungkin tampak seperti kemunduran ke saat Anda tidak dapat bergantung pada kursor atau tombol khusus, yang sebenarnya berarti bahwa banyak gerakan yang kuat dan perintah maniak teks teks adalah jumlah penekanan tombol yang minimal. Pengkodean yang produktif bukanlah tentang entri teks massal (default dalam editor "modern") tetapi semburan teks massal yang diikuti oleh perubahan kecil yang cukup besar dan periode penelusuran yang lebih lama.

Ini muncul kedepan bagi saya secara pribadi menggunakan vi melalui jaringan kampus latensi tinggi. Anda bisa dengan mudah mendapatkan 10 atau 15 karakter sebelum respons. Dengan vi, saya dapat dengan nyaman memprediksi di mana perintah itu akan meninggalkan saya dan dapat bekerja pada kecepatan yang mendekati normal. Keahlian memutar ini adalah manfaat berkelanjutan dalam kondisi normal - kurangnya daya visual visual yang didedikasikan untuk umpan balik grafis yang konstan.

Akselerator pencarian kata * dan # yang biasa bagus untuk membalik-balik kode. Dan% untuk mencocokkan tanda kurung sangat berguna. Tentu, hampir tidak tampak seperti banyak dibandingkan dengan ctl-] tetapi setengah dari penekanan tombol bertambah.

Secara pribadi, saya menggunakan winvi yang menambahkan beberapa hal besar yang saya yakin vim juga. Lompatan cepat ke mode hex memecahkan banyak masalah teks "apa yang terjadi". Dan penanganan akhir baris yang sepenuhnya fleksibel adalah berkah yang telah menjadi fitur yang diharapkan untuk editor teks. Akhirnya, ia dapat membuka file apa pun apa pun isinya. Ini berarti keterampilan peretasan elit dari urutan pertama.

Di bawah Unix Anda dapat dengan cepat menangkap keluaran program atau bahkan memfilter bagian file Anda melalui perintah eksternal. Sebuah fungsi yang sangat kuat namun menurut saya kurang dimanfaatkan.

George Phillips
sumber
3

Saya cukup sering menggunakan Vim. Itu tidak menggantikan UltraEdit untuk saya. Karena banyak hal positif telah terdaftar, saya kira saya akan melawan arus, dan membuat daftar beberapa gangguan dengan Vim.

  • Penanganan FTP yang lemah. Saya "menyortir" banyak situs, dan tidak dapat dengan mudah menelusuri dan mengedit file di server FTP jarak jauh adalah kekurangan besar bagi saya. NWRead tidak cukup baik.
  • Keanehan konsol diwarisi dari masalah terminal umum yang tampaknya mengganggu Linux. Saya biasanya menggunakan PuTTY untuk terhubung ke kotak Linux saya (menjalankan Ubuntu), dan untuk beberapa alasan, tombol panah memetakan ke A / B / C / D dalam mode penyisipan (dan seluruh masalah dukungan warna). Di gVim, ctrl-tab dapat dipetakan dengan mudah ke "bn", tetapi tidak dalam mode konsol, masalah seperti itu berlimpah.
  • Opsi pencarian / ganti sangat lemah, antarmuka bijaksana. Harus mengetik semuanya menjadi satu baris, tidaklah cukup. Saya merasa dialog yang jauh lebih rumit mengatakan UltraEdit memberi saya lebih banyak kekuatan pada akhirnya, bahkan jika dukungan ekspresi reguler yang sebenarnya mungkin jauh lebih lemah.
  • Ketergantungan yang terlalu kuat pada tata letak keyboard AS. Banyak tombol yang digunakan untuk fungsi utama, seperti `, tidak dapat dicetak pada tata letak keyboard Denmark saya (dan terletak secara arkwardly, sama dengan $, dan banyak lainnya). Cukup canggung untuk menggunakan beberapa fungsi.
Svend
sumber
Untuk edisi # 2, instal "vim" atau "vim-full" untuk menghilangkannya.
Adam Plumb
Masalahnya terletak di tempat lain yang saya khawatirkan. Anda dapat melihat beberapa perbaikan yang disarankan di sini vim.wikia.com/wiki/… Tapi sayangnya, tidak ada yang berhasil untuk saya.
Svend
Re nomor 3 gunakan ctrl-f setelah: untuk mendapatkan jendela edit yang berfungsi penuh untuk perintah: s Anda dll
ErichBSchulz
greplace adalah solusi untuk # 3. Ada plugin grep lainnya, tetapi hanya itu yang saya butuhkan. Membuat menemukan / mengganti lebih mudah daripada di IDE atau editor teks lain yang pernah saya gunakan.
domi91c
2

Remote Desktop hanya menampilkan aplikasi Windows asli dengan cepat. Kami telah mencoba menggunakan Eclipse untuk mengembangkan di bawah unix. Dan tahukah Anda? Itu bahkan tidak mungkin.

Alasan kedua adalah bahwa kami dapat memperluas Vims dan Emacs kami untuk melakukan semua tugas khusus proyek dari penjelajahan DB dengan cara khusus untuk menyorot dan melengkapi bahasa meta kami sendiri secara otomatis.

Mykola Golubyev
sumber
2

Saya akan mengatakan salah satu keuntungan besar adalah ekstensibilitas editor vim. Jika saya ingin sesuatu bekerja dengan CVS, saya dapat menggunakan plugin CVSMenu dan menambahkannya ke editor saya untuk mendapatkan fungsionalitas itu.

Sama dengan penyorotan sintaks, perilaku dengan file tertentu, dll. Segala macam hal dapat disesuaikan di vim.

Tidak begitu yakin apakah Anda dapat melakukannya dengan mudah di editor tipe GUI.

Rob Wells
sumber
1

Rekam dan Putar Ulang di VIM luar biasa mengagumkan, yang sangat tidak mungkin Anda temukan di alat berbasis GUI.

Juga auto increment / decrement memberikannya kemampuan pembuatan data tanpa menulis program untuknya.

peeyush
sumber
1

Saya telah menjadi pengguna Emacs selama bertahun-tahun. Tapi tidak pernah benar-benar melakukannya. Kemudian saya mulai mempelajari Clojure (Lisp pertama saya) dan menemukan ParEdit.

Dan itu mengejutkan saya.

(Lihat di sini untuk beberapa contoh: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

Lisp + ParEdit adalah pengalaman pengeditan paling menakjubkan yang pernah saya alami. Tidak ada lagi yang mendekati. Lisp bukan lagi bahasa yang canggung untuk ditulis, memaksa saya untuk khawatir tentang menyeimbangkan banyak tanda kurung konyol yang menjengkelkan. Dengan ParEdit, struktur Lisp yang konsisten menjadi bonus besar untuk dikerjakan, karena transformasi pohon yang sama - menyeruput, muntah, membelah, dan bergabung - bekerja di mana saja, dalam struktur kontrol dan struktur data. Dan ParEdit mencegah saya melakukan kesalahan bodoh. Hampir tidak mungkin membuat kesalahan sintaks.

Dan tidak seperti Eclipse, ini bukanlah pemeriksaan waktu nyata yang melelahkan yang selalu berjalan di latar belakang, membakar prosesor saya. Tidak ada biaya ... ParEdit hanya melakukan perubahan struktural yang benar saat saya memintanya.

(Secara umum Emacs secepat yang dibutuhkan. Tidak seperti Eclipse yang seperti mengetik dengan lem.)

Hal berikutnya yang saya temukan adalah Yasnippet ( http://emacswiki.org/emacs/Yasnippet ). Sekali lagi, saya belum pernah menggunakan yang seperti ini sebelumnya. Bukan sekadar makro untuk menambahkan boilerplate, tetapi juga bentuk yang dinamis dan dapat dinavigasi.

Kesenangan terakhir adalah kesadaran bahwa jika saya ingin mengembangkan hal ini sendiri, untuk memiliki lebih banyak alat produktivitas tingkat tinggi ini, saya memiliki kekuatan Lisp sendiri untuk bekerja dengannya.

interstar
sumber
1

(Latar belakang saya adalah beberapa tahun dengan Visual Studio dan IDE lainnya, lalu 15 tahun Vim, dan 6 bulan terakhir dengan Emacs.)

Umur panjang - Vim / Emacs adalah FOSS , dan telah ada selama beberapa dekade. Penggunaannya tidak akan menurun, dan fitur-fiturnya juga tidak akan rusak / hilang / banyak berubah, jadi Anda dapat mengandalkan membangun seluruh inti kotak peralatan karier Anda dengan penguasaan hanya satu editor.

Akses jarak jauh / di mana-mana di terminal - Meskipun keduanya memiliki sistem yang bagus untuk mengedit file jarak jauh, Anda juga dapat menginstalnya di sistem apa pun yang pernah Anda masuki.

Pengembangan yang digerakkan REPL - Keduanya memiliki mode "SLIME" dalam berbagai bentuk yang mengintegrasikan jenis REPL apa pun yang Anda gunakan. Misalnya, saya tidak pernah menemukan pengembangan berulang yang sekuat yang disediakan oleh CIDER .

Linting - Bahasa apa pun yang Anda gunakan mungkin memiliki beberapa alat linting , baik yang terpasang pada kompiler atau alat eksternal. Ini terintegrasi secara mulus dengan Emacs / Vim, menunjukkan kesalahan pengkodean Anda hampir secara real-time.

Tata bahasa perintah mnemonik - Meskipun keduanya membutuhkan waktu untuk dipelajari, editor ini memiliki sistem yang terkenal pintar untuk mengakses - dan bahkan mengingat - ribuan perintah dengan beberapa penekanan tombol dan kombo tombol. Ini sepenuhnya dapat menghilangkan kebutuhan untuk menggunakan mouse jika Anda menginginkannya.

Sistem bantuan built-in - Dokumentasi offline dari banyak bahasa dan API-nya umum ditemukan di dalam editor ini, dan dapat diakses dengan cara yang sama sederhana dengan sistem bantuan yang luas dan komprehensif yang mereka tampilkan. Pelengkapan otomatis telah ditambahkan untuk sebagian besar bahasa umum. Selain itu, ada banyak bantuan diskusi tentang hampir semua topik bantuan.

Navigasi - tag, paredit-like, mark, windowing, tab, vim-rails ' jumping , dan banyak lagi bawaan lainnya.

Manajer / repositori paket - Emacs memiliki beberapa (elpa, melpa, marmalade) dan Vim juga bagus (vundle, patogen, dll ). Saya tidak tahu ada komunitas di sekitar IDE yang menawarkan sesuatu yang sebanding dengan ini. Saya melihat lebih dari 5.000 paket dengan package-list-packages.

Lebih dari sekedar mengedit - Emacs melangkah paling jauh di sini dengan kemampuan untuk membaca berita, menjelajahi web, mengelola email, mengedit spreadsheet, membuat presentasi, dan mengatur apa pun.

Mengintegrasikan semua yang lain - debugger, sinkronisasi browser, kompilasi, shell, pengujian yang sedang berjalan.

Dapat dikustomisasi tanpa batas - Elisp adalah bahasa yang sangat kuat untuk memperluas / memodifikasi Emacs. VimL setara dengan Vim. Ada buku yang ditulis tentang keduanya. Sesuaikan tema warna dan perilaku untuk kesenangan Anda!

Mikha Elliott
sumber
0

Satu keuntungan yang dimiliki semua editor berbasis konsol dibandingkan editor GUI adalah mereka dapat dijalankan di multipleksor terminal seperti layar atau tmux . Mengapa ini bagus?

  • Lebih cepat untuk beralih dari satu konsol multipleksor terminal ke yang lain daripada beralih dari satu konsol GUI ke konsol lain menggunakan mouse, atau bahkan menggunakan alt-tab. Ini karena konsol dapat diberi nama, dan dialihkan dengan mengetikkan beberapa karakter nama.
  • Jika sesi editor Anda berada di konsol multipleksor terminal, Anda dapat mengaksesnya dari mesin mana pun. Jika saya perlu melakukan beberapa pekerjaan dari rumah, saya dapat ssh ke dalam kotak saya, memasang multipleksor terminal yang sudah berjalan ke sesi ssh saya, dan berada tepat di tempat yang saya tinggalkan saat saya meninggalkan pekerjaan.
Wayne Conrad
sumber
0

Karena vim / emacs sering digunakan oleh programmer dan sebagai pengguna C # sejak tahun 2003, dari bias ini pov adil untuk melakukan perbandingan yang tidak adil ini (Yang lain bisa berupa VS C ++ dengan Visual Assist X vs C ++ di vim / emacs):

Untuk C # dan Visual Studio:

  1. Saya baru saja menghitung jumlah penekanan tombol untuk baris ini:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
  2. Saya membaca tentang fitur emacs untuk melompat ke dalam kode. Saya rasa tidak ada fitur yang persis seperti itu. Ini memiliki fitur serupa. Inilah sisi negatif dari VS. Ada banyak fitur kecil tetapi seiring waktu berhenti berfungsi. Terakhir saya memeriksa fitur lompat tidak berfungsi tetapi itu beberapa tahun yang lalu. VS memperkenalkan fitur lompatan grafis baru yang telah saya gunakan sebagai gantinya. Ini membutuhkan mouse atau sentuhan.

  3. Di sinilah emacs / vi menang. Jika Anda harus banyak berpindah-pindah kode, fitur VS untuk ini tidak ada atau belum cukup diuji.

Masalah dengan navigasi GUI berbasis mouse adalah itu

a) Sama seperti duduk dalam posisi yang sangat statis mungkin buruk, jika demikian, tikus cenderung membuat jari-jari Anda berada dalam posisi statis juga. Sakit pergelangan tangan saya hilang dengan mengganti trackball. Saya pertama kali mencoba mouse vertikal tetapi tidak melakukan apa-apa untuk masalah tersebut.

b) Keyboard ideal saya akan memiliki 2 baris tombol fungsi, tanpa numpad, jadi saya bisa menempatkan trackball lebih dekat, membuat jarak lompatan lebih tertahankan.

Namun pada akhirnya, jika Anda ingin beralih di antara beberapa tempat tertentu, jelas "cincin tandai" lebih efektif. VS memiliki sesuatu di sepanjang garis itu ... terakhir saya menggunakannya, itu tidak bekerja dengan andal ...

c) dan kemungkinan ada banyak fitur kecil yang rusak dengan setiap rilis, jadi ini adalah sisi negatif dari VS.

Solusi untuk masalah "sumber tertutup" ini: Tulis seluruh VS di C # dan kemudian izinkan modding / pengeditan kode yang dikompilasi (saat runtime, simpan perubahan sebagai tambalan yang secara opsional dimuat pada permulaan berikutnya) tanpa melepaskan sumber. Hal ini dapat dilakukan dengan meminta decompiler mengeluarkan kode seperti saat masuk 180 derajat dari cara kerja compiler native. Biner kemudian menjadi kode sumber dan dieksekusi alih-alih kekacauan file .cs dan file .exe dll. Ada alat pihak ke-3 yang hampir dapat melakukan ini, jadi "modding" C # exe agak sepele tetapi saya mengusulkan untuk mengambil ini kesimpulan logisnya: masukkan bahkan komentar di .exe dan .dll. File-file tersebut masih akan menjadi kecil dibandingkan dengan aplikasi C / C ++ yang dikompilasi. Optimasi? Anda juga dapat memasukkan kode yang telah dioptimalkan sebelumnya. Ketika modder memodifikasi exe saat aplikasi berjalan, "AST" non-modded dan biner teroptimasi yang menyertainya dicolokkan kembali. Ide yang sama seperti pada compiler C # tetapi dibawa lebih jauh. Langkah selanjutnya: Tulis seluruh OS dalam bahasa ini, sehingga meskipun Windows adalah sumber tertutup, itu dapat dimodifikasi secara sepele karena kode sumber disertakan dengan setiap biner. Tidak ada pengaturan lingkungan, kompilasi, penautan. Cukup ubah OS saat sedang berjalan. Tutup analogi: Jika Anda menulis browser web di Common Lisp, Anda dapat mengedit browser web tanpa menghentikannya dan membuat halaman web dalam bahasa yang sama dengan browser. itu dapat dimodifikasi secara sepele karena kode sumber hadir dengan setiap biner. Tidak ada pengaturan lingkungan, kompilasi, penautan. Cukup ubah OS saat sedang berjalan. Tutup analogi: Jika Anda menulis browser web di Common Lisp, Anda dapat mengedit browser web tanpa menghentikannya dan membuat halaman web dalam bahasa yang sama dengan browser. itu dapat dimodifikasi secara sepele karena kode sumber hadir dengan setiap biner. Tidak ada pengaturan lingkungan, kompilasi, penautan. Cukup ubah OS saat sedang berjalan. Tutup analogi: Jika Anda menulis browser web di Common Lisp, Anda dapat mengedit browser web tanpa menghentikannya dan membuat halaman web dalam bahasa yang sama dengan browser.

Pengecut Anonim
sumber