Belajar Menggunakan Helix Editor alternatif Neovim dan Vim

Teks editor yang dibangun dengan rust, mendukung LSP, multi kursor dan auto-komplit tanpa konfigurasi tambahan.
editor
development
programming
Author
Published

February 7, 2023

Modified

March 11, 2024

Helix merupakan teks editor CLI dengan dukungan modal alternatif Neovim dan VIM. Editor ini dibuat menggunakan bahasa pemrograman rust sehingga lebih cepat performanya dengan single binary.

matplotlib-sample

Fitur unggulan

Hal yang paling penulis sukai dari helix adalah minimalis konfigurasi. Tidak seperti Neovim dan VIM yang diharuskan memanajemen konfigurasinya dengan memasang plugin-plugin agar sesuai workflow yang diharapkan. Berikut daftar fitur yang dimiliki oleh helix yang dikutip di halaman resminya:

  • Seleksi banyak plihan secara bersama. Pengeditan kode multi-kursor secara bersamaan sudah built-in di helix.
  • Integrasi dengan Tree-sitter. Mengaktifkan syntax highlighting, kalkulasi indent dan navigasi kode.
  • Manipulasi kode. Mudahnya navigasi dan penyeleksian fungsi, kelas, komentar, dan sebagainya.
  • Dukungan Language server. Dengan spesifik bahasa autokomplit, menuju definisi, dokumentasi, diagnosa, dan fitur IDE tanpa konfigurasi tambahan.
  • Dibangun dengan bahasa pemrograman rust. Performa yang tinggi dan lebih hemat daya baterai.
  • Builtin fitur. Fitur pencarian fuzzy untuk perncarian berkas, simbol, projek, tema, fugitive, surround dan masih banyak lagi.

Shock therapy

Sebelumnya penulis adalah pengguna neovim dan vim tentunya. Ketika menggunakan helix mau tidak mau harus belajar lagi. Meskipun minim konfigurasi, helix memiliki keymap yang 30% berbeda dengan neovim/vim dan harus dihafal agar terbiasa. Selebihnya keymap lain hampir sama. Beruntungnya developer helix sudah memberikan tutorial yang sudah built-in seperti vimtutor di vim.

Terminal
hx --tutor

Bagian 1: Pemasangan

GNU/Linux

Pemasangan di distribusi linux tergantung dari paket manager yang digunakan, umumnya menggunakan nama paket helix. Anda bisa mengecek paket tersebut apakah tersedia di distribusi linux melalui situs Repology.

  • NixOS
Terminal
nix-env -iA nixos.helix
  • Non NixOS
Terminal
nix-env -iA nixpkgs.helix
/etc/nixos/configuration.nix
  environment.systemPackages = [
    pkgs.helix
  ];
Terminal
nix-shell -p helix
Terminal
sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt update
sudo apt install helix
Terminal
sudo xbps-install helix
Terminal
sudo dnf copr enable varlad/helix
sudo dnf install helix
Terminal
sudo pacman helix-git

MacOS

Helix tersedia di homebrew-core. Buka iterm2 atau terminal lalu jalankan perintah ini.

Terminal
brew install helix

Windows

Tersedia melalui Scoop, Chocolatry atau MSYS2.

Terminal
scoop install helix
Terminal
choco install helix
Terminal
pacman -S mingw-w64-x86_64-helix

Panduan pemasangan selengkapnya bisa merujuk ke halaman dokumentasi.

Bagian 2: Penggunaan dasar

Arah navigasi kursor

Seperti navigasi di vim, helix menggunakan h, j, k, dan l untuk memindahkan kursor. Menggunakan keymap arah panah juga bisa, tetapi menggunakan hjkl lebih cepat.

Key Description

h

Kiri

j

Bawah

k

Atas

l

Kanan

Membuka berkas

Membuka helix dengan menjalankan hx.

Terminal
hx

Membuka dengan berkas tertentu.

Terminal
hx filename.xyz

Bagian 3: Konfigurasi

Beberapa konfigurasi dasar yang mungkin perlu ditambahkan. Misalnya jenis tema dan nomer baris.

Command Description
:theme tokyonight Mengganti tema.

Konfigurasi permanen bisa membuka config.toml.

Command Description
:config-open Membuka konfigurasi helix.
:config-reload Memuat ulang konfigurasi helix.
~/.config/helix/config.toml
theme = "tokyonight"

[editor]
line-number = "relative"
cursorline = true

[editor.lsp]
display-messages = true

Yap, benar. Konfigurasi tambahan penulis hanya beberapa baris diatas. Selengkapnya dapat merujuk ke halaman konfigurasi.

Bagian 4: Penggunaan lanjutan

Menghapus karakter

Berbeda dengan vim, menghapus karakter di helix menggunakan keymap d.

Key Description

d

Menghapus 1 karakter.

Memasukkan karakter

Sama halnya dengan vim, mode insert tetap menggunakan i.

Key Description

i

Mode insert.

Esc

Mode normal (keluar dari mode insert).

Menyimpan berkas

Command Description
:w Menyimpan berkas di buffer saat ini.
:w filename.xyz Menyimpan berkas di buffer dengan nama tertentu.

Bisa dikombinasikan dengan q untuk keluar dari helix.

Command Description
:wq Menyimpan dan menutup aplikasi.
:wqa Menyimpan dan menutup semua buffer.

Mode insert

Seperti yang telah diketahui sebelumnya, keymap i untuk mode insert tepat sebelum kursor. Sedangkan ada beberapa keymap lainnya seperti:

Key Description

i

Mode insert sebelum kursor.

a

Mode insert setelah kursor.

I

Mode insert di awal baris.

A

Mode insert di akhir baris.

Membuka baris baru

Key Description

o

Mode insert setelah baris saat ini.

O

Mode insert sebelum baris saat ini.

Perintah diatas mirip di neovim atau vim.

Perpindahan dan seleksi

Perpindahan dan penyeleksian di helix dilakukan secara otomatis dan bersamaan. Sedikit berbeda dengan vim.

Key Description

w

Pindah dan menyeleksi 1 kata, termasuk spasinya.

e

Pindah dan menyeleksi 1 kata dari kursor sampai di akhir karakter kata.

b

Pindah dan menyeleksi 1 kata dari kursor sampai di awal karakter kata.

keymap W, E dan B juga memiliki fungsi yang serupa, hanya saja perpindahannya tergantung dari whitespace seperti spasi dan tab.

Perpindahan dengan hitungan

Pindah dengan hitungan juga dapat dilakukan, misalnya 2w, 4e, 5b. Penjelasannya seperti ini:

Key Description

2w

Pindah 2 kata ke depan.

4e

Pindah 4 kata ke depan yang diakhiri di akhir kata.

5b

Pindah 5 kata ke belakang.

Mengubah karakter

Pintasan yang digunakan yaitu keymap r.

Key Description

c

Mengubah karakter atau kata/kalimat yang terseleksi.

Misalnya menyeleksi kata dengan w, lalu ganti dengan keymap c, langsung masuk ke mode insert.

Mode visual/seleksi

Mode visual di helix hampir sama seperti di vim.

Key Description

v

Mode visual.
v lagi, atau Esc Mode normal (keluar dari mode visual).

Menyeleksi baris

Menyeleksi baris menggunakan keymap x, jika ingin menyeleksi baris selanjutnya tekan x lagi. Kadang kala niatnya ingin menghapus suatu karakter, tetapi menjadi seleksi di helix. (akibat alam bawah sadar terbiasa menggunakan x untuk menghapus karakter di vim.)

Key Description

x

Menyeleksi 1 baris.

5

Menyeleksi 5 baris.

;

Melepaskan seleksi baris.

Alt+;

Membalikkan/flip seleksi baris.

Pembatalan perubahan

Perintah untuk membatalkan perubahan:

Key Description

u

Undo

U

Redo.

Ulangi beberapa kali hingga perubahan sesuai dengan yang diharapkan.

Penyalinan dan penempelan

Menyalin di helix dapat dilakukan di internal helix maupun di sistem clipboard.

Key Description

y

Yank/copy, menyalin karakter yang terseleksi.

p

Paste, menempelkan hasil salinan.

P

Paste, menempelkan hasil salinan ke posisi sebelum kursor.

Dapat dilakukan juga dengan perhitungan untuk menentukan jumlah salinan/tempelan.

Key Description

2y

2x Yank/copy, menyalin karakter yang terseleksi.

4p

4x Paste, menempelkan hasil salinan.

10P

10x Paste, menempelkan hasil salinan ke posisi sebelum kursor.

Pada dasarnya keymap d (menghapus karakter) dan c (mengubah karakter) juga dapat dikatakan mode yank, yang mana hasil karakter yang dihapus/diubah disimpan di buffer sehingga dapat dilakukan perintah tempel (paste) p atau P.

Untuk menghindari penyimpanan di buffer, gunakan Alt-d atau Alt-c. Sedangkan untuk menyalin atau menempelkan dari sistem clipboard, gunakan keymap dibawah ini.

Key Description

Spasi,y

Copy/menyalin dari sistem.

Spasi,p

Paste/menempelkan dari sistem.

Pencarian karakter

Mencari karakter seperti di vim atau neovim.

Key Description

/

Mencari karakter/kata.

n

Menuju hasil pencarian selanjutnya.

N

Menuju hasil pencarian ke sebelumnya.

?

Mencari karakter/kata secara mundur.

Tidak seperti di vim, di helix jika melakukan pencarian dengan ? arah n tetap kedepan dan N ke belakang/sebelumnya.

Multiple cursor

Menambahkan kursor sangat berguna untuk mengubah karakter secara bersamaan. Misalnya untuk menghapus, mengganti, dan fungsi regex.

Key Description

C

Mencari karakter/kata.

Alt-C

Menuju hasil pencarian selanjutnya.

,

Menuju hasil pencarian ke sebelumnya.

Memilih dari hasil seleksi

Hal ini bertujuan untuk mengganti suatu karakter atau teks yang sudah diseleksi. Biasanya untuk menggantikan kata, semacam fungsi sed regex di vim.

Key Description

s

Memilih karakter yang cocok sesuai yang diseleksi.

Misalnya pola kerjanya seperti ini, seleksi dengan x beberapa kali atau % untuk semua baris. tekan s lalu masukkan karakter yang dituju, tekan Enter. Secara otomatis menjadi multi kursor. Selanjutnya dapat diubah sesuai keinginan.

Seleksi tambahan dengan regex

Penyeleksian ini dapat menggunakan tanda plus “+” saat menggunakan keymap s di area seleksi. Misalnya: spasi dan plus “+

Meluruskan dari seleksi

Key Description

&

Meluruskan hasil seleksi.

Misalnya ada baris seperti ini.

 * 98) lorem
 * 99) ipsum
 * 100) dolor
 * 101) sit
 * 102) amet

Menjadi:

 *  97) lorem
 *  99) ipsum
 * 100) dolor
 * 101) sit
 * 102) amet

Membagi seleksi ke sebuah baris

Key Description

Alt-s

Untuk membagi menjadi pilihan di setiap baris. Umumnya digunakan untuk meluruskan tabel.
    | FRUIT   | AMOUNT |
    |---------|--------|
 | Apples  | 8      |
    | Bananas | 6      |
  | Oranges | 3      |
     | Donuts  | 4      |

Menjadi:

     | FRUIT   | AMOUNT |
     |---------|--------|
     | Apples  | 8      |
     | Bananas | 6      |
     | Oranges | 3      |
     | Donuts  | 4      |

Menyeleksi sampai ke karakter tertentu

Key Description

f

Menyeleksi baris hingga tepat sampai ke karakter yang dituju.

t

Menyeleksi baris hingga sampai ke karakter yang dituju, kursor tidak sampai ke karakter.

F dan T juga memiliki fungsi serupa, hanya saja melewatidi titik whitespace spasi atau tab.

Mengganti karakter atau kata

Key Description

r

Menempelkan dengan karakter khusus.

R

Menempelkan dengan hasil salinan dari buffer atau dari system clipboard.

Pengulangan

Pengulangan dapat dilakukan untuk mengulang perintah yang sama, atau mengulang hasil pencarian f dan t sebelumnya.

Key Description

.

Mengulangi hasil mode insert sebelumnya.

Alt-.

Mengulangi perintah dari hasil f atau t sebelumnya.

Mengganti teks dari salinan yank/clipboard

Setelah ada salinan teks baik berupa yank atau dari sistem clipboard, dapat digunakan untuk mengganti teks lain jika sudah diseleksi.

Key Description

R

Mengganti teks yang terseleksi dengan hasil salinan yank/clipboard.

Menggabungkan baris

Beberapa baris perlu diseleksi dahulu dengan x, kemudian tekan J.

Key Description

J

Menggabungkan beberapa baris yang sudah diseleksi.

Indentasi baris

Indentasi pada baris saat ini atau baris yang diseleksi.

Key Description

Reuse

Citation

BibTeX citation:
@online{qurrotul2023,
  author = {Qurrotul, Hervy},
  title = {Belajar {Menggunakan} {Helix} {Editor} Alternatif {Neovim}
    Dan {Vim}},
  date = {2023-02-07},
  url = {https://hervyqa.dev/blog/belajar-menggunakan-helix-editor-alternatif-neovim-dan-vim},
  langid = {en}
}
For attribution, please cite this work as:
Qurrotul, Hervy. 2023. “Belajar Menggunakan Helix Editor Alternatif Neovim Dan Vim.” February 7, 2023. https://hervyqa.dev/blog/belajar-menggunakan-helix-editor-alternatif-neovim-dan-vim.