luaとneovim
neovim0.9からeditorconfigがサポート
(Neo)vimではTODO
やXXX
などの文字列がコメント内にあると、特別なハイライトがされる(Todoというハイライトグループ)
どの様なワードがハイライトされるかは $VIMRUNTIME/syntax/(language name).vim
に定義されている。
例:
vim.bo.filetype=='rust'
の場合、TODO, FIXME, XXX, NB, NOTEがハイライトされる。これは $VIMRUNTIME/syntax/rust.vim
で定義されている。
vim.bo.filetype=='lua'
の場合、TODO, FIXME, XXX, がハイライトされる。これは $VIMRUNTIME/syntax/lua.vim
で定義されている。
コメント内のTODOのようなラベルが、tree-sitterにサポートされた
エコシステムが貧弱なので今すぐ移行はしないけど
いつかこれ関連のプラグインとか作ってみたい
:enew
で空の新しいバッファを作る。一時的にメモを取るのに使えそう
ZZ
はバッファを閉じるのに使われるが、ZQ
で変更を保存せずに閉じることができる
neovimのcmdline
でluaのtableを出力するショートカット
:lua =vim.opt.list
:lua print(vim.inspect(vim.opt.list))
とかするよりだいぶ楽ですね
v
はvisual modeに入るだけでなくモーションとしても使える
例えば、viw
とすれば単語を選択できる vi"
とすれば"
で囲まれた範囲を選択できる
normal modeで<number>|
とすると現在行の<number>th columnに移動できる
assert(v,message)
はv
がnilまたはfalseの時、message
を表示してプログラムを終了させる。v
がそれ以外の場合、assert(v,message)
はvを返す。なので、luaでassert
を使って、nilチェックができる。
assert(assert(1) == 1) -- this should success
assert(nil,'a is nil') -- this should fail
これは、sumneko_lua
(最近nvim-lspconfigでlua_ls
に名前が変わった)で、need check nil
の警告が出た時に有用。
置換で文字を流用する方法
縦に連番を作りたい時はvisual modeでg<c-a>
すれば出来る。横は無理。
2
2 |
2 |
2 | select these four `2`. then press `g<c-a>`
2 |
↓
2
3
4
5
6
luaではstatementの終わりに明示的に;
をつけることが出来る。
local a = 0; local b = 2
<c-g>
でファイル名、何行目か、ファイル全体のうち何処ら辺にあるのかが表示される
e.g."shift.md" 29 lines --62%--
neovimからもdevcontainerは使える(一応)