WSL2 + Neovim環境を作る
現在時点(2023-03-29)の最新版をインストール
https://github.com/neovim/neovim/releases/tag/v0.8.3
tar xzvf nvim-linux64.tar.gz
./nvim-linux64/bin/nvim
シンボリックリンクを貼る
mv ./nvim-linux64 /usr/local
ln -s /usr/local/nvim-linux64/bin/nvim /usr/local/bin/nvim
パッケージマネージャー選定
Lua plugins are easy to create just like Vimscript plugins. Your config can live in init.lua!
公式よりLuaがおすすめされているようだったのでLua baseなpackage managerで足切りする。
Lua-based package manager
調べた感じ、これくらい。
印象 | スター数🌟 | GitHub | |
---|---|---|---|
packer.nvim | 使っている人多い。安心。 | 6k | https://github.com/wbthomason/packer.nvim |
lazy.nvim | マッチョUI | 4k | https://github.com/folke/lazy.nvim |
mason.nvim | パッケージマネージャーと言うよりプラグイン? | 4.1k | https://github.com/williamboman/mason.nvim |
paq-nvim | 絵がないので不安 | 572 | https://github.com/savq/paq-nvim |
今っぽい感じがするlazy.nvim
を選択。直感大事。
READMEに沿ってinit.lua
にコピペ
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(plugins, opts)
init.lua
ではvim.opt.{option}
が:set
と同じみたい。あとはlua/hoge.lua
をinit.lua
でrequireすればファイル分割も可能とのこと。とりあえず行番号を表示してみる。
vim.opt.number = true
require("base")
できた!!
ここがめっちゃ参考になる↓
カラースキームの導入
tokyonightを選択
require("lazy").setup({
{
"folke/tokyonight.nvim",
config = function()
vim.cmd[[colorscheme tokyonight-moon]]
end
}
})
導入したプラグインが増えてきた
見た目周り
カラースキーム
- folke/tokyonight.nvim
nightで使ってる
ファイラー
そもそもファイラーという言葉もvscodeを使っていたときは知らなかった
- nvim-tree/nvim-tree.lua
ステータスライン
特にこだわりはない
- nvim-lualine/lualine.nvim
バッファーライン
akinshoさんはよく見る名前で信頼できそう
分割したバッファについてくるのがうっとおしかったため、windowの下に固定になるように設定している。
vim.opt.laststatus = 3
require('lualine').setup({
options = {
globalstatus = true,
}
})
- akinsho/bufferline.nvim
便利系
- windwp/nvim-autopairs
括弧を自動補完してくれる。必須級。
- pocco81/auto-save.nvim
insertモードを抜けると自動補完してくれる。saveしていなくてハマることが多かったので助かる。
- petertriho/nvim-scrollbar
スクロールバーを出してくれる。これがあるなら、ステータスラインの〇〇%の表示は要らないなあ。
- mvllow/modes.nvim
currentが位置とモードがわかりやすくなる
Git
すごく悩んだ。特にdiffを横並びで見たかったのと、1ファイルの中で行単位のステージングの機能を重要視した。
- TimUntersberger/neogit
神。後述するdiffviewとの相性もよく、単純なgit操作は完結する。
TimUntersberger/neogit
- sindrets/diffview.nvim
見た目がいい。デカ目の差分が見やすくなった。
LSP&補完
あまりまだ良くわかっていない。こちらの記事を参考にした。
- neovim/nvim-lspconfig
- williamboman/mason.nvim
- williamboman/mason-lspconfig.nvim
- hrsh7th/nvim-cmp
- hrsh7th/cmp-nvim-lsp
- hrsh7th/cmp-buffer
- hrsh7th/cmp-path
- hrsh7th/cmp-cmdline