neovimを初めて使ってみる
2024/09/13
Category : CLI エディタ 短い記事
Neovimとは
この記事を読んでいる方はご存知だと思いますので詳細は割愛しますが、 簡単に言えば保守的なvim派閥から独立した革新派のvimmer用エディターです。
インストール
$sudo apt install neovim
でもインストールは可能ですが、最新バージョンを使いたいと言う方はneovimの公式サイトからのダウンロードをおすすめします。
公式でInstall Now
と言うボタンを選択するとgithubのリポジトリへリダイレクトされます。ここでは各OSでのインストール方法が記述されているので、こちらを読んでください。
インストール例
以下ではインストールの一例としてビルド済みのバイナリを用いたインストールを紹介します。
$ curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
$ sudo rm -rf /opt/nvim
$ sudo tar -C /opt -xzf nvim-linux64.tar.gz
これを実行した後、~/.zshrc
や~/.bashrc
に
export PATH="$PATH:/opt/nvim-linux64/bin"
を追加記入して完了です!
なおこれはLinuxの64bitアーキテクチャを前提としています。WindowsやMacOSは元のサイトを参照ください。
設定ファイル
neovimでは従来の~/.vimrc
を用いることも可能ですが、luaというスクリプト形式での設定ファイルが新たに用意されています。
設定ファイルは~/.config/nvim/init.vim
、
もしくは~/.config/nvim/init.lua
に記述します。
まずは簡単なものだけでやってみます。以下はinit.lua
の場合です。
-- 行番号を表示する設定
vim.opt.number = true
-- 文字エンコーディングの設定
vim.opt.encoding = 'utf-8'
vim.scriptencoding = 'utf-8'
vim.opt.fileencoding = 'utf-8'
-- カラースキームを設定する
vim.cmd('colorscheme evening') -- 'evening' の部分がテーマに該当。色々ある。
LSP(Language Server Protocol)
vimやneovimにはLSPという便利なものがあります。これはMicrosoftが作った言語の補完や定義への移動といったVisual Studio Codeなどでよく見られる拡張機能を支える機能です。
LSPを使用するにあたって私はLazy.nvimを使用しました。これはパッケージマネージャで、簡単にパッケージを管理することができます。
以下では例を書いています。
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", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
-- ここに追加したいプラグインを書く。
"nvim-treesitter/nvim-treesitter",
"neovim/nvim-lspconfig",
"lambdalisue/fern.vim",
"neoclide/coc.nvim",
})
-- Treesitter 設定
require'nvim-treesitter.configs'.setup {
highlight = {
enable = true, -- false will disable the whole extension
},
}
-- Tab を使った補完の設定
vim.api.nvim_set_keymap('i', '<Tab>', 'coc#pum#visible() ? coc#pum#confirm() : "<Tab>"', { noremap = true, silent = true, expr = true })
vim.api.nvim_set_keymap('i', '<S-Tab>', 'coc#pum#visible() ? coc#pum#select_prev_item() : "<C-h>"', { noremap = true, silent = true, expr = true })
説明
- nvim-treesitter:ハイライト表示をしてくれる。
- neovim/nvim-lspconfig:LSPの一種。
- lambdalisue/fern.vim:vscodeのように左側にファイルバーを表示してくれます。
- neoclide/coc.nvim:補完を出してくれます。