Kamis, 10 Maret 2011

Vim, editor teks paling hebat sejagad raya

Kali ini aku mau bahas soal Vim, aplikasi editor luar biasa buatan Bram Moolenaar. Bagi yang biasa pake Notepad++ waktu ngoding, percaya deh, Vim bakal bikin kamu lebih produktif dari sebelumnya.

Aku kenal Vim sebenarnya sejak lama, sekitar akhir taun 2008, waktu ngambil kuliah Sistem Operasi. Tapi waktu itu cuma kenalan sebentar aja, udah keburu jijay liat wujudnya. Masih inget banget waktu itu nyoba jalanin Vim dari Terminal trus ga tau cara keluarnya, haha. Gimana mau keluar, caranya ngetik di Vim aja ga tau, akhirnya temenku ngasi tau kalo pengen mulai ngetik di Vim, harus teken 'i' dulu. Oala. Kalo keluar harus pake command ':q'. Oalaaa, program apa ini?? Ribet amat, ogah ah, enakan juga ngetik di notepad, haha.

Hampir tiga tahun berlalu, tiba-tiba aku mendadak jadi Web Developer. Meninggalkan sementara dunia Blender dan segala tetek bengeknya (tenang saja Blender, aku akan kembali padamu, cepat atau lambat, hiks). Karena pengalaman minim soal Web Development, aku belajar dari segala penjuru dunia maya. Mulai dari HTML sampe framework PHP, semua ditelen dalem-dalem. Sewaktu belajar , aku nemu orang luar biasa di dunia web development, namanya Jeffrey Way. Dia yang biasa ngisi screencast di Nettuts+, situs buat belajar bikin web. Orang ini hebat amat, bisa semuanya, mulai dari desain sampe Web programming. Aku belajar banyak dari dia, screencastnya begitu jelas dan mudah dipahami. Suatu ketika, Jeffrey Way ngasi contoh bahwa kalo kita pake Terminal kita bisa lebih efisien daripada pakai mouse. Dia juga bilang kalo pake Vim bisa bikin kita jadi lebih produktif. Dia bahkan sampe bikin screencast premium khusus untuk bahas Vim. Wow. Aku jadi penasaran deh apa sih Vim itu? Setelah baca berbagai diskusi di internet, ada yang bilang kalo programmer hebat di dunia ini pasti pakai Vim, contohnya Mark Zuckerberg, ini buktinya...





Cuma Vim yang mungkin ada di skrinsut film The Social Network itu. Mark pake fitur Window yang ada di Vim, makanya di skrinsut ketiga, layarnya bisa kebelah sampe 3 gitu. Setahuku belum ada program lain bisa gitu. Kalo masih belum percaya itu program Vim, ini aku kasih skrinsut Vim yang aku pake buat nulis blog ini...


Mirip punya Mark Zuckerberg kan?

Sejak liat film The Social Network itu aku putusin untuk belajar pake Vim. Aku baru pake Vim mulai awal Februari kemaren, awalnya emang berat, tapi sekarang udah mulai kerasa manfaatnya.

Nah, daripada kelamaan bacot, sebenernya apa sih keuntungan pake Vim? Setelah pengembaraan selama satu bulan setengah, aku bisa tarik beberapa keuntungan Vim dibanding editor biasa, antara lain:

1. Tanpa Mouse (Motion)
Motion adalah fitur ini fitur paling powerful yang ada di Vim. Dengan Motion, kita bisa pindah ke satu kata ke kata lainnya dengan cepat, tanpa mouse, bahkan tanpa tombol panah. Vim membedakan Insert Mode(saat kita mengetik) dengan normal mode(saat kita memasukkan command motion), sehingga kita tidak membutuhkan tombol panah saat bergerak antar huruf. Hal ini sangat efisien, karena tangan kita tidak perlu berpindah dari keyboard ke mouse/tombol panah. Sadar ataupun tidak, waktu berpindah dari keyboard dengan mouse bisa menghabiskan banyak waktu. Kalo liat film Social Network lagi, kita bisa liat kalo waktu ngoding, Mark ga pernah pake mouse kan? Hal yang mustahil dilakukan dengan Notepad++ atau Visual Studio 2010 sekalipun.

2. Window
Dengan window, kita bisa menampilkan banyak file sekaligus dalam satu layar. Layoutnya pun bisa kita atur sendiri, mau 2 vertikal, 3 horizontal, atau apa aja, semuanya bisa di Vim. Mark Zuckerberg bener-bener memanfaatkan fitur yang satu ini. Vim juga memakai konsep non blocking window, artinya kita gak bakal nemuin yang namanya floating window(contohnya: window find/search pada notepad++). Seumur hidup aku baru kenal dua program yang pake konsep non blocking window seperti ini, yaitu Blender dan Vim. Dua-duanya program yang luar biasa, hehe.

3. Buffer dan Macro
Untuk membuka banyak file sekaligus, Vim memakai kombinasi buffer dan window. Buffer adalah list file yang dibuka sekaligus dalam satu session Vim. Dengan buffer ini kita bisa melakukan satu command ke banyak file sekaligus. Contoh penggunaannya biasanya programmer CodeIgniter pasti tahu skrip dibawah ini.
if (!defined('BASEPATH')) exit('No direct script access allowed'); 
Skrip tersebut ada di hampir semua file php dalam project Code Igniter. Daripada copy paste manual, kita cukup mengetiknya sekali pada Vim. Dengan fitur macro, kita bisa merekam apa yang kita ketik dan mengulanginya lagi secara otomatis di file lain. Sangat praktis dan tidak repot.

4. Seleksi Vertikal (Visual Mode)
Fitur ini yang paling fenomenal, tiada duanya. Di Vim, ada yang namanya Visual Mode, yaitu mode untuk seleksi huruf. Dengan fitur ini kita bisa melakukan seleksi vertikal maupun horizantal. Hal ini memungkinkan Vim untuk melakukan copy paste secara vertikal. Sebagian orang menganggap remeh fitur ini, tapi beneran, kalo pengen kodemu tampil rapi, fitur ini sangat bermanfaat. Bahkan ASCII Art hampir mustahil dibuat tanpa fitur ini. Dengan Visual Mode, text editor serasa memakai potosop, haha. Kalo pengen liat tutorial bikin ASCII Art pake Vim ini link-nya.

4. Autocomplete
Bagian ini cukup unik, karena konsep autocomplete pada Vim berbeda dengan kebanyakan IDE. Secara default, Vim bisa melakukan autocomplete pada semua kata yang ada di file kita. Contohnya gini, pada artikel ini aku pernah mengetik kata 'customizable'. Kalo aku ingin tulis kata ini lagi, aku cukup ketik 'cust', lalu tekan CTRL+N, Vim otomatis bisa melengkapinya, karena kita pernah menulis kata itu sebelumnya. Semua kata yang pernah kita tulis di buffer Vim jadi library untuk menyelesaikan autocomplete. Sungguh unik dan tiada duanya. Bandingkan Notepad++ yang hanya melakukan autocomplete sesuai dengan library yang dia miliki. Kalo lagi ngedit PHP, ya hanya kata-kata di library PHP yang bisa di-autocomplete (Vim juga support autocomplete yang seperti ini).

5. Sangat Personal
Vim sangat customizable, hampir semuanya bisa kita ubah sesuai kebutuhan kita. Mulai dari colorscheme sampai shortcut command.

6. Plugin-nya banyak
Mau ngoding HTML+CSS gampang pake Zen Coding kayak di Notepad++? Ada. Mau debug PHP pake xdebug kayak di Eclipse? Bisa. Banyak plugin bermanfaat yang bikin Vim makin powerful. Semuanya bisa diliat di vimscript.org. Bahkan ada plugin twitter client lo di Vim, mantap kan?

Sebenernya masih banyak lagi fitur keren di Vim, kalo ditulis semua mungkin artikel ini baru selese taun 2012 nanti. Haha. Yang jelas, semakin hari aku semakin jatuh cinta sama Vim. Rasanya gak mungkin beralih lagi ke Notepad.

Tidak ada gading yang tidak retak. Rasanya gak adil kalo aku cuma ngasi poin positip aja tanpa poin negatif. Sebagus-bagusnya vim, ada kelemahannya juga. Tapi kelemahan ini cuma minor aja kok, bukan big deal. Berikut sedikit kelemahannya:

1. Belajarnya lumayan susah
Karena Vim gak kayak notepad++, belajar Vim butuh waktu yang gak sedikit. Pada awal belajar Vim, tingkat kecepatan ngoding kita juga bisa berkurang. Tapi seiring berjalannya waktu, kita bisa sangat produktif ngoding dengan Vim. Kalo aku sendiri sih kira-kira butuh 2 mingguan buat terbiasa pake Vim.

2. Content Folding
Ga tau aku yang emang belum tau ato gimana, tapi folding di Vim kok kayaknya ga enak ya? Soalnya folding di Vim hanya berdasarkan indentation, bukan berdasarkan kurung ato kurung kurawal. Kalo kodingannya Python sih ga masalah, Python ga pake kurung kurawal soalnya. Kalo pake PHP jadinya aneh, akhirnya aku ga pake fitur ini deh. Tapi lagi-lagi ini bukan fitur yang terlalu penting, sekarang aku enjoy aja tanpa folding.

3. Error Checking
Sama seperti Notepad++, kalo kamu salah ngetik, kodemu ga bakal dikasih underscore merah kayak di Netbeans ato Eclipse. Fitur yang bikin beberapa orang beralih dari Notepad++ dan Vim. Tapi lagi-lagi fitur ini gak terlalu penting, karena beberapa bahasa pemrograman menampilkan errormu dimana ketika sudah di-compile. Bukan masalah menurutku.

4. Harus dikustomisasi
Vim harus dikustomisasi dahulu supaya bisa berguna semestinya. Misalnya kolom nomer di kiri window ga otomatis ada kalo gak kita kasi command ':number'. Bagi beginner, ini yang buat Vim yang masih baru di-instal begitu terlihat mengerikan. Lagi-lagi bukan big deal, hehe.

Itu aja menurutku kekurangannya, gak terlalu besar kan? Makanya hayuk semuanya, sanak saudara, handai taulan, belajar Vim semua, biar pada tau enaknya gimana. Setau aku yang bisa Vim di Indonesia ini dikit banget, ini mungkin yang membuat Teknologi Informasi kita masih ketinggalan jauh sama negara-negara barat (hehe, nyambung ga sih?). Bahkan setauku juga di kampusku cuma satu orang selain aku yang biasa pake Vim sehari-harinya, yaitu Dosen Jaringan Komputer, Pak Wahyu, selain itu gak ada satupun lagi, padahal jurusan Informatika. Apa aku aja yang ansos ya? Haha. Tapi beneran kok, biasanya mahasiswa yang suka console/terminal, lebih milih pake Nano daripada Vim, biarpun pake Vim, masih pake tombol anak panah. Keliatan kalo emang belum tau kekuatan Vim yang sesungguhnya.

Gitu aja deh artikelku kali ini, mohon maap kalo ga terlalu jelas. Kalo kamu tertarik dan butuh tutorialnya, aku ada vidionya, dapet dari Derek Wyatt. Kalo pengen ngopi, tinggal YM ato SMS aku aja, ato donlot sendiri aja di situsnya dia.

Makasih atas perhatiannya dan selamat mencoba!

Wassalam.

11 komentar:

arini mengatakan...

cie cie,, diapdett,, diapdett,,

arel mengatakan...

hoo begono..tp sakjane aku nda terlalu mudeng2..hwaha..btw2..link blogku bukan yg itu..yang ini aja >> arelicharelzh.wordpress.com okeokee..

Yusuf mengatakan...

@Arini, komenmu ga nyambung, haha. Aku lagi rajin nulis nih, bentar lagi apdet lagi, hehe, tunggu aja..

@Arel, suwun komennya. Artikelku emang mbingungi, hehe. Iya, nanti aku ganti blogrollnya semua sekalian, kayaknya udah pada mati semua.

rifai mengatakan...

jangan lupa, link blog ini powered by http://sikl.us :D

fikar mengatakan...

ayo semangat!
kembali ke blender? yakin ta? :p

Ucup Umar mengatakan...

@Rifai, komenmu ora nyambung pisan, tapi gapapa, hehe, sekalian kenalan situs pemendek url sikl.us, artikel ini bisa dibuka juga di http://sikl.us/tr3w2o

@fikar, insya Allah kar, kita kan ada tanggungan yang belum selesai, hehe

Rina mengatakan...

blogku ganti ini cup

http://heyrin.blogdetik.com

Nitza mengatakan...

mantap

Ucup Umar mengatakan...

@Rina, iya uda tau, aku kan udah komen disana, blogrollnya nanti aku ganti sekalian ganti tampilan blog, sabar aja ya, hehe

@Mas Nitza, wuih, mas Tukang Animasi sampe sini juga, kapan kita bisa sharing lagi nih mas? hehe

azer89 mengatakan...

klo editor buat ngoding menurut saya pribadi :
1. Visual Studio
2. Netbeans (sayangnya kayak keong)

salah satu yang penting juga enak gak nya debugging dan fitur2 lainnya biar lebih robust developnya :))

cmiiw

pulpn mengatakan...

mantep bro, belajar vim emg banyak manfaatnya.