Inisiasi NeoVim

BringsRain's Scratchlogs

February 7, 2021

Termakan Rayuan

Vanilla NeoVim

Entah gombal atau tidak, yang pasti saya termakan rayuan temen-temen dibeberapa grup perpesanan Telegram. Saya sudah menggunakan Vim dari tahun 2010-an. Cukup lama, kalau mempertimbangkan saat post ini dibuat. Selama 11 tahun menggunakan Vim hanya sebagai komplementer saja, penyedap buat ketak-ketik diterminal. Text editor kegemaran saya ini, belum pernah digunakan untuk kerja paksa. Saya memang pencinta perawan, eh… vanilla untuk konfigurasi.

Jarang sekali saya mengubah konfigurasi aplikasi-aplikasi yang saya gunakan, jika memang tidak ada kebutuhan khusus. Hal ini bukan tanpa alasan, kalo dijabarkan alasannya kira-kira seperti ini:

Alasan-alasan tersebutlah yang selalu membuat saya menghindari custom config, kecuali memang sudah tidak ada jalan lain. Rayuan maut itu berawal saat saya mulai intense mengetik dengan Latex karena tuntutan pekerjaan. Tidak ada masalah yang besar sebenarnya. Saya menggunakan dua plugins untuk mempermudah pengeditan berkas .tex dengan vim, Vim-latex dan VimTex, semuanya berjalan mulus, sudah ada autocompletion, snippets, dan live preview, seharusnya sudah cukup untuk memudahkan pengeditan. Entah kenapa, ada perasaan tergelitik untuk melempar pertanyaan “Plugin apa saja yang temen-temen gunakan, untuk pengeditan latex di Vim?" di grup Belajar OOT GNU/Linux.Setelah ber-OOT ria, dan memastikan bahwa temen-temen yang ditanya menggunakan TexLab sebagai plugin, bukannya menjalankan plugin tersebut, saya malah tergoda untuk “kembali” menggunakan NeoVim. “Kembali…???", bukannya post ini bertema inisiasi?

Sudah tidak ingat pastinya dari versi berapa, tapi NeoVim selalu saya pasang disetiap instalasi sekedar untuk jadi pajangan dan untuk dilirik-lirik. Pernah kecewa dengan NeoVim kala pertama menggunakan dulu. Saat membuka berkas besar, NeoVim terasa freeze. Padahal, berkas yang sama lancar saja dibuka dengan Vim. Tak pernah cari tahu penyebabnya. Lagi-lagi…, Malas. Hanya saja kali ini, para “sales” itu sudah berhasil. Entah gendam atau pelet apa yang mereka gunakan? Ahh… sudahlah! Saya pasrah, mumpung rasa malas yang biasanya hadir belum datang.

Ekspektasi

Tidak muluk, karena berawal dari pertanyaan plugin Vim untuk Latex, inisiasi ini tidak terlalu banyak konfigurasi yang saya inginkan; penggunaaan normal; sedikit informatif; bisa dioperasikan untuk pengeditan Latex. Cukup. Jika disesuaikan dengan NeoVim mungkin seperti ini:

Segitu aja dulu ekspektasinya, selanjutnya tinggal dicocokin sama kenyataanya. Karna seringkali “Ekspektasi tidak sesuai dengan kenyataan”. Hiahiahiahaiahihaha…

Kenyataan

Manajemen Plugins

Untuk manajemen plugins saya pilih VimPlug. Alasannya? ndak ada alasan apa-apa, kebetulan aja udah pake ini sebelumnya. Proses instalasinya ndak ribet, dokumentasinya jelas ada di halaman github resminya. Buat neovim ya tinggal jalanin perintah:

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

Selanjutnya, buat direktori ~/.config/plugged untuk destinasi plugins, dan tambahkan baris berikut pada berkas ~/.config/nvim/init.vim:

call plug#begin('~/.config/nvim/plugged')
call plug#end()

Nomor Baris

Untuk konfigurasi nomor baris, biasanya saya sekaligus menggunakan nomor relatif, alasannya untuk memudahkan navigasi. Setelah dipikir-dipikir, di-setup NeoVim ini saya akan menggunakan nomor baris saja, dan membiasakan diri untuk navigasi antar baris, dengan menggunakan command :[nomor_baris]. Jadi cukup dengan menambahkan baris berikut pada berkas ~/.config/nvim/init.vim:

set number

Nomor Baris

Sampai sejauh ini ekspektasi masih sesuai dengan kenyataan.

Cursor Highlight

Cursor hightlight buat saya untuk memudahkan melihat posisi kursor saat mengedit, biasanya saat mengedit kemudian nyruput kopi, mata teralihkan, hightlight ini memudahkan untuk kembali fokus pada posisi kursor terakhir. Untuk menyalakan fitur ini tambah lagi satu baris di ~/.config/nvim/init.vim

set cursorline

Cursor Line

Sekarang ada garis yang menandai baris tempat kursor berada. Annoying? sedikit. Biasanya kalo sudah ditambahkan tema yang ciamik dari garis berubah jadi highlight.

Filetype dan Syntax Highlight

Untuk perbandingan, saya coba buka file .tex sebelum fitur Filetype dan Syntax dinyalakan.

Filetype dan Syntax Highlight sudah menyala

Ternyata, eh ternyata di NeoVim sudah otomatis di-load fitur tersebut. Ekspektasi tidak sesuai dengan kenyataan, kenyataannya lebih bagus. Tidak perlu repot konfigurasi lagi.

Tab dan Indentasi 2 Karakter

Awalnya, dulu masih sering belajar html, css, dan javascript menggunakan Vim sebagai text editor. Muncullah kebiasaan indentasi 2 karakter, karena level indentansi diberkas HTML bisa sangat dalam, efeknya untuk layar yang resolusinya kecil, tampilannya bikin sepet mata saya kalo indentasinya lebih dari 2. Lalu bagaimana dengan filetype yang lain? “Belakangan aja ditambahin, kan NeoVimnya mo dipake buat edit Latex saja saat ini”.

Tambahkan baris berikut diberkas ~/.config/nvim/init.vim:

set tabstop=2 softtabstop=2 shiftwidth=2 expandtab

Tambahan expandtab untuk menjadikan menggunakan karakter [spasi] sebagai tab. Tujuannya apa?, “ndak inget lagi, yang pasti ada hubungannya dengan konsistensi”. Sama seperti alasan indentasi 2 karakter, sudah kebiasaan saja.

Skema Warna “Strawberry”

“Ribet ya header-nya pake ditulis nama skema warnanya?”
“Ya iyalah, favorit gitu loh!”
“Kenapa harus ‘Strawberry’?”
“Karna skemanya pink!”
“Kan saya, tampang anak motor, hobi drakor!”

Skema warna “Strawberry” ini, satu-satunya tema merah jambu yang paling cocok buat saya. Susah cari skema terang dengan warna yang sama untuk Vim, Skema warna ini bisa dicomot dari repositori github nightsense/strawberry. Repositori tersebut sudah diarsipkan. Nah, buat jaga-jaga siapa tahu suatu waktu di-take-down saya _fork_aja lah. Buat nambahin skema warna yang ada di github ini jadi mudah, karena sudah ada VimPlug. Tinggal load dan install dengan VimPlug, dan set skema warnanya di ~/.config/nvim/init.vim

call plug#begin('~/.config/nvim/plugged')
...
Plug 'bringsrain/strawberry'
...
call plug#end()
...
colorscheme strawberry-light

Jalankan perintah PlugInstall dari dalam NeoVim.

Skema warna strawberry

Tuhkan, sudah ada merah jambunya di-status line, garis buat highlight cursor juga sudah berubah menjadi blok halus seperti background transparan. Sayangnya kalau sedang dalam mode VISUAL warna latarnya masih monokrom, jadi terlihat kurang apik.

Tidak ada warna latar dalam mode visual

Saya tambahin dikit konfigurasinya biar ciamik saat seleksi mode VISUAL di berkas ~/.config/nvim/init.vim:

augroup myhighlight
  autocmd!
  autocmd ColorScheme * highlight Visual term=reverse cterm=bold,inverse ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE
augroup END

Mode visual dengan warna latar

Cuakep wessss!!

Status Line dengan Lightline

Jika saat menggunakan Vim saya mau repot, bikin status line sendiri, kali ini main cepat saja. Install Lightline dengan `VimPlug:

call plug#begin('~/config/nvim/plugged')
...
Plug 'itchyny/lightline.vim'
...

Lightline warna default

Nah, tanpa embel-embel status line udah otomatis cakep, tapi warna gelap terlalu kontras buat tema terang macem yang saya gunakan. Wah, alamat panjang nih urusannya mo bikin skema warna sendiri lagi?, “Ndak, kali ini belum mau oprek skema Lightline dulu, ganti tema yang terang aja dulu”. Tambah lagi deh konfigurasi ~/.config/nvim/init.vim dikit.

let g:lightline = {
      \ 'colorscheme': 'wombat',
      \ }

Tema Lightline One

Walau ndak merah jambu, yang penting terang dulu, kapan-kapan dioprek. Hiahiahiahiahia…

VimTex

Jika berkaca pada definisi direpositorinya, Vimtex adalah sebuah plugin filetype dan syntax Latex yang modern untuk Vim dan NeoVim. Instalasinya?, VimPlug Come to the rescue lagi. Tambah satu baris plugin lagi:

Plug 'lervag/vimtex'

Untuk menggunakan Vimtex, dibawah ini adalah konfigurasi yang saya terapkan untuk memenuhi kebutuhan minimal.

" Set Latex sebagai 'flavour" tex-nya
let g:tex_flavor = 'latex'
"let g:vimtex_enabled = 1
"let g:vimtex_cache_root = '$XDG_CACHE_HOME/vimtex'

" Fungsi _callback_  NeoVim
let g:vimtex_compiler_progname = 'nvr'

" Zathura sebagai _viewer_ untuk Vimtex
let g:vimtex_view_method = 'zathura'

Blok konfigurasi dibawah sudah diperbarui pada pos “Nvim Ganti Engine Latex ke XeLaTex”

" Gunakan Latexmk sebagai alat kompilasi
let g:vimtex_compiler_latexmk = {
  \ 'executable' : 'latexmk',
  \}

" Konfigurasi mesin kompilasi
let g:vimtex_compiler_latexmk_engines = {
  \ '_' : '-pdf',
  \ 'pdflatex' : '-pdf',
  \ 'lualatex' : '-lualatex',
  \ 'xelatex' : '-xelatex',
  \}

Vimtex Syntax Highlighting

Screenshot di atas adalah tampilan saat dilakukan seleksi dengan mode VISUAL, berbeda dengan screenshot sebelumnya. Yang baru, warnanya lebih cakep, dan ini adalah efek syntax dan filetype dari Vimtex.

TexLab

Khusus yang satu ini, saya putuskan untuk menundanya terlebih dahulu. Sebelum memasang plugin ini, saya ingin mengenal Vimtex lebih jauh dulu. Setelah membaca dokumentasi Vimtex, saya sadar, masih banyak yang belum saya manfaatkan fitur-fitur dari Vimtex selama ini. Jadi saya ingin menghabiskan waktu lebih banyak dengan Vimtex dulu.