nvim 整備を再開。 v0.9.0-dev Windows10, WSL 共用設定で運用。
LSP も含めて整ってきたので、久しぶりに vscode から出られそうな予感。
ある程度の環境ができあがるまで、無限に寄り道を強いられるので なかなか本筋に集中できなくなるが、できあがると快適に。 現状の環境に付いてメモをしておく。
term + font
WslTty + HackGenNerd + tmux
WezTerm + HackGenNerd(tmux なし。wezterm を使う)
init.lua
lua ファイルの配置
~/.config/nvim/lua が LUA_PATH になるので のフォルダに普通の lua モジュール の流儀で配置して、 reqiure できるようにする。
-- ~/.config/nvim/lua/dot.lua
-- module
local M={}
M.value = 1
function M.hello()
print('hello')
end
return M
-- use
require('dot').hello()
keymap
nvim の場合いくつか指定方法があるのだが、 lua の vim.keymap.set 関数がよい。 lua の関数を直接指定できるので快適。
vim.keymap.set('n', '<Space>a', '<cmd>LspInfo<CR>')
-- lua の関数も書ける
vim.keymap.set('n', '<Space>a', function()
print('hello lua')
end)
Windows での border 手動設定
Windows では telescope とかの罫線が文字化けしてしまうのだが、 文字列で指定すると問題が無いことがわかった。 どうも、エスケープシーケンスで罫線出力したときに Windows の conpty で変換されて 壊れるような気がしている。 なので、設定で unicode などの文字で罫線を指定してやると綺麗に描画される様子。
-- border 指定。
dot.border = {
{ "╭", "FloatBorder" },
{ "─", "FloatBorder" },
{ "╮", "FloatBorder" },
{ "│", "FloatBorder" },
{ "╯", "FloatBorder" },
{ "─", "FloatBorder" },
{ "╰", "FloatBorder" },
{ "│", "FloatBorder" },
}
-- plugin ごとにこまめに設定してやる
-- LspInfo など
require("lspconfig.ui.windows").default_options.border = dot.border
-- nvim-cmp
cmp.setup {
window = {
completion = cmp.config.window.bordered {
border = dot.border,
},
documentation = cmp.config.window.bordered {
border = dot.border,
},
},
で、罫線があると completion とか floating window の見栄えがよろしいのですな。
Windows はまだ描画が乱れる場合はあるのだけど、 左サイドに NvimTree を出しっぱなしにするなどで、ある程度防御できる、ぽい。
package manager
lazy
comment
telescope
packer から乗り換え。
nvimtree
NerdTree から乗り換え。
treesitter
lspconfig
いろいろ設定項目があるので、少しずつやる。
lua_ls + neodev
formatter
diagnostics / hover
semantic symbol => aerial, syntax highlight
goto defintion => tjump
completion
languages
lua_ls, clangd, pyright, tsserver(gatsby 作業), omnisharp(Unity 作業), gopls, jsonls あたり快適に使えている。 一部、 ~/.vscode-server/extensions のバイナリ使ってます。すいません。
lua_ls
neodev で nvim の builtin 関数の情報を表示する。
clangd
header / source 切りかえ。A.vim みたいなやつ。 ClangdSwitchSourceHeader
lualine
aerial
completion
cmp
lsp 経由の formatter
だいたい、 LanguageServer に任せてしまえる。 lua_ls と stylua を組みあわせたい場合など、別のフォーマッターを使いたい場合は lua_ls のフォーマッターを停止させつつ、 null-ls の stylua を使うことができた。
git
quickfix
タスクランナーを使うのをやめて、下記のサイトを参考にした async_make 的な lua 関数で運用中。 必要に応じて set makeprg=cmake\ --build\ build などする。
https://phelipetls.github.io/posts/async-make-in-nvim-with-lua/
Cfilter で件数を絞って <Tab>, <S-Tab> で quickfix を巡回するように設定した。 quickfix の新旧リスト切り替えを <C-n>, <C-p> にわりあてて、 使い捨ての quickfix を量産する感じに(c++)。
floating term
skk
LuaSnip
TODO:
LanguageServer は完全に実用になった。 DebugAdapter は動くけど、快適でない感じがする。