Apa itu NeoVim (Nvim)
Neovim adalah editor teks yang merupakan pengembangan dari Vim dengan tujuan membuatnya lebih modern, fleksibel, dan mudah dikonfigurasi. Dibandingkan dengan Vim, Neovim memiliki sistem plugin yang lebih canggih dengan dukungan bahasa pemrograman Lua, memungkinkan integrasi fitur seperti LSP (Language Server Protocol) untuk autocompletion dan debugging. Selain itu, Neovim hadir dengan antarmuka yang lebih modern, mendukung fitur seperti status bar yang lebih informatif, file explorer terintegrasi, serta pencarian file yang lebih cepat. Dibangun agar lebih ringan dan efisien, Neovim juga mempermudah pengelolaan plugin dengan Lazy.nvim, dibandingkan Vim yang masih menggunakan sistem plugin lama. Dengan kata lain, Neovim menawarkan pengalaman yang lebih kuat dan fleksibel dibandingkan Vim, menjadikannya pilihan utama bagi banyak programmer dan pengguna terminal yang ingin efisiensi tanpa kehilangan fleksibilitas.
Instalasi NeoVim
Untuk panduan instalasi versi terbaru dari NeoVim kita dapat mengunjungi github resminya di Github Neovim.
Namun kita juga dapat membuat installer NeoVim ini sendiri, berikut adalah cara nya.
Install Software Pendukung
sudo apt-get install git cmake
Clone Repository NeoVim
git clone https://github.com/neovim/neovim.git
cd neovim
Ubah ke Versi yang stable
git checkout stable
Build NeoVim (Mungkin Memerlukan Waktu)
make CMAKE_BUILD_TYPE=RelWithDebInfo
cd build
cpack -G DEB
Install NeoVim .deb
Pertama masukan ini di dalam terminal
sudo dpkg -i nvim
Lalu tinggal di pencet keyboard TAB
, pastikan command nya memiliki akhir .deb
, setelah itu tunggu prosess instalasi sampai selesai.
Dan jika telah selesai maka kita tinggal melakukan pengecekan versi NeoVim yang telah kita instalasi menggunakan nvim --version
.
Jika muncul, maka instalasi berhasil. Dan jika ingin menggunakan NeoVim kita tinggal membukanya dengan perintah nvim
.
Membuat Setingan Nvim
Buat folder nvim
mkdir ~/.config/nvim
Clone Plugin Manager
git clone https://github.com/folke/lazy.nvim ~/.config/nvim/lazy
Buat file init.lua
nvim ~/.config/nvim/init.lua
Masukan code berikut ke file init.lua
-- PASTEKAN FILE INI KE ~/.config/nvim/init.lua
-- DAN JALANKAN :Lazy untuk menginstall plugin
-- Pastikan sudah install Lazy.nvim (Plugin Manager)
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath})
end
vim.opt.rtp:prepend(lazypath)
-- Pengaturan dasar
vim.opt.number = true -- Tampilkan nomor baris
vim.opt.relativenumber = false -- Tampilkan nomor baris relatif
vim.opt.autoindent = true -- Auto indentasi
vim.opt.smartindent = true -- Smart indentasi
vim.opt.expandtab = true -- Gunakan spasi, bukan tab
vim.opt.shiftwidth = 2 -- Ukuran indentasi
vim.opt.tabstop = 2 -- Ukuran tab
vim.opt.wrap = true -- Nonaktifkan word wrap
vim.opt.linebreak = true -- Hindari memotong kata di tengah
vim.opt.showbreak = "↪ " -- Tampilkan ikon saat baris terputus
vim.opt.autowrite = true -- Auto save saat berpindah buffer
vim.opt.formatoptions:append("cro") -- Auto format paragraf
-- Load Plugin
require("lazy").setup({
{ "nvim-tree/nvim-tree.lua", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function()
require("nvim-tree").setup({
renderer = {
icons = {
show = {
file = true,
folder = true,
folder_arrow = true,
},
},
},
})
end
},
{ "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function()
require("lualine").setup({ options = { icons_enabled = true } })
end
},
{ "akinsho/bufferline.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function()
require("bufferline").setup({ options = { show_buffer_icons = true } })
end
},
{ "folke/tokyonight.nvim", config = function()
vim.cmd.colorscheme "tokyonight-night"
end
},
{ "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" }, config = function()
require("telescope").setup()
end
},
{ "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-nvim-lsp", "L3MON4D3/LuaSnip" }, config = function()
local cmp = require("cmp")
cmp.setup({
mapping = {
["<C-Space>"] = cmp.mapping.complete(),
}
})
end
},
{ "neovim/nvim-lspconfig", config = function()
require("lspconfig").ts_ls.setup{}
end
},
{ "lewis6991/gitsigns.nvim", config = function()
require("gitsigns").setup()
end
},
{ "folke/which-key.nvim", config = function()
require("which-key").setup()
end
},
{ "stevearc/conform.nvim", config = function()
require("conform").setup({
format_on_save = {
timeout_ms = 500,
lsp_fallback = true,
},
formatters_by_ft = {
lua = { "stylua" },
javascript = { "prettier" },
typescript = { "prettier" },
}
})
end
}
})
-- Keybindings ala VSCode
vim.api.nvim_set_keymap("n", "<C-p>", ":Telescope find_files<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-f>", ":Telescope live_grep<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-Space>", "cmp#complete()", { expr = true })
Restart Nvim
Keluar dari nvim menggunakan :q
, lalu masuk lagi ke nvim, dan tunggu instalasi otomatis nya sampai selesai.