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
monaqa
August 06, 2021
Programming
1
290
Lua製プラグインdial.nvimの紹介
以前作成したプラグイン
dial.nvim
の紹介です。
monaqa
August 06, 2021
Tweet
Share
More Decks by monaqa
See All by monaqa
SATySFi Language Server の現状と今後
monaqa
0
550
satysfi-easytable: SATySFi で簡易な表組版
monaqa
1
2.6k
Vimrc読書会のすすめ
monaqa
2
870
f モーションで縦横無尽に移動しよう
monaqa
2
910
Other Decks in Programming
See All in Programming
PicoRuby on Rails
makicamel
3
140
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
450
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
660
マッチングアプリにおけるフリックUIで苦労したこと
yuheiito
0
190
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
180
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
730
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
320
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
1
470
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
13k
顧客の画像データをテラバイト単位で配信する 画像サーバを WebP にした際に起こった課題と その対応策 ~継続的な取り組みを添えて~
takutakahashi
4
1.3k
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
99
37k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Typedesign – Prime Four
hannesfritz
42
2.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
108
19k
For a Future-Friendly Web
brad_frost
179
9.8k
Fireside Chat
paigeccino
37
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
520
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
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 で書き直すかも?