August 24, 2011

120+ Perintah VIM dan Fungsinya



Banyak yang bilang kalau vim (dan emacs) adalah text editor yang wajib dipelajari para pengguna linux. Minimal tau cara membuka file, edit beberapa text dan keluar dari vim.

Dulu saya gak terlalu tertarik memakai vim, bahkan sering dibuat jengkel karena untuk memindah kursor saja harus belajar, harus ada insert dan command mode. Tapi setelah membaca beberapa artikel tentang vim, saya mulai tertarik untuk mempelajari lebih jauh, semakin menarik. Apalagi setelah menambahkan plugin dan beberapa baris konfigurasi di vimrc. Buat yang baru mengenal vim, coba ketik "vimtutor" di terminal, tutorial praktek vim yang sangat keren.

Setelah itu silahkan baca kitab vim yang direkomendasikan para veteran vim judulnya "Learning the Vi and Vim Editor" terbitan O'Reilly Media,Inc, karangan Arnold Robbins, Elbert Hannah dan Linda Lamb.

Berikut 120+ perintah vim yang saya rangkum dari berbagai sumber dan sudah saya terjemahkan ke bahasa nasional kita, bahasa indonesia. Gak perlu dihafalin, karena semakin kita bersahabat dengan vim, jari tangan kita akan ingat dengan sendirinya.
    +------------------------------------------------------------------+
    |  Ada beberapa perintah yang sebenarnya merupakan multi-command,  |
    |  misalnya:                                                       |
    |  --------------------                                            |
    |  ggguG = lowercase                                               |
    |  --------------------                                            |
    |  gg : memindah kursor ke baris pertama                           |
    |  gu : mengganti dengan huruf kecil                               |
    |  g  : memindah kursor ke baris terakhir                          |
    |  --------------------                                            |
    |  ggVG = seleksi semua                                            |
    |  --------------------                                            |
    |  gg: memindah kursor ke baris pertama                            |
    |  v : mode visual                                                 |
    |  g : memindah kursor ke baris terakhir                           |
    |  --------------------------------------------------------------  |
    |  Trik : lakukan mapping pada vimrc  untuk multi-command yang     |
    |  sering digunakan,misalnya:                                      |
    |                                                                  |
    |  map  ggVG                                                  |
    |                                                                  |
    |  (Control + a) akan menyeleksi semua text dari baris pertama     |
    |  sampai terakhir,seperti text editor pada umumnya.               |
    +------------------------------------------------------------------+

===============================================================================
MEMBUKA FILE, MENYIMPAN DAN KELUAR
===============================================================================
:e namafile     : membuka file bernama "namafile",apabila tidak ditemukan maka
                  akan di buat file baru dengan nama "namafile".
:browse e       : membuka file dengan tampilan grafis
:Sex            : membagi window dan membuka file explorer
:e              : memuat ulang file (reload)
:new filebaru   : mengedit "filebaru" di window baru
:w namafile     : menyimpan file dengan nama "namafile"
:w              : menyimpan file tanpa harus keluar dari ViM.
:qa             : keluar tanpa menyimpan semua perubahan jika buffer lebih dari 
                  satu
:q!             : keluar tanpa menyimpan perubahan.
:q              : keluar dari ViM.
ZZ              : menyimpan isi dari buffer kedalam file, kemudian keluar.

===============================================================================
KURSOR
===============================================================================
h               : geser kiri 1 karakter
j               : turun 1 baris
k               : naik 1 baris
l atau Spasi    : geser kanan 1 karakter
w               : geser kanan 1 kata (kursor pada huruf pertama)
W               : geser kanan 1 kata dan menghiraukan tanda baca
                  (kursor pada huruf pertama)
e               : geser kanan 1 kata (kursor pada huruf terakhir)
E               : geser kanan 1 kata dan menghiraukan tanda baca
                  (kursor pada huruf terakhir)
b               : geser kiri 1 kata (kursor pada huruf pertama)
B               : geser kiri 1 kata dan menghiraukan tanda baca
                  (kursor pada huruf pertama)
0 (angka nol)   : pindah ke awal baris
$               : pindah ke akhir baris
(               : pindah ke awal kalimat
)               : pindah ke akhir kalimat
{               : pindah ke awal paragraf
}               : pindah ke akhir paragraf
-               : pindah ke karakter pertama pada baris sebelumnya
+               : pindah ke karakter pertama pada baris selanjutnya
gg              : pindah ke baris pertama
G               : pindah ke baris terakhir
H               : layar atas
M               : layar tengah
L               : layar bawah
nG              : pindah ke baris "n"
ENTER           : turun 1 baris dan menempatkan kursor pada karakter pertama
Ctrl+F          : turun 1 halaman
Ctrl+B          : naik 1 halaman

    +-------------------------------------------------------------------+
    |  Pada beberapa perintah bisa dikombinasikan dengan angka, misal:  |
    |  17h,8j,19k,45l,17w,8E,1945G                                      |
    +-------------------------------------------------------------------+

===============================================================================
MENAMBAH TEXT / MASUK KE MENU INSERT
===============================================================================
i               : sebelum kursor
I               : awal baris
a               : setelah kursor
A               : akhir baris
o               : membuat baris baru diatas posisi kursor
O               : membuat baris baru dibawah posisi kursor

===============================================================================
EDIT TEXT
===============================================================================
s               : meng-edit satu (dan/atau menambahkan beberapa karakter) 
                  dimulai dari posisi kursor 
S               : hapus kemudian meng-edit satu baris dimana kursor berada
r               : meng-edit satu karakter pada posisi kursor (dari command mode)
R               : meng-edit karakter, dimulai dari posisi kursor (meng-edit 
                  karakter yang dilewati kursor sampai menekan ESC)
cb,cB,ce,cE,    : meng-edit text dikombinasikan dengan tombol motion (lihat
cw,cW,c(,c),      KURSOR)
c{,c},c0,c$

    +-------------------------------------------------------------------+
    |  Pada beberapa perintah bisa dikombinasikan dengan angka, misal:  |
    |  17c),c8G                                                         |
    +-------------------------------------------------------------------+

===============================================================================
HAPUS TEXT
===============================================================================
x               : menghapus karakter pada posisi kursor
dd              : menghapus baris
C               : menghapus sampai akhir baris dan masuk menu insert
D               : menghapus sampai akhir baris
db,dB,de,dE,    : mengganti text dikombinasikan dengan tombol motion (lihat 
dw,dW,d(,d),      KURSOR)
d{,d},d0,d$

    +-------------------------------------------------------------------+
    |  Pada beberapa perintah bisa dikombinasikan dengan angka, misal:  |
    |  17x,8dd,1945dw                                                   |
    +-------------------------------------------------------------------+

===============================================================================
COPY - PASTE
===============================================================================
yy              : meng-copy satu baris
nyy             : meng-copy "n" baris
Y               : meng-copy sampai akhir baris
p               : paste setelah atau di bawah baris posisi kursor
P               : paste tepat pada posisi kursor atau diatas baris

===============================================================================
MENCARI TEXT
===============================================================================
/asdf           : mencari "asdf" dari atas kebawah
?asdf           : mencari "asdf" dari bawah ke atas
*               : mencari kata dibawah posisi kursor
n               : mengulang pencarian terakhir
/jo[ha]n        : mencari john atau joan
/\          : mencari kata "indomie" atau "supermie"
/^\n\{3}        : mencari 3 baris yang kosong
y/              : highlight/block kata yang dicari

===============================================================================
MENGGANTI TEXT
===============================================================================
:s/lama/baru/g      : mennganti kata "lama" dengan kata "baru" dalam satu baris
:%s/lama/baru/g     : mengganti semua kata "lama" dengan kata "baru"
:%s/lama/baru/gc    : mengganti semua kata "lama" dengan kata "baru" dengan 
                      meminta konfirmasi terlebih dahulu
:%s/lama/baru/gi    : mengganti semua kata "lama" dengan kata "baru" tanpa 
                      menghiraukan huruf besar/kecil
:19,45s/lama/baru/g : mengganti semua kata "lama" dengan kata "baru", dimulai 
                      dari  baris 19 sampai dengan baris 45
:bufdo %s/lama/baru/g : mengganti kata "lama" dengan kata "baru" pada semua 
                        buffer yang terbuka

===============================================================================
CHANGE CASE
===============================================================================
VU              : mengubah baris menjadi huruf besar semua
Vu              : mengubah baris menjadi huruf kecil semua
vEU             : mengubah kata menjadi huruf besar
vEu             : mengubah kata menjadi huruf kecil
gggUG           : mengubah semua text menjadi huruf besar
ggguG           : mengubah semua text menjadi huruf kecil
vE~             : membalik kata dari huruf besar ke huruf kecil atau sebaliknya
g~~             : membalik baris dari huruf besar ke huruf kecil atau sebaliknya
:%s/\<./\u&/g   : mengubah huruf pertama dari setiap kata dengan huruf besar
:%s/\<./\l&/g   : mengubah huruf pertama dari setiap kata dengan huruf kecil
:%s/.*/\u&      : mengubah huruf pertama dari setiap baris dengan huruf besar
:%s/.*/\l&      : mengubah huruf pertama dari setiap baris dengan huruf kecil
:19,45s/.*/\l&  : mengubah huruf pertama dari baris 19 sampai baris 45 dengan 
                  huruf kecil
:%s/[.!?]\_s\+\a/\U&\E/g : mengubah huruf pertama dari setiap kalimat dengan 
                           huruf besar

===============================================================================
TAB
===============================================================================
:tabnew         : membuka tab baru
:tabfirst       : pindah ke tab pertama
:tablast        : pindah ke tab terakhir
:tabdo          : eksekusi perintah pada semua tab
:tab ball       : menempatkan semua file yang terbuka menjadi satu tab/satu file
   : pindah ke tab selanjutnya
 : pindah ke tab sebelumnya

===============================================================================
MEMBAGI WINDOW
===============================================================================
:split namafile : membuka file bernama "namafile" pada window terpisah
:vsplit         : membagi window secara vertikal
:hide           : menutup window
:sview namafile : seperti :split (read-only)
k       : meletakkan kursor pada window atas

===============================================================================
MENANDAI
===============================================================================
mn              : menandai posisi kursor dengan "n"
'n              : memindah posisi kursor ke tanda n

===============================================================================
AUTO COMPLETE
===============================================================================
    : melengkapi kata dengan yang pernah ditulis sebelumnya
    : melengkapi baris dengan yang pernah ditulis sebelumnya

===============================================================================
INDENT
===============================================================================
>>              : indent
        : indent
<<              : un-indent (insert mode)
        : un-indent (insert mode)
:17,45>         : indent baris 17 sampai 45

===============================================================================
INTERAKSI DENGAN UNIX
===============================================================================
:shell          : membuka terminal
        : kembali ke Vim
:!pwd           : eksekusi pwd dari Vim
!!pwd           : eksekusi pwd dan menyisipkan output di file

===============================================================================
LAIN-LAIN
===============================================================================
.               : mengulang perintah sebelumnya 
%               : pindah kursor ke sesama tanda kurung yang berpasangan (),{},[]
:his c          : menampilkan daftar perintah sebelumnya
:his s          : menampilkan daftar pencarian kata sebelumnya
:history        : menampilkan daftar perintah yang dilakukan sebelumnya
:ju             : menampilkan daftar pemindahan kursor sebelumnya
q:              : membuka window yang berisi daftar perintah sebelumnya
q/              : membuka window yang berisi daftar pencarian kata sebelumnya
g          : menampilkan informasi file (jumlah baris,kolom,kata,ukuran file)
:19,45TOhtml    : konversi baris 19 sampai 45 dalam bentuk html
:runtime! syntax/2html.vim : konversi file dalam bentuk html

No comments:

Post a Comment