Lua製プラグインdial.nvimの紹介

4K Views

April 10, 23

スライド概要

Lua製のプラグインである dial.nvim の紹介スライドです。
※1年以上前のスライドのため、現状と異なる箇所があります。

https://github.com/monaqa/dial.nvim

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Lua 製プラグイン dial.nvim の紹介 monaqa GitHub: https://github.com/monaqa 2021 年 8 月 6 日

2.

自己紹介 名前: monaqa Twitter: @mo_naqa GitHub: monaqa Vim 歴: 3 年ぐらい 普段使うエディタ: Neovim 最近よく使っている言語 Rust TypeScript(denops.vim のため最近始めた) Python SATYSFI etc. 1/11

3.

今日のトピック: <C-a> と <C-x> ノーマルモードの <C-a> と <C-x> が便利だよという話 <C-a> : カーソル上の(またはカーソルの後にある)数字を 1 増やす foo 123 bar <C-a> foo 124 bar <C-x> : カーソル上の(またはカーソルの後にある)数字を 1 減らす foo 123 bar <C-x> foo 122 bar 2/11

4.

<C-a> / <C-x> の便利なところ カーソルを移動させる手間がさほどかからない カーソルの後に数字があれば自動で移動して値を増減してくれる foo 123 bar <C-a> foo 124 bar カウンタで増減させる数字を変更できる foo 123 bar 20<C-a> foo 143 bar ドットリピートできる 123 and 234 10<C-a> 133 and 234 . 143 and 234 w. 143 and 244 3/11

5.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? ## Step1. ## Step2. ## Step3. 4/11

6.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step1. ## Step2. ## Step3. 4/11

7.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step1. ## Step2. ## Step3. ※ 編集したい数字の前にカーソルが来るようにする 4/11

8.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step2. ## Step3. 4/11

9.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step2. ## Step3. ※ 次の ##に飛ぶ 4/11

10.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step4. ## Step3. ※ 「2 増やす」 という操作が繰り返される 4/11

11.

<C-a> / <C-x> の活用例 Markdown で下のように書いた後で、「Step1.」の前に 2 つの工程が追加で 必要だと気づいた。Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step4. ## Step5. 離れた場所にある数字も即座に修正できる! 4/11

12.

<C-a> / <C-x> が増減できるもの 'nrformats' オプションを指定することで機能の有効化 / 無効化が可能 種類 10 進数の整数 例 123 2 進数の非負整数 0b0011 8 進数の非負整数 0146 16 進数の非負整数 アルファベット 0x1af3 a 'nrformats' bin octal hex alpha もっと様々なものを増やしたり減らしたりしたい! 日付、時刻、曜日など 5/11

13.

dial.nvim monaqa/dial.nvim enhanced increment/decrement plugin for Neovim. Lua 98 1 <C-a> と <C-x> で様々なものを増減できるようにするプラグイン 数値、アルファベット(標準の <C-a> / <C-x> で増減できるもの) 日付・時刻・曜日 Hex color ( #rrggbb ) Markdown のヘッダの数 etc. 必要な環境 : Neovim ( >= 0.5.0 ) 実装言語が Lua のため 6/11

14.

dial.nvim の特徴 増減ルールは設定により変更可能 value: 07/30 value: 07/30 7<C-a> (日付の増減:無効) 7<C-a> (日付の増減:有効) value: 14/30 value: 08/06 同じ日付でもカーソル位置で増減箇所を変化させられる value: 2021/12/31 value: 2021/12/31 <C-a> <C-a> value: 2022/12/31 value: 2022/01/31 7/11

15.

dial.nvim のカスタマイズ 自分で新たに増減ルールを作成することが可能 8/11

16.

dial.nvim の実装言語 ― Lua 嬉しい点 流行りに乗れる(Lua 製プラグインは特に海外で流行) ユーザ側も設定を Lua で書ける Vim script よりも文法が素直 Vim script よりも高速(らしい) イマイチな点 v0.5.0 以上の Neovim が必須(Vim をサポートできない) 静的に型がつかない 気を配らないとエラーがわかりづらくなる デフォルトの言語機能が物足りない 結局 Vim script の関数使ったほうがいいよね、なんてことも 9/11

17.

今後の展望 ドットリピートのサポート 難しいものの、実装の目処は立ちそう テストの追加 (特に Lua だと)テストがないと不安 denops.vim を用いた実装に切り替える? 利点 TypeScript で実装を書ける(型がついて安心) Vim/Neovim の両対応が簡単 欠点 (おそらく)設定を Lua ほど自由には書けない 10/11

18.

まとめ <C-a> と <C-x> はとても便利! dial.nvim でさらに便利になる 日付や時刻の操作 monaqa/dial.nvim enhanced increment/decrement plugin for Neovim. Lua 98 1 増減対象のカスタマイズ Lua 製プラグインは一長一短 ユーザが Lua で設定を書ける Neovim しか使えない 将来 denops.vim で書き直すかも? 11/11