🌕
Neovimで{}内を展開する
はじめに
はじめましてyahomiです。
Neovimでの設定ファイル編集や日々の業務で{}内を展開したい欲が高まっていたのですが、デフォルトで提供されている方法では(調べた限り)実現できなかったので特定キーにマッピングしてみることにしました。
どうなるの?
const obj = { hoge: "aaa", fuga: "bbb", piyo: "ccc" };
これが
const obj = {
hoge: "aaa",
fuga: "bbb",
piyo: "ccc"
};
こうなる。
設定例
展開したい{}
がある行を選択して「z + j」を押すことで、{}
内を展開します。
vim.api.nvim_set_keymap('v', 'zj', ":s/\\({\\zs\\s\\|,\\zs\\s\\|\\s\\ze\\}\\)/\\r/g<CR>", { noremap = true })
ちょっと解説
vim.api.nvim_set_keymap('[モード]', '[割り当てるキー]', '[実行内容]', [option])
- [モード]ではマッピングしたキーをどのモードで適応させるかを設定します。
- 今回はVisualモードで適応したいので「v」に設定
- [割り当てるキー]では実際に入力するキーを設定します。
- 今回は「zj」に設定
- [実行内容]では実行したい内容を設定します。
- 今回は以下の文字を改行コード(
\\r
)に置換しています。
(\
が2つ続いているのは文字としての\
をエスケープさせるため)- 「{」直後の空白文字
{\\zs\\s
- 「,」直後の空白文字
,\\zs\\s
- 「}」直前の空白文字
\\s\\ze\\}
- 「{」直後の空白文字
- 今回は以下の文字を改行コード(
- [option]ではマッピングのオプションを設定します。
- 今回はnoremapをtrueに設定して、再起的に呼び出されるのを防いでいます。
参考
Getting started using Lua in Neovim(日本語版)
pattern - Vim日本語ドキュメント
Discussion