Menggunakan Vim saat mengkode aplikasi skala besar

17

Saya mulai belajar Vim, dan mengikuti beberapa saran yang diberikan di sini di stackexchange. Saya mulai menggunakannya di beberapa proyek mainan dan saya senang dengan itu.
Tapi saya mulai bertanya-tanya bagaimana Anda bisa produktif tanpa membuka file lain sepanjang waktu hanya untuk mengetahui bagaimana kelas itu 'Nama, apa itu makro termasuk dalam file lain, dll.

Apa saran umum yang bisa Anda berikan?

Matias
sumber
1
Anda pasti perlu menambahkan beberapa skrip Vim untuk membantu. Saya menggunakan Vim untuk banyak program, dan saya selalu menggunakan ctag untuk membantu saya menavigasi kode sumber. Bahasa apa yang digunakan?
tehnyit

Jawaban:

10

Salah satu aspek dari pemrogram berpengalaman yang berpindah dari IDE ke lingkungan konsol / xterm, adalah menemukan pengganti untuk pengindeksan objek kode sumber (nama fungsi, variabel). Saya percaya istilah umum yang digunakan untuk Microsoft Visual Studio adalah Intellisense atau semacamnya.

Di dunia Unix / Linux, seperti vim, satu alat digunakan jika ctagsatau implementasi Open Source multi bahasa populer, ctags yang meriah . Ini tidak vimspesifik, dan didukung oleh sejumlah editor teks Unix, Linux, MS Windows, Mac OS, termasuk Emacs, CRiSP, vile & sejumlah klon vi lainnya, nedit, gedit, JED, UltraEdit, BBEdit, dan DreamWeaver (beberapa di antaranya melalui plugin pihak ketiga).

Selain itu, desain yang bagus dan dekomposisi yang bijaksana, pengorganisasian proyek yang lebih besar membuat proyek dapat dikelola karena hanya ada 1-2 tempat potensial yang jelas untuk mencari sedikit informasi ( typedefatau classdefinisi, dll.).

Saya juga menggunakan beberapa instance vim (sering melalui viewhanya untuk melihat-baca file sumber), serta penggunaan terbatas beberapa buffer edit per instance vim (terutama untuk memindahkan atau refactoring kode antar file). Saya menemukan hanya menggunakan beberapa file sumber terbuka pada suatu waktu dapat membantu dengan caranya sendiri, agar saya tetap fokus pada tugas yang ada.

mctylr
sumber
1
+1 untuk menyarankan ctag riang !
Attila O.
1
Saya menemukan bahwa mengorganisir saja sangat membantu. Jika Anda dapat melihat artefak dalam sumber dan mengatakan "Oh, itu harus didefinisikan di tempat ini" maka segalanya menjadi jauh lebih sederhana. Di sisi positifnya memulai sesi vim sangat cepat sehingga memiliki setengah lusin terbuka sekaligus menjadi hal yang cukup normal
Zachary K
@ ZakaryK Setengah lusin? Saya biasanya memiliki selusin penuh pada akhir hari
Izkata
tergantung pada harinya
Zachary K
7

Saya tidak bermaksud menjadi bagian dari perdebatan VIM vs IDE. Saya kira itu adalah preferensi pribadi. Tetapi saya menggunakan banyak VIM dan inilah mengapa saya merasa sangat kuat untuk menggunakan vim

Dua bagian dari jawabannya:

A. Kebanyakan hal VIM memungkinkan sebagian besar hal yang dapat Anda lakukan dengan IDE, (saya tidak mencoba untuk menempatkan setiap fitur tetapi hanya beberapa yang tidak jelas yang membuat vi terlihat membatasi)

  1. Anda dapat melewati prototipe jika Anda telah ctagsmengaktifkan dan melakukannyactrl+{

  2. Anda dapat membuka banyak jendela secara bersamaan dengan perintah: sp 'filename'. Tentu saja, kadang-kadang saya hanya membuka beberapa terminal untuk membuat hidup lebih mudah.

  3. Penyorotan sintaksis yang kuat. Default serta hal-hal lain. Juga, tidak seperti beberapa IDE, jika ada ketidaksesuaian kawat gigi terbuka, tali atau tidak cocok dengan yang tertutup, memberi Anda indikasi yang sangat jelas. Ini untuk sebagian besar bahasa, bukan khusus.

  4. Anda dapat mengeksekusi baris perintah menggunakan perintah ":!make"tanpa keluar dari jendela.

  5. Traverse jauh lebih cepat berdasarkan kata, berdasarkan pencarian (vi support regexp jika Anda tersedia), dan Anda dapat melintasi { to } menggunakanESC %

  6. Dimungkinkan untuk melakukan pekerjaan di GDB saat melakukan langkah debugging dan menjaga vi (di jendela lain untuk bekerja pada kode). Saat Anda memutuskan untuk mengubah file, Anda dapat membuatnya lagi dan memuatnya kembali di GDB.

B. Banyak hal yang Anda temukan lebih baik di VIM

  1. Pencarian dan penggantian jelas jauh lebih kuat.

  2. Anda dapat membuat tampilan dan nuansa kustom Anda (hitam + hijau sebagai oppsed menjadi putih + biru) dan yang lebih penting adalah perintah kuat Anda sendiri.

  3. Pilih Blok Vertikal. Coba ctrl+vdan gerakkan kursor secara vertikal. Ini benar-benar fitur yang tak terbayangkan!

  4. Kedengarannya aneh -tetapi cobalah untuk memotong / menyalin blok dan harus melewatinya 30 kali! Tidak butuh usaha lebih dari melakukannya 1 kali. Juga, cobalah untuk mengulang (bukan membatalkan) suatu kegiatan satu atau beberapa kali.

  5. Indentasi otomatis, kontrol tab, dan cara otomatis untuk mengonversi komentar Anda dalam komentar blokir atau komentar gaya tertentu.

  6. Konflik gabungan efektif dengan vimdiff.

  7. Yang paling penting dengan lingkungan kerja berbasis konsol adalah Anda tidak pernah menyentuh MOUSE! jadi jika Anda cepat pada papan kunci - IDE tidak baik.

  8. Bekerja pada banyak mesin, server secara bersamaan! Tidak terlihat jelas tetapi kadang-kadang ketika Anda bekerja di server, Anda langsung masuk di beberapa mesin dan melakukan sesuatu.

Akan menjawab tentang bagaimana melakukannya in vi jika fitur-fitur itu dalam tuntutan serius. Lihat situs ini Vimcast . tentu saja ada banyak.

Tapi ya, sebagian besar hal-hal berbasis konsol sudah kuno, dan tidak mungkin saya mengatakan sesuatu yang menentang IDE.

Dipan Mehta
sumber
Catatan kecil: vim memiliki :makeperintah bawaan, Anda bahkan tidak memerlukan !(yang, bagi mereka yang tidak menggunakan vim, menjalankan perintah pada terminal). Dan saya baru menemukan ctrl-vbeberapa minggu yang lalu dan sekarang saya menggunakannya terus-menerus, ini sangat berguna.
Kevin
@Kevin - ok saya tidak tahu tentang <code>: make </code>! Ini menyenangkan untuk diketahui. Ini adalah jenis romansa yang Anda dapatkan dengan VIM - Anda tidak akan pernah bisa membuat daftar lengkap fitur yang dapat Anda lakukan dengan VIM !! Itu selalu membuat Anda terkejut. Terima kasih.
Dipan Mehta
Ya, hebat seperti itu. Keuntungannya :makeadalah bahwa secara otomatis memindahkan Anda ke kesalahan pertama, dan Anda dapat menavigasi mereka dengan cndan cp, lihat :help make. Saya sebenarnya tidak menyadari hal itu sampai saya mencarinya; Saya biasanya membuat di jendela dan pwd yang berbeda, sepertinya Anda harus berada di yang sama dengan Makefile, meskipun Anda bisa meletakkannya di direktori src hanya untuk pindah ke root dan membuatnya di sana.
Kevin
4

Menurut pendapat saya, Vim memberi Anda editor yang sangat kuat dengan fitur-fitur dasar, tetapi terserah Anda untuk menambahkannya dengan skrip / addon yang kemungkinan besar akan Anda gunakan dalam proyek Anda. Ini mungkin akan berbeda tergantung pada apakah Anda kebanyakan mengedit skrip, dokumentasi, atau file yang perlu dikompilasi.

Sebagai contoh, saya menggunakan zencodinguntuk mengedit html / css sesekali, snipmateuntuk Textmate-seperti potongan, dan beberapa terkait python-add-ons ( pyflakes, pep8, vimpdb, dll) untuk Python coding, yang adalah apa yang saya lakukan paling sering.

Lalu ada add-on lain yang tidak sering saya gunakan, tetapi saya masih menemukan mereka sangat membantu sesekali, seperti Dpastedan ConqueTerm.

Namun, bagi saya, fitur yang paling berguna dari Vim adalah built-in (undo berbasis waktu, navigasi cepat, filter rentang, dll.) - hal-hal yang tidak dapat saya temukan (atau setidaknya tidak mudah diakses) ) dalam IDE. Jadi, begitu Anda mengatur Vim Anda untuk mendapatkan potongan-potongan IDE yang benar-benar Anda butuhkan ( snipmate, ctags...), Anda bisa mendapatkan manfaat dari kedua lingkungan IDE dan konsol.

Penggunaan saya terhadap Vim hanya untuk konsol, jadi saya tidak bisa mengatakan betapa membantu alat ini dengan Gvim.

Terlepas dari semua kebaikan tambahan, bagaimanapun, saya masih menemukan diri saya berjalan !grep ...atau ^Z + find ...sesekali.

Attila O.
sumber
3

Saya melakukan semua pemrograman saya di vim. Saya sebenarnya merasa lebih mudah daripada IDE yang saya gunakan. Anda dapat membuka banyak file sekaligus, bahkan di layar yang sama (lihat tab dan jendela). Saya biasanya bekerja di X, jadi saya memiliki beberapa (6) layar xterm terbuka: satu untuk file c di vim (beberapa di tab), yang lain untuk header di vim (juga tab), dan jendela non-vim: build, debug , konfigurasi, dll. Bahkan ketika saya berada di konsol murni, saya dapat menggunakan tab, jendela, dan kode lipat untuk melihat apa yang saya butuhkan, dan saya dapat membangun, dan bahkan melihat halaman manual tanpa keluar vim, Anda hanya perlu mengetahui perintah yang benar. Dan ada begitu banyak, saya yakin saya belum menguasai setengah dari mereka. Dan sulit untuk mengalahkan pencarian dan penggantian vim.

Kevin
sumber
1

Banyak aplikasi skala besar telah (dari saya, setidaknya, dua;), dan saya duga, banyak lagi yang akan ditulis sepenuhnya dalam Vim. IDE seperti itu masih merupakan inovasi yang agak modern .

Namun, vanila polos (aduh) atau Vim agak kurang. Mengenal Vim dan berpikir dalam beberapa hal membantu sedikit, dan plugin banyak membantu , yang mana sumber www.vim.org adalah sumber yang tak ada habisnya. Beberapa spesifik untuk bahasa yang Anda gunakan, dan beberapa yang umum (untuk komentar, untuk browsing file, untuk ...) mengubahnya dengan cepat menjadi lingkungan pengembangan yang sangat cepat. Setelah semua (dan beberapa pasti akan berdebat) sebuah IDE hanyalah sebuah editor dengan plugin yang dikemas dalam antarmuka yang lebih baik. Tidak ada banyak hal grafis dalam IDE juga.

Benteng
sumber