Cara Install Plugin di Neovim dengan Packer β Neovim merupakan fork project dari Vim. Text editor ini cukup banyak digemari oleh banyak programmer. Neovim sendiri merupakan text editor berbasis terminal, sehingga sangat jarang sekali menggunakan mouse, cenderung lebih banyak menggunakan keyboard.
Packer, merupakan Plugin Manager yang cukup banyak digunakan, termasuk saya yang juga menggunakan packer sebagai plugin managernya.
Sebelum menggunakan packer.nvim saya menggunakan vimplug, vimplug ini selain digunakan di Neovim juga dapat digunakan di Vim, sedangkan packer.nvim sepertinya hanya dapat digunakan di Neovim saja.
Dalam hal konfigurasi Vim menggunakan vimscript sebagai bahasa yang digunakan untuk melakukan konfigurasi. Sedangkan Neovim, kita bisa menggunakan vimscript maupun bahasa lua.
Sebenarnya di Vim, kita juga dapat melakukan konfigurasi menggunakan bahasa lua, hanya saja menurut saya lebih ribet penggunaannya. Sedangkan di Neovim pengaturannya bisa lebih mudah dilakukan.
Di Vim, kita biasa meletakkan konfigurasinya di .vimrc
yang berada di directory home. Sedangkan di Neovim, kita biasa meletakkan konfigurasinya di init.vim
atau init.lua
. Selain itu, di Neovim kita bisa mengatur konfigurasi setiap plugin dengan konfigurasi tersendiri, sehingga masing-masing plugin yang kita install tidak menjadi satu file konfigurasi seperti di Vim.
Struktur Direktori Neovim
Berikut adalah struktur direktori yang saya gunakan di Neovim saya. Struktur direktori ini saya ambil dari Takuya Matsuyama.
π ~/.config/nvim βββ π after β βββ π plugin βββ π lua β βββ π base.lua βββ π plugin βββ π» init.lua
Keterangan:
- after -> plugin : folder untuk konfigurasi berbagai macam plugin yang kita install.
- lua : folder untuk konfigurasi
base.lua
,highlights.lua
,maps.lua
, danplugins.lua
. - plugin : folder untuk konfigurasi
lspconfig.lua
danlspsaga.lua
. init.lua
berguna untuk meload pengaturan yang ada di folder after -> plugin, lua dan plugin.
Basic Konfigurasi Neovim
Sebelum menginstall plugin dengan packer.nvim, ada baiknya kita melakukan konfigurasi awal terlebih dahulu.
Basic konfigurasi yang saya gunakan ini juga saya ambil dari Takuya Matsuyama. Berikut adalah konfigurasi awal yang saya pakai di Neovim saya.
Di folder lua, buat 4 file konfigurasi, diantaranya base.lua
, highlights.lua
, maps.lua
dan plugins.lua
.
base.lua
vim.cmd('autocmd!') vim.scriptencoding = 'utf-8' vim.opt.encoding = 'utf-8' vim.opt.fileencoding = 'utf-8' vim.opt.termguicolors = true vim.wo.number = true vim.opt.title = true vim.opt.autoindent = true vim.opt.hlsearch = true vim.opt.backup = false vim.opt.showcmd = true vim.opt.cmdheight = 1 vim.opt.laststatus = 2 vim.opt.expandtab = true vim.opt.scrolloff = 10 vim.opt.shell = 'fish' vim.opt.backupskip = 'tmp/*,/private/tmp/*' vim.opt.inccommand = 'split' vim.opt.ignorecase = true vim.opt.smarttab = true vim.opt.breakindent = true vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 vim.opt.ai = true -- Auto indent vim.opt.si = true -- Smart indent vim.opt.wrap = false -- No wrap lines vim.opt.backspace = 'start,eol,indent' vim.opt.path:append { '**' } -- Finding files - seacrh down in subfolders vim.opt.wildignore:append { '*/node_modules/*' } -- Turn of paste mode when leaving insert vim.api.nvim_create_autocmd("InsertLeave", { pattern = '*', command = "set nopaste" }) -- Add asteris in block comments vim.opt.formatoptions:append { 'r' }
highlights.lua
vim.opt.cursorline = true vim.opt.termguicolors = true vim.opt.winblend = 0 vim.opt.wildoptions = 'pum' vim.opt.pumblend = 5 vim.opt.background = 'dark'
maps.lua
local keymap = vim.keymap -- Do not yank with x keymap.set('n', 'x', '"_x') -- Increment/Decrement keymap.set('n', '+', '<C-a>') keymap.set('n', '-', '<C-x>') -- Delete a word backwards keymap.set('n','dw', 'vb"_d') -- Select all keymap.set('n', '<C-a>', 'gg<S-v>G') -- New tab keymap.set('n', 'te', ':tabedit<Return>', { silent = true }) -- Split window keymap.set('n', 'ss', ':split<Return><C-w>w', { silent = true }) keymap.set('n', 'sv', ':vsplit<Return><C-w>w', { silent = true }) -- Move window keymap.set('n', '<Space>', '<C-w>w') keymap.set('', 's<left>', '<C-w>h') keymap.set('', 's<up>', '<C-w>k') keymap.set('', 's<down>', '<C-w>j') keymap.set('', 's<right>', '<C-w>l') keymap.set('', 'sh', '<C-w>h') keymap.set('', 'sk', '<C-w>k') keymap.set('', 'sj', '<C-w>j') keymap.set('', 'sl', '<C-w>l') -- Resize window keymap.set('n', '<C-w><left>', '<C-w><') keymap.set('n', '<C-w><right>', '<C-w>>') keymap.set('n', '<C-w><up>', '<C-w>+') keymap.set('n', '<C-w><down>', '<C-w>-')
plugins.lua
Pertama, install packer.nvim nya terlebih dahulu.
git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim
Kemudian buat file plugins.lua
.
local status, packer = pcall(require, 'packer') if (not status) then return end vim.cmd [[packadd packer.nvim]] return require('packer').startup(function(use) -- Packer can manage itself use 'wbthomason/packer.nvim' -- Plugin lain di install disini end)
Type :luafile%
di Neovim kita, kemudian :PackerInstall
atau :PackerSync
untuk menginstall packer.nvim.
Selanjutnya di root directory neovim nya kita buat file init.lua
untuk meload ke empat konfigurasi yang telah di buat diatas.
require('base') require('maps') require('highlights') require('plugins')
Install Plugin di Neovim dengan Packer
Nah setelah basic konfigurasinya sudah dibuat, sekarang kita coba install plugin menggunakan packer.nvim.
Pada contoh ini, saya akan menginstall tema onedark.nvim, sobat bisa mencoba menggunakan tema lain yang soba sukai. Beberapa jenis tema untuk Neovim yang cukup populer diantaranya adalah tokyonight.nvim, cattpuccin, kanagawa.nvim, nightfox.nvim, RosΓ© Pine, dan juga onedark.nvim.
Saya memilih onedark.nvim karena sudah biasa menggunakannya di text editor yang saya gunakan. Tema onedark selain saya gunakan di Neovim juga saya terapkan di VS Code yang saya pakai.
Berikut adalah beberapa screenshot tema onedark.nvim.
Install onedark.nvim dengan packer.
-- Using Packer use 'navarasu/onedark.nvim'
Contoh:
local status, packer = pcall(require, 'packer') if (not status) then return end vim.cmd [[packadd packer.nvim]] return require('packer').startup(function(use) -- Packer can manage itself use 'wbthomason/packer.nvim' use 'navarasu/onedark.nvim' end)
Simpan dan tutup terlebih dahulu dengan perintah :wq
. Lalu buka kembali file plugins.lua
tersebut, kemudian type :PackerSync
atau :PackeInstall
untuk menginstall tema onedark.nvim.
Setelah berhasil di install, buat file onedark.rc.lua
di folder after -> plugin. Kurang lebih konfigurasinya seperti berikut ini.
local status, onedark = pcall(require, 'onedark') if (not status) then return end require('onedark').setup { style = 'cool', -- Choose one 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light' transparent = true, term_colors = true, ending_tildes = false, -- Show the end-of-buffer tildes. cmp_itemkind_reverse = false, -- reverse item kind highlight in cmp menu code_style = { comments = 'italic', keywords = 'none', functions = 'none', strings = 'none', variables = 'none' }, -- Plugins Config diagnostics = { darker = true, undercurl = true, background = true, }, } -- Enable theme require('onedark').load()
Simpan dan restart Neovim sobat, kemudian silahkan buka kembali. Kalau konfigurasinya benar, maka tema Neovim sobat sudah akan berganti menjadi onedark.nvim.
Mungkin cukup sekian tentang βcara install plugin di Neovim dengan packer.nvimβ semoga bermanfaat ya sob, terima kasih.