Belajar Konfigurasi Neovim dengan Lua

JagoTekno – Lua merupakan bahasa yang sudah disupport oleh pengembangan Neovim itu sendiri.

Selain menggunakan konfigurasi native dari Neovim (init.vim), kita juga bisa menggunakan konfigurasi dengan lua (init.lua).

Dengan konfigurasi lua ini kita bisa memaksimalkan fitur-fitur yang dimiliki oleh neovim.

Ini hanyalah tutorial dasar, kita tidak akan mengubah secara full menjadi lua. Kita akan masih menggunakan init.vim untuk menyimpan konfigurasi nvim ini.

Kelebihan menggunakan konfigurasi lua di neovim

Di sini kelebihan neovim dibandingkan vim. Berikut kelebihan menggunakan lua config di nvim/neovim.

  1. Bisa mengaktifkan LSP (language server provider) yang dibuat oleh Microsoft. Gunanya untuk memudahkan bekerja dengan berbagai jenis file tertentu untuk pengembanban project, intinya sama seperti VsCode.
  2. Configurasi nvim yang lebih elegan
  3. Kaya akan fitur oleh plugin
  4. Workflow bekerja yang lebih baik
  5. Ada plugin tertentu yang harus menggunakan lua untuk bekerja

Cara konfigurasi neovim / nvim dengan lua

Mari kita mulai saja konfigurasi nvim dengan lua.

Install versi neovim minimal 0.7

Tutorial ini ditulis menggunakan system operasi FreeBSD. Command mungkin tidak sama dengan system anda, silahkan sesuaikan saja.

Untuk dapat bekerja nvim harus diinstall minimal versi 0.7. Silahkan install terlebih dahulu dengan perintah :

doas pkg install nvim luajit

di FreeBSD anda bisa install melalui ports.

Setelah semua terinstall, silahkan edit beberapa file berikut:

Edit init.vim

Edit vim ~/.config/nvim/init.vim kemudian langsung saja install plugin yang ingin diinstall. Di sini saya hanya ingin install beberapa plugin berikut :

call plug#begin('~/.vim/plugged')

Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'nvim-lualine/lualine.nvim'
Plug 'kyazdani42/nvim-web-devicons' 
Plug 'kyazdani42/nvim-tree.lua'
Plug 'neovim/nvim-lspconfig'

call plug#end() 

Kemudian masih di file init.vim, di bawahnya tambahkan baris ini :

"require for lua config
lua require('mynamespace.telescope')
lua require('mynamespace.lualine')
lua require('mynamespace.nvim-tree')
lua require('mynamespace.nvim-web-devicons')
lua require('mynamespace.lspconfig')

Di atas adalah file baris yang digunakan untuk menyimpan konfigurasi tiap plugin lua yang telah dinstall.

File ini akan dibuat nanti pada ~/.config/nvim/lua/mynamespace/. File tersebut akan dipanggil di sini.

Jangan lupa jalankan :PlugInstall untuk menginstall plugin di atas.

Membuat folder untuk konfigurasi plugin lua

Folder ini dibuat di dalam mkdir ~/.config/nvim/

Di sini buat folder lua : mkdir lua

Masuk ke folder lua yang sudah dibuat, cd lua

Buat folder namespace anda. Saya memberinya nama mynamspace mkdir mynamespace

Masuk ke folder namespace anda kemudian buat file konfigurasi untuk plugin lua anda.

Di section pertama di atas sudah disebutkan tentang file konfigurasi lua, jadi pastikan nama file yang dibuat sama seperti yang ada pada file init.vim.

Membuat file konfigurasi tiap-tiap plugin yang diinstall

Buat file baru lalu berikan nama dengan extensi .lua di belakangnya.

lspconfig.lua

LSP digunakan untuk mendeteksi bahasa apa yang digunakan oleh sebuah file.

Karena saya akan mengedit file html, css, js, dan php saja, maka saya hanya ingin mengaktifkan LSP ini saja. (emmet, eslint, dan intelephense).

Bahasa-bahasa tersebut harus diinstal terlebih dahulu menggunakan node/npm. Dokumentasi lengkap untuk install masing-masing bahasa / LSP yang anda inginkan bisa dilihat di sini.

Buat file konfigurasi vim lspconfig.lua di dalam namespace anda.

Kemudian isi dengan konfigurasi berikut :

local nvim_lsp = require('lspconfig')
local servers = { 'emmet_ls', 'eslint', 'intelephense' }

for _, lsp in ipairs(servers) do
  nvim_lsp[lsp].setup {
    on_attach = on_attach
  }
end

lualine.lua

Buat file vim lualine.lua kemudian isi dengan file baris konfigurasi berikut :

require('lualine').setup {
  options = {
    icons_enabled = true,
    theme = 'auto',
    component_separators = { left = '', right = ''},
    section_separators = { left = '', right = ''},
    disabled_filetypes = {},
    always_divide_middle = true,
    globalstatus = false,
  },
  sections = {
    lualine_a = {'mode'},
    lualine_b = {'branch', 'diff', 'diagnostics'},
    lualine_c = {'filename'},
    lualine_x = {'encoding', 'fileformat', 'filetype'},
    lualine_y = {'progress'},
    lualine_z = {'location'}
  },
  inactive_sections = {
    lualine_a = {},
    lualine_b = {},
    lualine_c = {'filename'},
    lualine_x = {'location'},
    lualine_y = {},
    lualine_z = {}
  },
  tabline = {},
  extensions = {}
}

nvim-tree.lua

Buat file vim nvim-tree.lua

Kemudian isi dengan konfigurasi ini

nvim-web-devicons.lua

Ini digunakan untuk mengaktifkan icon folder pada NvimTree yang sudah diinstlal.

Supaya foldernya muncul, pastikan anda sudah instlal nerd icons, doas pkg install nerd-fonts, kemudian jalankan perintah fc-cache -fv

Buat file vim nvim-web-devicons.lua kemudian isi dengan baris berikut :

require'nvim-web-devicons'.setup {
 -- your personnal icons can go here (to override)
 -- you can specify color or cterm_color instead of specifying both of them
 -- DevIcon will be appended to `name`
 override = {
  zsh = {
    icon = "",
    color = "#428850",
    cterm_color = "65",
    name = "Zsh"
  }
 };
 -- globally enable default icons (default to false)
 -- will get overriden by `get_icons` option
 default = true;
}
require'nvim-web-devicons'.get_icons()

telescope.lua

Plugin ini digunakan untuk melakukan pencarian file dengan cepat menggunakan nvim.

Buat file telescope.lua kemudian isi dengan konfigurasi berikut :

require('telescope').setup{}

Untuk melakukan pencarian file/folder cukup ketik :Telescope find_files enter, kemudian ketik nama file yang ingin dicari.

Jika ingin melihat semua opsi plugin telescope, cukup ketik :Telescope tab

Akhir kata

Demikian tutorial singkat tentang cara konfigurasi nvim dengan plugin lua.

Ini bukanlah best practice menggunakan lua di neovim/nvim yang elegan, tetapi bisa menjadi referensi anda untuk yang baru memulai migrasi konfigurasi dari native vim ke lua.

Semoga membantu.

Tinggalkan komentar