僕が普段愛用している Neovim プラグインを紹介します。
1. プログラミングを快適にする (LSP・シンタックス) nvim-lspconfig, mason.nvim, mason-lspconfig.nvim Neovim を IDE 化します。 mason で各種言語のサーバー(Lua, Python, Rustなど)を簡単にインストールでき、lspconfig でそれらを有効化します。自動補完や定義ジャンプが可能になります。 設定方法 { "williamboman/mason.nvim", build = ":MasonUpdate", -- インストール時にレジストリを更新 config = function() require("mason").setup() end, }, { "williamboman/mason-lspconfig.nvim", dependencies = { { "williamboman/mason.nvim" }, { "neovim/nvim-lspconfig" }, }, config = function() require("mason-lspconfig").setup({ ensure_installed = { -- 自動インストールしたいサーバーをリストアップ "lua_ls", "pyright", "ts_ls", "vimls", "gopls", "html", "jsonls", "cssls", "marksman", "terraformls", "vuels", "dockerls", "yamlls", }, }) require("mason-lspconfig").setup_handlers({ -- 自動セットアップ function(server_name) require("lspconfig")[server_name].setup({}) end, }) end }, nvim-treesitter 標準のハイライトよりも圧倒的に細かく、正確にコードに色が付きます。コードの構造を解析するため、インデントや選択範囲の拡張なども賢くなります。 設定方法 { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", lazy=false, opts = { highlight = { enable = true, disable = {}, }, ensure_installed = { "hcl", "terraform" }, sync_install = true, }, }, blink.cmp 超高速な自動補完エンジン。 長らく nvim-cmp が主流でしたが、現在はこの blink.cmp が「設定が簡単で爆速」として非常に人気です。 こちらは別途解説記事を書きたいと思います。 設定方法 長いので折りたたみにしました { 'saghen/blink.cmp', -- optional: provides snippets for the snippet source dependencies = { 'rafamadriz/friendly-snippets' }, -- use a release tag to download pre-built binaries version = '1.*', -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust -- build = 'cargo build --release', -- If you use nix, you can build from source using latest nightly rust with: -- build = 'nix run .#build-plugin', ---@module 'blink.cmp' ---@type blink.cmp.Config opts = { -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) -- 'super-tab' for mappings similar to vscode (tab to accept) -- 'enter' for enter to accept -- 'none' for no mappings -- -- All presets have the following mappings: -- C-space: Open menu or open docs if already open -- C-n/C-p or Up/Down: Select next/previous item -- C-e: Hide menu -- C-k: Toggle signature help (if signature.enabled = true) -- -- See :h blink-cmp-config-keymap for defining your own keymap keymap = { preset = 'default' }, appearance = { -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' -- Adjusts spacing to ensure icons are aligned nerd_font_variant = 'mono' }, -- 補完ウィンドウの見た目を少し豪華にする(オプション) completion = { menu = { border = 'rounded' }, documentation = { window = { border = 'rounded' } }, }, -- Default list of enabled providers defined so that you can extend it -- elsewhere in your config, without redefining it, due to `opts_extend` sources = { default = { 'lsp', 'path', 'snippets', 'buffer' }, }, -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` -- -- See the fuzzy documentation for more information fuzzy = { implementation = "prefer_rust_with_warning" } }, opts_extend = { "sources.default" } }, 2. 見た目と使い勝手を向上させる lualine.nvim ステータスライン(画面下部のバー)をオシャレにする。 現在のモード、ファイル名、Gitのブランチ、LSPの状態などを綺麗に表示できます。 設定方法 { 'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons' }, opts = {}, }, 以下のような感じで表示されます。
...