Vim adalah editor teks modal yang telah terpasang di sebagian besar distribusi Linux dan banyak digunakan untuk administrasi sistem serta skrip shell. Panduan ini mencakup mode kerja Vim, perintah inti, dan contoh praktis agar Anda dapat mengedit file dengan cepat.
Instalasi
Vim telah pra-instal pada sebagian besar distribusi Linux. Untuk memeriksa versi Anda, jalankan:
vim --versionContoh dalam panduan ini menggunakan Vim 8.0. Beberapa perintah mungkin berbeda pada versi lain.
Jika versi yang terinstal tidak sesuai kebutuhan Anda, perbarui Vim menggunakan manajer paket untuk distribusi Anda:
| Distribusi | Perintah |
|---|---|
| Alibaba Cloud Linux 2 dan 3 | sudo yum update vim |
| CentOS 7 dan CentOS 8 | sudo yum update vim |
| Fedora | sudo yum update vim |
| Ubuntu dan Debian | sudo apt upgrade vim |
| openSUSE | sudo zypper update vim |
Mengapa Vim menggunakan mode
Sebagian besar editor teks menjaga Anda dalam satu keadaan: apa pun yang Anda ketik langsung masuk ke dokumen. Vim mengambil pendekatan berbeda dengan memisahkan *navigasi dan pengeditan teks* dari *penyisipan teks*, karena sebagian besar waktu pengeditan dihabiskan untuk berpindah-pindah dan mengubah konten—bukan mengetik konten baru dari awal.
Karena alasan inilah Vim memiliki beberapa mode. Memahami desain ini membuat setiap perintah lebih mudah diingat.
Mode
Saat Anda membuka file dengan vim <filename>, Vim dimulai dalam Normal mode. Setiap mode memiliki tujuan yang berbeda:
| Mode | Tujuan | Cara masuk |
|---|---|---|
| Normal mode | Menyalin, menempel, dan menghapus teks; menavigasi file | Buka file dengan vim <filename>, atau tekan Esc dari mode lain mana pun |
| Insert mode | Mengetik konten baru | Tekan i, I, a, A, o, atau O dari Normal mode. Status bar menampilkan -- INSERT --. |
| Replace mode | Menimpa karakter | Tekan R dari Normal mode. Status bar menampilkan -- REPLACE --. |
| Visual mode | Memilih blok teks | Tekan v dari Normal mode. Status bar menampilkan -- VISUAL --. |
| Command mode | Menjalankan perintah: pencarian, penggantian, simpan, keluar | Tekan : dari Normal mode |
Kembali ke Normal mode dari mode lain mana pun: tekan Esc.
Referensi perintah
Perintah Vim mengikuti pola komposisi: verba + objek + jumlah. Misalnya, d berarti "hapus", w berarti "kata", dan 2dw berarti "hapus 2 kata". Setelah Anda mengenali pola ini, Anda dapat menyusun perintah tanpa harus menghafal masing-masing secara individual.
Buka file
vim <filename>Jika file tidak ada, Vim akan membuatnya. Membuka file akan menempatkan Anda dalam Normal mode.
Untuk membuka beberapa file:
vim <file1> <file2>File 1 dibuka terlebih dahulu. Navigasi antar file:
:w— simpan file saat ini:bn— pindah ke file berikutnya:bp— pindah ke file sebelumnya:ls— daftar semua file yang terbuka
Untuk membuka file tambahan saat berada dalam Command mode, simpan file saat ini terlebih dahulu (:w), lalu jalankan:
:open <filename>Navigasi kursor
Dalam Normal mode, gunakan tombol panah atau tombol home-row:
| Arah | Kunci |
|---|---|
| Atas | ↑ atau k |
| Bawah | ↓ atau j |
| Kiri | ← atau h |
| Kanan | → atau l |
Tombol h, j, k, dan l mungkin terlihat tidak intuitif pada awalnya. Namun, tombol-tombol ini berada di home row keyboard sehingga tangan Anda hampir tidak perlu bergerak dari posisi istirahat—lebih cepat daripada menjangkau tombol panah.
Dalam Insert mode, hanya tombol panah yang dapat menggerakkan kursor.
Sisipkan konten
Tekan salah satu tombol berikut dalam Normal mode untuk masuk ke Insert mode dan memposisikan kursor:
| Kunci | Disisipkan di |
|---|---|
i | Kiri karakter saat ini |
I | Awal baris saat ini |
a | Kanan karakter saat ini |
A | Akhir baris saat ini |
o | Baris baru di bawah baris saat ini |
O | Baris baru di atas baris saat ini |
Salin dan tempel
Semua perintah salin dan tempel bekerja dalam Normal mode.
| Perintah | Aksi |
|---|---|
yy | Salin baris saat ini |
nyy | Salin n baris (misalnya, 2yy menyalin baris saat ini dan baris berikutnya) |
p | Tempel di bawah baris saat ini |
P | Tempel di atas baris saat ini |
Hapus konten
Dalam mode Normal:
| Perintah | Aksi |
|---|---|
x | Hapus karakter di bawah kursor |
nx | Hapus karakter di bawah kursor dan n-1 karakter berikutnya |
dd | Hapus baris saat ini |
ndd | Hapus baris saat ini dan n-1 baris di bawahnya |
dk | Hapus baris saat ini dan baris di atasnya |
dj | Hapus baris saat ini dan baris di bawahnya |
dG | Hapus dari baris saat ini hingga akhir file |
Setelah menghapus dengan dd atau ndd, tekan p untuk menempelkan konten yang dihapus.
Dalam Insert mode: pindahkan kursor ke kanan konten yang ingin Anda hapus, lalu tekan Delete.
Pencarian
Jalankan perintah berikut dalam Normal mode:
/textTekan Enter. Vim menyorot semua kecocokan (kecocokan eksak secara default).
n— pindah ke kecocokan berikutnyaN— pindah ke kecocokan sebelumnya:set ignorecase— beralih ke pencarian tanpa membedakan huruf besar/kecil:set noignorecase— kembalikan ke kecocokan eksak (peka huruf besar/kecil)
Ganti konten
Dalam Normal mode:
| Command | Action |
|---|---|
r | Ganti karakter di bawah kursor |
R | Masuk ke mode Replace; timpa karakter hingga Anda menekan Esc |
cc | Hapus baris saat ini dan masuk ke mode Insert |
:%s/<old>/<new>/g</old> | Ganti semua kemunculan <old></old> dengan <new>. Tanpa /g, hanya kecocokan pertama di setiap baris yang diganti. |
Dalam Insert mode: hapus konten yang ingin Anda ganti dan ketik penggantinya.
Undo dan redo
Dalam Normal mode:
| Perintah | Aksi |
|---|---|
u | Batalkan perubahan terakhir |
U | Batalkan semua perubahan pada baris saat ini |
Ctrl+r | Ulangi perubahan yang dibatalkan |
Inden baris
Dalam mode Normal:
>>— inden baris saat ini ke kanan (default: 8 spasi)<<— inden baris saat ini ke kiri
Dalam Command mode:
:ce— rata tengah baris saat ini:le— rata kiri baris saat ini:ri— rata kanan baris saat ini
Komentari kode
Sebelum melakukan penggantian massal, backup file:
sudo cp /etc/text.txt /etc/text.txt.bakPastikan Anda memahami ekspresi reguler yang digunakan. Dalam regex Vim, garis miring maju (/) harus di-escape sebagai \/. Gunakan alat seperti Regex101 untuk menguji pola sebelum menerapkannya. Pembatas komentar bervariasi tergantung bahasa pemrograman.
Dalam Visual mode (komentari baris yang dipilih):
Pindahkan kursor untuk memilih baris yang ingin dikomentari.
Tekan
:. Vim secara otomatis mengisi:'<,'>.Masukkan perintah penggantian. Misalnya, untuk menambahkan
#di awal setiap baris yang dipilih:s/^/#/Lalu tekan
Enter.
Untuk memberikan komentar pada semua baris dalam berkas:
:%s/^/#/gDalam Insert mode: letakkan kursor di awal baris dan ketik pembatas komentar secara manual.
Simpan dan keluar
Semua perintah simpan dan keluar dijalankan dalam Normal mode (atau dimasukkan setelah menekan :):
| Perintah | Aksi |
|---|---|
:w | Simpan file |
:q | Keluar dari Vim |
:wq atau :x atau ZZ | Simpan dan keluar |
:q! | Keluar tanpa menyimpan |
Enkripsi file
Untuk mengenkripsi file, buka dengan flag -x:
vim -x <filename>Masukkan password saat diminta, lalu simpan file setidaknya sekali (:w). Enkripsi hanya berlaku setelah disimpan. Saat membuka file tersebut lagi, Vim akan meminta password.
Untuk membatalkan enkripsi:
Buka file dalam Vim.
Jalankan
:set key=untuk menghapus kunci enkripsi.Simpan dan keluar:
:wq.Buka kembali file—tidak diperlukan password.
Jalankan perintah shell tanpa keluar dari Vim
Dalam Command mode:
!pwd— tampilkan direktori kerja saat ini!ls— daftar file dalam direktori saat ini
Edit file dalam beberapa jendela
Buka dua file berdampingan:
vim -o <file1> <file2>Berpindah antar jendela dengan :n (berikutnya) dan :N (sebelumnya). Keluar dari setiap jendela secara terpisah dengan :q atau :wq.
Dapatkan bantuan
Dari terminal:
vim --helpDari dalam Vim (Normal mode):
| Perintah | Action |
|---|---|
:help | Buka dokumentasi bantuan Vim (read-only; tekan :q untuk menutup) |
:help i | Tampilkan bantuan untuk perintah i |
:help yy | Tampilkan bantuan untuk perintah yy |
:set nu | Tampilkan nomor baris |
Contoh
Ubah file konfigurasi
Sisipkan Location sebagai baris pertama dalam example.conf:
vim example.conf— buka file dalam Normal mode.Pindahkan kursor ke karakter pertama file.
Tekan
iuntuk masuk ke Insert mode.Ketik
Location, lalu tekanEnter.Tekan
Escuntuk kembali ke Normal mode.Masukkan
:wquntuk menyimpan dan keluar.

Sisipkan konten di baris tertentu
Sisipkan # di awal baris 10 dalam example.conf:
vim example.conf— buka file.Masukkan
:10untuk melompat ke baris 10.Tekan
iuntuk masuk ke Insert mode.Ketik
#.Tekan
Esc.Masukkan
:wquntuk menyimpan dan keluar.

Temukan baris dan sisipkan konten di bawahnya
Sisipkan LoadModule rewrite_module modules/mod_rewrite.so di baris di bawah Include conf.modules.d/*.conf dalam example.conf:
vim example.conf— buka file.Jalankan
/Include conf.modules.d/*.confuntuk melompat ke baris tersebut.Tekan
iuntuk masuk ke Insert mode.Ketik
LoadModule rewrite_module modules/mod_rewrite.so.Tekan
Esc.Masukkan
:wquntuk menyimpan dan keluar.

Hapus konten
Hapus # di awal #Listen 12.34.XX:XX:80 dan hapus baris Listen 80 dalam example.conf:
vim example.conf— buka file.Jalankan
/#Listen 12.34.XX:XX:80untuk melompat ke baris tersebut. Kursor berada di#.Tekan
xuntuk menghapus#.Pindahkan kursor ke baris
Listen 80dan tekandduntuk menghapusnya.Masukkan
:wquntuk menyimpan dan keluar.

Buat dan edit file Docker Compose

Hapus pembatas komentar dari beberapa baris
Diberikan baris seperti:
# This is a comment
# Another comment
# Yet another commentUntuk menghapus # dan spasi tambahan di sekitarnya dari awal setiap baris, jalankan:
:%s/^\s*#\s\?//Penjelasan pola:
| Pola | Mencocokkan |
|---|---|
^ | Awal baris |
\s* | Jumlah karakter spasi apa pun (indentasi) |
# | Pembatas komentar |
\s\? | Karakter spasi opsional setelah # |
// | Ganti kecocokan dengan kosong (hapus) |
Hasil:
This is a comment
Another comment
Yet another commentFAQ
Saya melihat "No Write..." saat mencoba keluar. Apa artinya?
Anda telah mengubah file tetapi belum menyimpannya. Masukkan :wq untuk menyimpan dan keluar, atau :q! untuk membuang perubahan dan keluar.
Saya tidak bisa mengetik apa pun. Ada apa?
Vim kemungkinan berada dalam Visual mode. Tekan Esc untuk kembali ke Normal mode, lalu tekan i untuk masuk ke Insert mode.
Saya tidak bisa menyimpan file.
Anda tidak memiliki izin menulis pada file atau direktorinya. File konfigurasi sistem seperti /etc/hosts memerlukan hak istimewa superuser. Buka file dengan sudo vim <filename>, atau simpan sebagai administrator tanpa membuka ulang:
:w !sudo tee %Untuk memperbaiki izin secara permanen, gunakan sudo chmod atau sudo chown.
Ada file `.swp` dan Vim memberi peringatan tentang hal itu.
File swap berarti file sedang dibuka di sesi Vim lain (atau sesi sebelumnya mengalami crash). Jalankan ll -a untuk menemukan dan menghapus file .swp, lalu buka file lagi. Jika Anda perlu memulihkan perubahan yang belum disimpan dari sesi yang crash, buka file aslinya dan jalankan :recover.