Neovimのcommand-line window代替プラグイン

1 min read読了の目安(約900字

command-line windowの少し不便な部分を改善するため、
その機能を置き換えるプラグインcmdbuf.nvimを作った。

https://github.com/notomo/cmdbuf.nvim

動機

ノーマルモードが好きなのでノーマルモードで扱えるcommand-line windowも好き。
ただ、不便な点として普通のウィンドウではないことが挙げられる。
ウィンドウを閉じずにcommand-line windowから移動しようとすると以下のエラーが起きる。

`E11: Invalid in command-line window; <CR> executes, CTRL-C quits`

つまり、Enterで実行するかCTRL-C等で閉じないとcommand-line windowから出られない。
これを意識するのが面倒だった。

機能

nnoremap q: <Cmd>lua require('cmdbuf').split_open(vim.o.cmdwinheight)<CR>
nnoremap q/ <Cmd>lua require('cmdbuf').split_open(vim.o.cmdwinheight, {type = "vim/search/forward"})<CR>
nnoremap q? <Cmd>lua require('cmdbuf').split_open(vim.o.cmdwinheight, {type = "vim/search/backward"})<CR>

q:, q/, q?を再現する機能を通常のバッファ・ウィンドウで提供する。
よって、何も意識せずに移動・終了できる。

また、本家にはない機能としてluaコマンド用のcommand-line windowを実装している。

nnoremap ql <Cmd>lua require('cmdbuf').split_open(vim.o.cmdwinheight, {type = "lua/cmd"})<CR>

lua を省略できるだけ。少し便利。