Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lua製プラグインdial.nvimの紹介
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
monaqa
August 06, 2021
Programming
330
1
Share
Lua製プラグインdial.nvimの紹介
以前作成したプラグイン
dial.nvim
の紹介です。
monaqa
August 06, 2021
More Decks by monaqa
See All by monaqa
SATySFi Language Server の現状と今後
monaqa
0
610
satysfi-easytable: SATySFi で簡易な表組版
monaqa
1
2.8k
Vimrc読書会のすすめ
monaqa
2
910
f モーションで縦横無尽に移動しよう
monaqa
2
960
Other Decks in Programming
See All in Programming
[BalkanRuby 2026] Drop your app/services!
palkan
3
710
Modding RubyKaigi for Myself
yui_knk
0
540
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
390
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
13
6.3k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
270
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.1k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
28
10k
分析エージェント精度向上における データアナリストの役割
oura_shoya
0
130
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
400
Skillは並べた。動かなかった。契約で繋いだ。— 65個のSkillから、自走する開発サイクルへ
junholee
0
770
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.1k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.2k
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
540
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Building an army of robots
kneath
306
46k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
580
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Test your architecture with Archunit
thirion
1
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Transcript
Lua 製プラグイン dial.nvim の紹介 monaqa GitHub: https://github.com/monaqa 2021 年 8
月 6 日
1/11 自己紹介 名前: monaqa Twitter: @mo_naqa GitHub: monaqa Vim 歴:
3 年ぐらい 普段使うエディタ: Neovim 最近よく使っている言語 Rust TypeScript (denops.vim のため最近始めた) Python SATYSFI etc.
2/11 今日のトピック: <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
3/11 <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
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? ## Step1. ## Step2. ## Step3.
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step1. ## Step2. ## Step3.
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step1. ## Step2. ## Step3. ※ 編集したい数字の前にカーソルが来るようにする
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step2. ## Step3.
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step2. ## Step3. ※ 次の ##に飛ぶ
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step4. ## Step3. ※ 「2 増やす」 という操作が繰り返される
4/11 <C-a> / <C-x> の活用例 Markdown で下のように書いた後で、 「Step1.」の前に 2 つの工程が追加で
必要だと気づいた。 Step1 から 3 の番号を 2 つずつ増やしたい。どうする? /^##<CR>2<C-a>n.n. ## Step3. ## Step4. ## Step5. 離れた場所にある数字も即座に修正できる!
5/11 <C-a> / <C-x> が増減できるもの 'nrformats' オプションを指定することで機能の有効化 / 無効化が可能 種類
例 'nrformats' 10 進数の整数 123 - 2 進数の非負整数 0b0011 bin 8 進数の非負整数 0146 octal 16 進数の非負整数 0x1af3 hex アルファベット a alpha もっと様々なものを増やしたり減らしたりしたい! 日付、時刻、曜日など
6/11 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 のため
7/11 dial.nvim の特徴 増減ルールは設定により変更可能 value: 07/30 7<C-a> (日付の増減:無効) value: 14/30
value: 07/30 7<C-a> (日付の増減:有効) value: 08/06 同じ日付でもカーソル位置で増減箇所を変化させられる value: 2021/12/31 <C-a> value: 2022/12/31 value: 2021/12/31 <C-a> value: 2022/01/31
8/11 dial.nvim のカスタマイズ 自分で新たに増減ルールを作成することが可能
9/11 dial.nvim の実装言語 ― Lua 嬉しい点 流行りに乗れる(Lua 製プラグインは特に海外で流行) ユーザ側も設定を Lua
で書ける Vim script よりも文法が素直 Vim script よりも高速(らしい) イマイチな点 v0.5.0 以上の Neovim が必須(Vim をサポートできない) 静的に型がつかない 気を配らないとエラーがわかりづらくなる デフォルトの言語機能が物足りない 結局 Vim script の関数使ったほうがいいよね、なんてことも
10/11 今後の展望 ドットリピートのサポート 難しいものの、実装の目処は立ちそう テストの追加 (特に Lua だと)テストがないと不安 denops.vim を用いた実装に切り替える?
利点 TypeScript で実装を書ける(型がついて安心) Vim/Neovim の両対応が簡単 欠点 (おそらく)設定を Lua ほど自由には書けない
11/11 まとめ monaqa/dial.nvim enhanced increment/decrement plugin for Neovim. Lua 98
1 <C-a> と <C-x> はとても便利! dial.nvim でさらに便利になる 日付や時刻の操作 増減対象のカスタマイズ Lua 製プラグインは一長一短 ユーザが Lua で設定を書ける Neovim しか使えない 将来 denops.vim で書き直すかも?