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
340
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
620
satysfi-easytable: SATySFi で簡易な表組版
monaqa
1
2.8k
Vimrc読書会のすすめ
monaqa
2
920
f モーションで縦横無尽に移動しよう
monaqa
2
980
Other Decks in Programming
See All in Programming
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
340
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
650
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
140
数百円から始めるRuby電子工作
tarosay
0
100
5分で問診!Composer セキュリティ健康診断
codmoninc
0
580
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
500
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
630
初めてのKubernetes 本番運用でハマった話
oku053
0
130
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
5.3k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Statistics for Hackers
jakevdp
799
230k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Prompt Engineering for Job Search
mfonobong
0
380
Side Projects
sachag
455
43k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
380
Navigating Weather and Climate Data
rabernat
0
400
Crafting Experiences
bethany
1
230
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
The Curious Case for Waylosing
cassininazir
1
440
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 で書き直すかも?