2023-01-07 /
@syui
vim
, nvim
, lua
nvimを使ってみる
neovim
、いわゆるnvim
ですが、今まで全く使ってなかったので、今回は少しカスタマイズして使ってみました。
vimscriptとluaで書けますが、luaで書いていこうと思います。したがって、pluginから何から全て移行です。
$ sudo pacman -S neovim
$ mkdir -p ~/.config/nvim
$ touch ~/.config/nvim/init.lua
-- vim.api.nvim_set_keymap("", "<space>", "<Nop>", { noremap = true, silent = true })
local opts = { noremap = true, silent = true }
local keymap = vim.api.nvim_set_keymap
keymap("", "<space>", "<Nop>", opts)
これはvimでいう<leader>
をマッピングする設定です。<space>
にします。
続いてpluginをインストールします。packer
を使います。
https://github.com/wbthomason/packer.nvim
git clone --depth 1 https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvim
vim.cmd [[packadd packer.nvim]]
return require('packer').startup(function(use)
use 'wbthomason/packer.nvim'
use 'rlane/pounce.nvim'
end)
pounce.nvim
pounce.nvim
はeasymotion
のようなものです。
require("pounce").setup({
accept_keys = "jfkdlsahgnuvrbytmiceoxwpqz",
accept_best_key = "<enter>",
multi_window = true,
debug = false,
})
keymap("n", "<leader><leader>", ":<C-u>Pounce<Return>", opts)
これで<space><space>
を押すと発動します。適当に検索したい1文字を入力して飛びます。
undo
$ mkdir -p ~/.config/nvim/undo
vim.api.nvim_set_option('undofile', true)
vim.opt.undodir = vim.fn.stdpath('config') .. '/undo'
undotree
というpluginが便利です。
use { 'mbbill/undotree', cmd = 'UndotreeToggle', config = [[vim.g.undotree_SetFocusWhenToggle = 1]], }
local map = vim.keymap.set
map("n", "<leader>u", "<cmd> UndotreeToggle<CR>")
pluginをインストールして、上記例では<space>u
で起動できます。
lsp
:LspInstallServer
から:MasonInstall
になったみたい。
https://github.com/williamboman/mason.nvim
use({ "hrsh7th/cmp-nvim-lsp" })
use({ "hrsh7th/cmp-nvim-lua" })
use({ "onsails/lspkind-nvim" })
use({ "L3MON4D3/LuaSnip" })
use({ "neovim/nvim-lspconfig" })
use({ "williamboman/mason.nvim" })
use({ "williamboman/mason-lspconfig.nvim" })
require("mason").setup({
ui = {
icons = {
package_installed = "✓",
package_pending = "➜",
package_uninstalled = "✗"
}
}
})
local nvim_lsp = require('lspconfig')
local mason_lspconfig = require('mason-lspconfig')
mason_lspconfig.setup_handlers({
function(server_name)
local opts = {}
if server_name == "sumneko_lua" then
opts.settings = {
Lua = {
diagnostics = { globals = { 'vim' } },
}
}
end
nvim_lsp[server_name].setup(opts)
end
})
:MasonInstall lua-language-server
こんな感じで使っていけば良さそう。以上です。
ref