
% VIM Quick Reference Card
% Copyright (c) 2002 Laurent Gregoire.
% TeX Format

% Note: Comment the following line and Uncomment the three next for PDF
% generation (command is pdftex vimqrc.tex).

% Indonesian translation by Edwin Maolana

\input outopt.tex

% \pdfoutput=1
% \pdfpageheight=21cm
% \pdfpagewidth=29.7cm

% Font definitions
\font\bigbf=cmbx12
\font\smallrm=cmr8
\font\smalltt=cmtt8
\font\tinyit=cmmi5

\def\title#1{\hfil{\bf #1}\hfil\par\vskip 2pt\hrule}
\def\cm#1#2{{\tt#1}\dotfill#2\par}
\def\cn#1{\hfill$\lfloor$ #1\par}
\def\sect#1{\vskip 0.4cm {\it#1}\par}

% Characters definitions
\def\bs{$\backslash$}
\def\backspace{$\leftarrow$}
\def\ctrl{{\rm\char94}\kern-1pt}
\def\enter{$\hookleftarrow$}
\def\or{\thinspace{\tinyit{or}}\thinspace}
\def\key#1{$\langle${\rm{\it#1}}$\rangle$}
\def\rapos{\char125}
\def\lapos{\char123}
\def\bs{\char92}
\def\tild{\char126}

% Three columns definitions
\parindent 0pt
\nopagenumbers
\hoffset=-1.56cm
\voffset=-1.54cm
\newdimen\fullhsize
\fullhsize=27.9cm
\hsize=8.5cm
\vsize=19cm
\def\fullline{\hbox to\fullhsize}
\let\lr=L
\newbox\leftcolumn
\newbox\midcolumn
\output={
  \if L\lr
    \global\setbox\leftcolumn=\columnbox
    \global\let\lr=M
  \else\if M\lr
    \global\setbox\midcolumn=\columnbox
    \global\let\lr=R
  \else
    \tripleformat
    \global\let\lr=L
  \fi\fi
  \ifnum\outputpenalty>-20000
  \else
    \dosupereject
  \fi}
\def\tripleformat{
  \shipout\vbox{\fullline{\box\leftcolumn\hfil\box\midcolumn\hfil\columnbox}}
  \advancepageno}
\def\columnbox{\leftline{\pagebody}}

% Card content
% Header
%\hrule\vskip 3pt
\title{KARTU PETUNJUK CEPAT VIM}

\sect{Pergerakan dasar}
\cm{h l k j}{ke kiri, kanan, ke atas, bawah}
\cm{b w}{ke awal kata/tanda kiri, kanan}
\cm{ge e}{ke akhir kata/tanda kiri, kanan}
\cm{\lapos\ \rapos}{paragraf sebelum, berikutnya}
\cm{( )}{awal dari kalimat sebelum, berikutnya}
\cm{0 gm}{awal baris, tengah baris}
\cm{\^\ \$}{karakter pertama, karakter terakhir dari baris}
\cm{$n$G $n$gg}{ke baris $n$, kondisi akhir, pertama}
\cm{$n$\%}{persentase $n$ dari file{\it($n$ harus ditentukan)}}
\cm{$n|$}{kolom $n$ pada baris sekarang}
\cm{\%}{cari tanda kurung berikutnya, tanda kurung, komentar, {\tt\#define}}
\cm{$n$H $n$L}{awal karakter $n$, mulai dari bawah layar}
\cm{M}{ke tengah jendela/layar}

\sect{Penyisipan \& Penempatan $\to$ insert mode}
\cm{i a}{sisip sebelum, setelah kursor}
\cm{I A}{sisip pada awal, akhir dari baris}
\cm{gI}{sisip teks pada kolom pertama}
\cm{o O}{buka baris baru bawah, atas pada baris sekarang}
\cm{r$c$}{ganti karakter di bawah kursor dengan $c$}
\cm{gr$c$}{seperti {\tt r}, tapi tanpa mempengaruhi layout}
\cm{R}{ganti karakter-karakter permulaan pada kursor}
\cm{gR}{seperti {\tt R}, tapi tanpa mempengaruhi layout}
\cm{c$m$}{ganti teks untuk pergerakan sebanyak $m$}
\cm{cc\or S}{ganti baris yang sekarang}
\cm{C}{ganti ke akhir dari baris}
\cm{s}{ganti satu karakter dan sisipkan}
\cm{\tild}{tukar case dan kursor advance}
\cm{g\tild{$m$}}{tukar case sebanyak $m$}
\cm{gu$m$ gU$m$}{lowercase, uppercase teks sebanyak $m$}
\cm{$<$$m$ $>$$m$}{geser kiri, kanan, teks sebanyak $m$}
\cm{$n$$<$\kern-3pt$<$ $n$$>$\kern-3pt$>$}{geser sebanyak $n$ baris kiri, kanan}

\sect{Penghapusan}
\cm{x X}{hapus karakter dibawah, sesudah kursor}
\cm{d$m$}{hapus teks sebanyak $m$}
\cm{dd D}{hapus baris saat ini, sampai ke akhir baris}
\cm{J gJ}{join baris saat ini selanjutnya, tanpa spasi}
\cm{:$r$d\enter}{hapus dgn jarak sebanyak $r$ baris}
\cm{:$r$d$x$\enter}{hapus dgn jarak sebanyak $r$ baris kedalam register $x$}

\sect{Mode insert}
\cm{\ctrl V$c$ \ctrl V$n$}{sisip char $c$ secara literal, nilai desimal $n$}
% \cm{\ctrl V$n$}{sisip nilai desimal dari karakter}
\cm{\ctrl A}{menyisipkan inserted teks sebelumnya}
\cm{\ctrl @}{sama sprt {\tt\ctrl A} dan hentikan sisip $\to$ command mode}
\cm{\ctrl R$x$ \ctrl R\ctrl R$x$}{sisip isi register sebanyak $x$, secara literal}
\cm{\ctrl N \ctrl P}{penyelesaian teks sebelum, sesudah kursor}
\cm{\ctrl W}{hapus kata sebelum kursor}
\cm{\ctrl U}{hapus semua karakter inserted pada baris saat ini}
\cm{\ctrl D \ctrl T}{geser kiri, kanan satu lebar geser}
\cm{\ctrl K$c_1$$c_2$\or $c_1$\kern-1pt\backspace$c_2$}{masukkan digraph $\{c_1,c_2\}$}
\cm{\ctrl O$c$}{eksekusi $c$ pada command mode utk sementara}
\cm{\ctrl X\ctrl E \ctrl X\ctrl Y}{gulung atas, bawah}
\cm{\key{esc}\or \ctrl[}{pengabaian $\to$ command mode}

\sect{Penyalinan}
\cm{"$x$}{gunakan register $x$ untuk hapus berikutnya, ambil, letakan}
\cm{:reg\enter}{lihatkan isi dari semua register}
\cm{:reg $x$\enter}{lihatkan isi dari register $x$}
\cm{y$m$}{ambil teks sebanyak $m$}
\cm{yy\or Y}{ambil baris yang sekarang ke dalam register}
\cm{p P}{letakan register setelah, sebelum posisi kursor}
\cm{]p [p}{seperti {\tt p}, {\tt P} dengan pengaturan indent}
\cm{gp gP}{seperti {\tt p}, {\tt P} tinggal kursor setelah teks baru}

\sect{Penyisipan tingkat lanjut}
\cm{g?$m$}{melakukan rot13 encoding sebanyak $m$}
\cm{$n$\ctrl A $n$\ctrl X}{$+n$, $-n$ ke nomor dibawah kursor}
\cm{gq$m$}{format baris $m$ untuk perbaiki lebar}
\cm{:$r$ce $w$\enter}{rata tengah baris dengan jarak $r$ ke lebar $w$}
\cm{:$r$le $i$\enter}{rata kiri baris dengan jarak $r$ dengan indent $i$}
\cm{:$r$ri $w$\enter}{rata kanan baris dengan jarak $r$ ke lebar $w$}
\cm{!$m$$c$\enter}{saring baris of movement $m$ sampai dengan $c$}
\cm{$n$!!$c$\enter}{saring $n$ baris sampai dengan $c$}
\cm{:$r$!$c$\enter}{saring jarak $r$ baris sampai dengan $c$}

\sect{Mode visual }
\cm{v V \ctrl V}{mulai/berhenti menyoroti karakter, baris, blok}
\cm{o}{tukar posisi kursor memulainya dengan penyorotan}
\cm{gv}{mulai penyorotan pada area visual sebelumnya}
\cm{aw as ap}{pilih sebuah kata, kalimat, paragraf}
\cm{ab aB}{pilih sebuah blok ( ), sebuah blok {\tt\lapos} {\tt\rapos}}

\vskip 0.7cm
\sect{Membatalkan \& perintah-perintah pengulangan}
\cm{uU}{batalkan perintah terakhir, kembalikan baris terakhir yang telah diubah}
\cm{.\thinspace\thinspace\ctrl R}{ulangi perubahan terakhir, lakukan lagi undo terakhir}
\cm{$n$.\ }{ulangi perubahan terakhir $n$}
\cm{q$c$ q$C$}{catat, tambah typed karakter diregister $c$}
\cm{q}{stop pencatatan} \cm{@$c$}{eksekusi isi dari register $c$}
\cm{@@}{ulangi perintah {\tt @} sebelumnya}
\cm{:@$c$\enter}{eksekusi register $c$ sebagai sebuah {\it Ex} perintah} \cm{:$r$g/$p$/$c$\enter}{eksekusi {\it Ex} perintah $c$
pada jarak $r$} \cn{dimana pattern $p$ cocok}

\vskip -0.2cm
\sect{Pergerakan kompleks}
\cm{- +}{baris atas/bawah karakter awal non-blank}
\cm{B W}{spasi-kata terpisah kiri, kanan}
\cm{gE E}{akhir spasi-kata terpisah kiri, kanan}
\cm{$n$\_}{kebawah $n-1$ baris pada karakter awal non-blank}
\cm{g0}{permulaan dari {\it screen} baris}
\cm{g\^\ g\$}{awal, akhir karakter dari {\it screen} baris}
\cm{gk gj}{{\it screen} baris ke atas, bawah}
\cm{f$c$ F$c$}{okurasi karakter $c$ selanjutnya, sebelumnya}
\cm{t$c$ T$c$}{okurasi karakter $c$ sebelum next, previous $c$}
\cm{; ,}{ulangi {\tt fFtT} terakhir, dengan arah berlawanan}
\cm{[[ ]]}{awal dari section kebelakang, kedepan}
\cm{[] ][}{akhir dari section kebelakang, kedepan}
\cm{[( ])}{unclosed (, ) kebelakang, kedepan}
\cm{[\lapos\ [\rapos}{unclosed {\tt\lapos}, {\tt\rapos} kebelakang, kedepan}
\cm{[m ]m}{awal, akhir backward, forward metode java}
\cm{[\# ]\#}{unclosed {\tt\#if}, {\tt\#else}, {\tt\#endif} backward, forward}
\cm{[* ]*}{awal, akhir dari {\tt/* */} kebelakang, kedepan}

\sect{Pencarian \& penggantian}
\cm{/$s$\enter\ ?$s$\enter}{cari depan, belakang untuk $s$}
\cm{/$s$/$o$\enter\ ?$s$?$o$\enter}{cari depan, belakang $s$ ofset $o$}
\cm{n\or /\enter}{ulangi pencarian kedepan terakhir}
\cm{N\or ?\enter}{ulangi pencarian kebelakang terakhir}
\cm{\# *}{cari kebelakang, kedepan kata dibawah kursor}
\cm{g\# g*}{sama, tapi cari sebagian yang cocok}
\cm{gd gD}{defenisi lokal, global simbol bawah kursor}
\cm{:$r$s/$f$/$t$/$x$\enter}{ganti $f$ dengan $t$ dengan jarak $r$}
\cn{$x:$ {\tt g}---semua okurasi, {\tt c}---konfirmasi perubahan}
\cm{:$r$s $x$\enter}{ulangi penggantian dengah $r$ \& $x$ yang baru}

%\vskip1cm
\sect{Spesial karakter pada pencarian pola/pattern}
\cm{.\thinspace\thinspace\thinspace\ctrl\ \$}{karakter single apa saja, awal, akhir baris}
\cm{\bs$<$ \bs$>$}{awal, akhir kata}
\cm{[$c_1$-$c_2$]}{karakter tunggal dalam jarak $c_1..c_2$}
\cm{[\ctrl$c_1$-$c_2$]}{karakter tunggal tidak dengan jarak}
\cm{\bs i \bs I}{sebuah identifier, meniadakan digits}
\cm{\bs k \bs K}{sebuah keyword, meniadakan digits}
\cm{\bs f \bs F}{sebuah nama file , meniadakan digits}
\cm{\bs p \bs P}{sebuah karakter printable, meniadakan digits}
\cm{\bs s \bs S}{sebuah spasi putih, spasi non-putih}
\cm{\bs e \bs t \bs r \bs b}{\key{esc}, \key{tab}, \key{\enter}, \key{$\gets$}}
\cm{\bs = * \bs +}{cocokan $0..1$, $0..\infty$, $1..\infty$ sebelum atom}
\cm{\bs$|$}{memisahkan dua cabang ($\equiv$ {\it or})}
\cm{\bs( \bs)}{kelompok pola dalam satu atom}

\sect{Ofset dalam perintah pencarian}
\cm{$n$\or +$n$}{$n$ baris kebawah di kolom 1}
\cm{-$n$}{$n$ baris keatas di kolom 1}
\cm{e+$n$ e-$n$}{$n$ karakter kanan, kiri ke akhir pencocokan}
\cm{s+$n$ s-$n$}{$n$ karakter kanan, kiri ke awal pencocokan}
\cm{;$sc$}{eksekusi perintah pencarian $sc$ berikutnya}

\sect{Mapping key \& singkatan}
\cm{:map $c$ $e$\enter}{map $c\mapsto e$ mode normal \& visual}
\cm{:map!\ $c$ $e$\enter}{map $c\mapsto e$ mode sisip \& cmd-line}
\cm{:unmap $c$\enter\ :unmap!\ $c$\enter}{hilangkan mapping $c$}
\cm{:mk $f$\enter}{tulis mappings saat ini, settings... ke file $f$}
\cm{:ab $c$ $e$\enter}{tambah singkatan untuk $c\mapsto e$}
\cm{:ab $c$\enter}{lihat singkatan diawali dengan $c$}
\cm{:una $c$\enter}{hilangkan singkatan $c$}

\sect{Tags}
\cm{:ta $t$\enter}{lompat tag $t$}
\cm{:$n$ta\enter}{lompat $n^{th}$ tag yang baru dalam list}
\cm{\ctrl ] \ctrl T}{lompat tag dibawah kursor, kembali dari tag}
\cm{:ts $t$\enter}{list tag yang cocok dan pilih satu untuk lompat}
\cm{:tj $t$\enter}{lompat tag atau pilih satu jika banyak yang cocok}
\cm{:tags\enter}{cetak list tag}
\cm{:$n$po\enter\ :$n$\ctrl T\enter}{lompat kembali dari, ke $n^{th}$ tag yang lama}
% \cm{:$n$po\enter}{lompat kembali dari $n^{th}$ tag yang lama dalam list tag}
\cm{:tl\enter}{lompat ke tag terakhir yang cocok} \cm{\ctrl
W\rapos\ :pt $t$\enter}{melihat tag dibawah kursor, tag $t$}
\cm{\ctrl W]}{pisah jendela dan lihatkan tag dibawah kursor}
\cm{\ctrl Wz\or :pc\enter}{tutup jendela preview tag}

\sect{Tanda dan gerakan}
\cm{m$c$}{beri tanda pada posisi sekarang dengan $c\in[a..Z]$}
\cm{`$c$ `$C$}{lanjut tanda $c$ posisi sekarang, $C$ file apa saja}
\cm{`$0..9$}{lanjut posisi exist terakhir}
\cm{`\/`  `\/"}{lanjut posisi sebelum lompat, pd edit terakhir}
\cm{`[ `]}{lanjut awal, akhir teks yg dioperasikan sebelumnya}
\cm{:marks\enter}{cetak list marks aktif}
\cm{:jumps\enter}{cetak jump list}
\cm{$n$\ctrl O}{lanjut ke $n^{th}$ posisi lama di jump list}
\cm{$n$\ctrl I}{lanjut ke $n^{th}$ posisi baru di jump list}

\sect{Menggulung \& multi-jendela}
\cm{\ctrl E \ctrl Y}{gulung baris atas, bawah}
\cm{\ctrl D \ctrl U}{gulung setengah halaman atas, bawah}
\cm{\ctrl F \ctrl B}{gulung halaman atas, bawah}
\cm{zt\or z\enter}{set baris sekarang di atas jendela}
\cm{zz\or z.\ }{set baris sekarang di tengah jendela}
\cm{zb\or z-}{set baris sekarang di bawah jendela}
\cm{zh zl}{gulung satu karakter ke kanan, kiri}
\cm{zH zL}{gulung setengah screen ke kanan, kiri}
\cm{\ctrl Ws\or :split\enter}{pisah jendela menjadi dua}
\cm{\ctrl Wn\or :new\enter}{buat jendela kosong baru}
\cm{\ctrl Wo\or :on\enter}{buat jendela sekarang menjadi satu screen}
\cm{\ctrl Wj \ctrl Wk}{pindahkan ke jendela bawah, atas}
\cm{\ctrl Ww \ctrl W\ctrl W}{pindahkan ke jendela bawah, atas (wrap)}

\sect{Ex-Perintah (\enter)}
\cm{:e $f$}{edit file $f$, kecuali perubahan telah terjadi}
\cm{:e!\ $f$}{edit file $f$ selalu (secara default reload current)}
\cm{:wn :wN}{tulis file dan edit berikutnya, sebelumnya}
\cm{:n :N}{edit file dalam list berikutnya, sebelumnya}
\cm{:$r$w}{tulis jarak $r$ ke file sekarang}
\cm{:$r$w $f$}{tulis jarak $r$ ke file $f$}
\cm{:$r$w$>$\kern-3pt$>$$f$}{menambahkan jarak $r$ ke file $f$}
\cm{:q :q!}{keluar dan konfirmasi, keluar dan abaikan perubahan}
\cm{:wq\or :x\or ZZ}{tulis ke file sekarang dan keluar}
\cm{\key{up} \key{down}}{panggil kembali mulai dari yang sekarang}
\cm{:r $f$}{sisip isi dari file $f$ bawah kursor} \cm{:r!\
$c$}{sisip keluaran dari perintah $c$ bawah kursor} \cm{:all}{buka sebuah jendela untuk masing-masing file di list argument}
\cm{:args}{lihatkan list argument}

\sect{Ex-jarak}
\cm{, ;\ }{pisah dua nomor baris, set menjadi baris pertama}
\cm{$n$}{sebuah nomor baris absolut $n$}
\cm{.\thinspace\thinspace\thinspace\$}{baris sekarang, akhir baris dalam file}
\cm{\% *}{semua file, area visual}
\cm{'$t$}{posisi untuktanda $t$}
\cm{/$p$/ ?$p$?}{baris berikut, sebelumnya dimana $p$ cocok}
\cm{+$n$ -$n$}{$+n$, $-n$ ke nomor baris sebelumnya}

\sect{Lain-lain} \cm{:sh\enter\ :!$c$\enter}{mulai shell, eksekusi perintah $c$ shell}
\cm{K}{melihat kata kunci bawah kursor dengan {\tt man}}
\cm{:make\enter}{mulai {\tt make}, kesalahan membaca;loncat ke awal}
\cm{:cn\enter\ :cp\enter}{lihatkan kesalahan berikut, sebelumnya}
\cm{:cl\enter\ :cf\enter}{list semua kesalahan, kesalahan membaca dari file}
\cm{\ctrl L \ctrl G}{gambar ulang, lihatkan nama file dan posisi}
\cm{g\ctrl G}{lihatkan kursor kolom, baris, posisi karakter}
\cm{ga}{lihatkan A{\smallrm SCII} nilai dari karakter di bawah kursor}
\cm{gf}{buka file dimana nama file bawah kursor}
\cm{:redir$>$$f$\enter}{mengarah ulang keluaran ke file $f$}
\cm{\ctrl @ \ctrl K \ctrl \_\ \bs}{keys yg tidak digunakan, tersedia utk mapping}

% Footer
\def\translator{Edwin Maolana}
\vfill \hrule\smallskip {\smallrm Kartu ini boleh di distribusikan
secara bebas dibawah syarat-syarat dari GNU general public licence
--- Hak cipta \copyright\ {\oldstyle 2002} oleh Laurent Gr\'egoire
$\langle${\smalltt laurent.gregoire@icam.fr}$\rangle$ --- v1.5 ---
\quad Pemilik tidak bertanggung jawab atas segala kesalahan pada kartu
ini. Versi terakhir dapat diperoleh di \par
{\smalltt http://tnerual.eriogerg.free.fr/}}

% Ending
\supereject
\if L\lr \else\null\vfill\eject\fi
\if L\lr \else\null\vfill\eject\fi
\bye

% EOF
