Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lua製プラグインdial.nvimの紹介
Search
monaqa
August 06, 2021
Programming
350
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lua製プラグインdial.nvimの紹介
以前作成したプラグイン
dial.nvim
の紹介です。
monaqa
August 06, 2021
More Decks by monaqa
See All by monaqa
SATySFi Language Server の現状と今後
monaqa
0
630
satysfi-easytable: SATySFi で簡易な表組版
monaqa
1
2.9k
Vimrc読書会のすすめ
monaqa
2
930
f モーションで縦横無尽に移動しよう
monaqa
2
990
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
Workers Cache を知る
syumai
0
340
自サークルのIdPからログアウトできるようになるまで
taiseiue
0
110
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
110
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
450
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
21k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
550
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
110
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Java 27新機能 / Java 27 new features
kishida
2
200
Domain-Driven Transformation
hschwentner
2
2.3k
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
How to Ace a Technical Interview
jacobian
280
24k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
920
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Building an army of robots
kneath
307
47k
Paper Plane
katiecoart
PRO
4
54k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
480
Visualization
eitanlees
153
17k
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 で書き直すかも?