+++ date = "2023-01-07" tags = ["vim","nvim","lua"] title = "nvimを使ってみる" slug = "nvim" +++ `neovim`、いわゆる`nvim`ですが、今まで全く使ってなかったので、今回は少しカスタマイズして使ってみました。 vimscriptとluaで書けますが、luaで書いていこうと思います。したがって、pluginから何から全て移行です。 ```sh $ sudo pacman -S neovim $ mkdir -p ~/.config/nvim $ touch ~/.config/nvim/init.lua ``` ```lua:~/.config/nvim/init.lua require("keymaps") ``` ```lua:~/.config/nvim/lua/keymaps.lua -- vim.api.nvim_set_keymap("", "", "", { noremap = true, silent = true }) local opts = { noremap = true, silent = true } local keymap = vim.api.nvim_set_keymap keymap("", "", "", opts) ``` これはvimでいう``をマッピングする設定です。``にします。 続いてpluginをインストールします。`packer`を使います。 https://github.com/wbthomason/packer.nvim ```sh git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim ``` ```lua:~/.config/nvim/lua/plugins.lua vim.cmd [[packadd packer.nvim]] return require('packer').startup(function(use) use 'wbthomason/packer.nvim' use 'rlane/pounce.nvim' end) ``` ```sh :PackerInstall ``` ### pounce.nvim `pounce.nvim`は`easymotion`のようなものです。 ```lua:~/.config/nvim/plugin/pounce.lua require("pounce").setup({ accept_keys = "jfkdlsahgnuvrbytmiceoxwpqz", accept_best_key = "", multi_window = true, debug = false, }) ``` ```lua:~/.config/nvim/lua/keymaps.lua keymap("n", "", ":Pounce", opts) ``` これで``を押すと発動します。適当に検索したい1文字を入力して飛びます。 ### undo ```sh $ mkdir -p ~/.config/nvim/undo ``` ```lua vim.api.nvim_set_option('undofile', true) vim.opt.undodir = vim.fn.stdpath('config') .. '/undo' ``` `undotree`というpluginが便利です。 ```lua use { 'mbbill/undotree', cmd = 'UndotreeToggle', config = [[vim.g.undotree_SetFocusWhenToggle = 1]], } local map = vim.keymap.set map("n", "u", " UndotreeToggle") ``` pluginをインストールして、上記例では`u`で起動できます。 ### lsp `:LspInstallServer`から`:MasonInstall`になったみたい。 https://github.com/williamboman/mason.nvim ```lua 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" }) ``` ```lua:lua/lsp.lua 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 }) ``` ```sh :MasonInstall lua-language-server ``` こんな感じで使っていけば良さそう。以上です。 ### ref - https://github.com/hisasann/neovim - https://github.com/nullchilly/nvim - https://github.com/wbthomason/dotfiles/tree/main/dot_config/nvim