nvim入門備忘録

いままでiTerm2を使っていたが軽量ターミナルのGhosttyがリリースされてターミナル愛が増し、いっそneovimでコードを書きたくなったのでいろいろメモ
neovimのインストール
$ brew install neovim
設定ファイルの作成
$ touch ~/.config/nvim/init.vim
set number
set expandtab
set smartindent
set shiftwidth=2
set softtabstop=2
set autochdir
set encoding=utf-8
nvimで起動しcheckhealthしてみると ERROR shada file is not writeable:
とエラーが出た
shadaとはneovimのキャッシュファイルらしくファイルが壊れてるのか権限が足りないのかで書き込めないとのこと。
自分はmac OSなので rm ~/.local/state/nvim/shada/*
でキャッシュを全て削除してみる
$~: ls ~/.local/state/nvim/shada
$~:
よし消えてる
もう一度 checkhealth
してみる
Configuration ~
- ERROR shada file is not writeable:
/Users/xxx/.local/state/nvim/shada/main.shada
アレェ!??
drwxr-xr-x@ 2 root staff 64 Dec 30 15:14 shada
ディレクトリの権限も間違ってなさそう
いやフォルダの所有者がrootになってる!!
これを自分のユーザー名に変更して...
$ sudo chown -R <ユーザー名> shada
できた
NerdTreeをいれる
nvim-treeのキャッシュは多分保存する必要ないのでスワップファイルを無効にする
vim.api.nvim_create_autocmd("FileType", {
pattern = "NvimTree",
callback = function()
vim.opt_local.swapfile = false
end,
})
偉いのでinit.luaでなく lua/plugins
配下に作成した nvim-tree用の設定ファイル nvim-tree.lua
に記載していく
pluginごとの設定ファイルにはスワップファイルの設定書いても起動時に呼び出されないわ!
init.luaに書く
わぁ〜〜い
NvimTreeとエディタ部分は Ctrl-w + h
で左、Ctrl-w + l
で右に遷移する
明日からCtrl + w素振りして体に覚えさせます

タブが4なのが受け入れられないので変更
vim.o.expandtab = true
vim.o.tabstop = 2
vim.o.shiftwidth = 2
expandtab: tabをスペースに置換
tabstop: tab文字の幅を変更
shiftwidth: neovimがインデントをする際の幅を変更(>>
とかでインデントつける場合)

せっかくなのでnvim使ってnext.jsでブログ作成しながら適宜必要なプラグインなり設定を模索していく。
バックエンドは考えるのが面倒なので話題のsupabaseにする
NerdTreeの操作はこちらの記事で細かく翻訳してくださってた
ありがたい。。。ありがたい。。。!
特によく使ったコマンド
Ctrl + ]
: カーソルで選択したディレクトリに遷移

Nerdtree tips
shift + i
で隠しファイルを表示できる

neovimにtypescriptのLSPをいれる
init.luaでlsp関連のpluginをrequireのちnvimを再起動したらLazyのモーダルがでてきてありえん邪魔
Ctrl-c でも esc でも閉じない
ZZで閉じれた
このリッチなUIも変更可能なテキストと扱えばいいんだね

ミスって一旦 ~/.config/nvim
配下を削除してしまった
うろ覚えで設定を作成し直したがnvim実行時に
Error detected while processing /Users/xxx/.config/nvim/init.lua:
No specs found for module "plugins"
とエラーが発生するように
nvim実行しcheckhealthすると
- ERROR Issues were reported when loading your specs:
- ERROR No specs found for module "plugins"
ファイル構造はこんな感じ
├── init.lua
└── lua
└── settings
├── core
│ └── init.lua
├── plugins
│ ├── mason.lua
│ └── nvim-tree.lua
└── plugins.lua