Open15

luaとneovim

9kv8xiyi9kv8xiyi

(Neo)vimではTODOXXXなどの文字列がコメント内にあると、特別なハイライトがされる(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で定義されている。

9kv8xiyi9kv8xiyi

コメント内のTODOのようなラベルが、tree-sitterにサポートされた
エコシステムが貧弱なので今すぐ移行はしないけど
いつかこれ関連のプラグインとか作ってみたい

9kv8xiyi9kv8xiyi

:enewで空の新しいバッファを作る。一時的にメモを取るのに使えそう

9kv8xiyi9kv8xiyi

ZZはバッファを閉じるのに使われるが、ZQで変更を保存せずに閉じることができる

9kv8xiyi9kv8xiyi

neovimのcmdlineでluaのtableを出力するショートカット

:lua =vim.opt.list

:lua print(vim.inspect(vim.opt.list))とかするよりだいぶ楽ですね

9kv8xiyi9kv8xiyi

vはvisual modeに入るだけでなくモーションとしても使える
例えば、viwとすれば単語を選択できる vi"とすれば"で囲まれた範囲を選択できる

9kv8xiyi9kv8xiyi

normal modeで<number>| とすると現在行の<number>th columnに移動できる

9kv8xiyi9kv8xiyi

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 の警告が出た時に有用。

9kv8xiyi9kv8xiyi

縦に連番を作りたい時はvisual modeでg<c-a>すれば出来る。横は無理。

2
2 |
2 |
2 |  select these four `2`. then press `g<c-a>`
2 |

2
3
4
5
6
9kv8xiyi9kv8xiyi

luaではstatementの終わりに明示的に;をつけることが出来る。

local a = 0; local b = 2
9kv8xiyi9kv8xiyi

<c-g>でファイル名、何行目か、ファイル全体のうち何処ら辺にあるのかが表示される
e.g."shift.md" 29 lines --62%--