Belajar Konfigurasi Neovim dengan Lua
JagoTekno.com - 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 neovim 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 neovim lua
Di sini kelebihan neovim dibandingkan vim. Berikut kelebihan menggunakan lua config di nvim/neovim.
- Bisa mengaktifkan LSP (language server provider) yang dibuat oleh Microsoft. Gunanya untuk memudahkan bekerja dengan berbagai jenis file tertentu untuk pengembangkan project, intinya sama seperti VsCode.
- Configurasi nvim yang lebih elegan
- Kaya akan fitur oleh plugin
- Experience workflow bekerja yang lebih baik
- 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, cd mynamespace
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 = {}
}
neo-tree.lua
Buat file vim neo-tree.lua
Kemudian isi dengan konfigurasi ini
Tambahkan baris ini pada konfigurasi nvim.init untuk memberikan shortcut untuk toggle nvim tree menggunakan F3
nnoremap <F3> :Neotree toggle filesystem reveal right<CR>
nvim-web-devicons.lua
Ini digunakan untuk mengaktifkan icon folder pada NvimTree yang sudah diinstlal.
Supaya icon simbol foldernya muncul, pastikan anda sudah install 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.
Rafi
- 15 year+ of Linux user.
- 5 years+ blogger and web developer.
Jika artikel yang dibuatnya ternyata bermanfaat, support dengan cara