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
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
620
satysfi-easytable: SATySFi で簡易な表組版
monaqa
1
2.8k
Vimrc読書会のすすめ
monaqa
2
920
f モーションで縦横無尽に移動しよう
monaqa
2
980
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
580
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
180
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.6k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
170
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
880
yield再入門 #phpcon
o0h
PRO
0
1.1k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
380
今さら聞けない .NET CLI
htkym
0
190
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
230
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
680
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Building AI with AI
inesmontani
PRO
1
1.1k
Deep Space Network (abreviated)
tonyrice
0
250
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Music & Morning Musume
bryan
47
7.3k
Chasing Engaging Ingredients in Design
codingconduct
0
270
ラッコキーワード サービス紹介資料
rakko
1
4.3M
Paper Plane (Part 1)
katiecoart
PRO
1
10k
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 で書き直すかも?