Slide 1

Slide 1 text

© DeNA Co., Ltd. 1 2025/03/21(金) DeNA.vim @ TechCon 2025 uhooi / 川口 真央 snacks.nvim 内のセットアップ不要な プラグインを紹介🍿

Slide 2

Slide 2 text

© DeNA Co., Ltd. 2 uhooi / 川口 真央 ● iOS アプリエンジニア ● Swift と Neovim が好き ● ポケカと蟲神器にハマっている ● 最近は謎解きもしている 株式会社ディー・エヌ・エー @uhooi @the_uhooi © DeNA Co., Ltd. 自己紹介

Slide 3

Slide 3 text

© DeNA Co., Ltd. 3 snacks.nvim、使っていますか?🙋

Slide 4

Slide 4 text

© DeNA Co., Ltd. 4 ● https://github.com/folke/snacks.nvim ● Neovim 用の QOL を上げる小さなプラグインの集まり ● 2025/03/21 現在、30つのプラグインがある ● 私にとっては snack🍿というより dinner🍝 「snacks.nvim」とは?

Slide 5

Slide 5 text

© DeNA Co., Ltd. 5 今回はセットアップ不要な プラグインを18つすべて紹介します!

Slide 6

Slide 6 text

© DeNA Co., Ltd. 6 1 ● https://github.com/folke/snacks.nvim/blob/main/docs/animate.md ● アニメーションライブラリ ● 試せていない animate

Slide 7

Slide 7 text

© DeNA Co., Ltd. 7 2 ● https://github.com/folke/snacks.nvim/blob/main/docs/bufdelete.md ● ウィンドウのレイアウトを崩さずにバッファを削除する ● 試せていない bufdelete

Slide 8

Slide 8 text

© DeNA Co., Ltd. 8 3 ● https://github.com/folke/snacks.nvim/blob/main/docs/debug.md ● コード内で使えるユーティリティ関数 ● 試せていない debug

Slide 9

Slide 9 text

© DeNA Co., Ltd. 9 4 ● https://github.com/folke/snacks.nvim/blob/main/docs/dim.md ● 他のスコープを暗くして、アクティブなスコープに焦点を合わせる ● 類似プラグイン ○ twilight.nvim ○ limelight.vim ○ goyo.vim dim

Slide 10

Slide 10 text

© DeNA Co., Ltd. 10 4 ● Snacks.dim() (Snacks.dim.enable()) ○ 他のスコープを暗くする dim

Slide 11

Slide 11 text

© DeNA Co., Ltd. 11 4 ● Snacks.dim.disable() ○ 他のスコープを明るくする dim

Slide 12

Slide 12 text

© DeNA Co., Ltd. 12 5 ● https://github.com/folke/snacks.nvim/blob/main/docs/git.md ● Git のユーティリティ git

Slide 13

Slide 13 text

© DeNA Co., Ltd. 13 5 git ● Snacks.git.blame_line()
 ○ git blame の内容をポップアップウィンドウで表示する

Slide 14

Slide 14 text

© DeNA Co., Ltd. 14 6 ● https://github.com/folke/snacks.nvim/blob/main/docs/gitbrowse.md ● Web ブラウザで Git リポジトリを開く(例: GitHub) gitbrowse

Slide 15

Slide 15 text

© DeNA Co., Ltd. 15 6 gitbrowse ● Snacks.gitbrowse() (Snacks.gitbrowse.open()) ○ Git リポジトリの対象行を Web ブラウザで開く

Slide 16

Slide 16 text

© DeNA Co., Ltd. 16 7 ● https://github.com/folke/snacks.nvim/blob/main/docs/indent.md ● インデントガイドとスコープを可視化する(デフォルト: 有効) ● 類似プラグイン ○ indent-blankline.nvim ○ mini.indentscope ○ hlchunk.nvim indent

Slide 17

Slide 17 text

© DeNA Co., Ltd. 17 7 ● Snacks.indent.disable()
 ○ インデントガイドの可視化を無効にする indent

Slide 18

Slide 18 text

© DeNA Co., Ltd. 18 7 ● Snacks.indent.enable()
 ○ インデントガイドの可視化を有効にする indent

Slide 19

Slide 19 text

© DeNA Co., Ltd. 19 8 ● https://github.com/folke/snacks.nvim/blob/main/docs/layout.md ● レイアウト ● 試せていない layout

Slide 20

Slide 20 text

© DeNA Co., Ltd. 20 9 ● https://github.com/folke/snacks.nvim/blob/main/docs/lazygit.md ● lazygit のラッパー ● 試せていない lazygit

Slide 21

Slide 21 text

© DeNA Co., Ltd. 21 10 ● https://github.com/folke/snacks.nvim/blob/main/docs/notify.md ● 通知を送る関数 notify

Slide 22

Slide 22 text

© DeNA Co., Ltd. 22 10 ● Snacks.notify('{string}')
 ○ 対象の文字列を通知する notify

Slide 23

Slide 23 text

© DeNA Co., Ltd. 23 10 notify ● レベル別に4つの関数がある ○ Snacks.notify.error()
 ○ Snacks.notify.info()
 ○ Snacks.notify.notify()
 ○ Snacks.notify.warn()


Slide 24

Slide 24 text

© DeNA Co., Ltd. 24 11 ● https://github.com/folke/snacks.nvim/blob/main/docs/profiler.md ● Neovim 用の低オーバーヘッドの Lua プロファイラー ● いくつかの関数を他のプラグインで上書きしているとエラーになるため 試せていない profiler

Slide 25

Slide 25 text

© DeNA Co., Ltd. 25 12 ● https://github.com/folke/snacks.nvim/blob/main/docs/rename.md ● 別プラグインをサポートする、LSP 統合ファイルのリネーム ● 試せていない rename

Slide 26

Slide 26 text

© DeNA Co., Ltd. 26 13 ● https://github.com/folke/snacks.nvim/blob/main/docs/scratch.md ● スクラッチバッファ ● 試せていない scratch

Slide 27

Slide 27 text

© DeNA Co., Ltd. 27 14 ● https://github.com/folke/snacks.nvim/blob/main/docs/terminal.md ● ターミナルウィンドウ ● 類似プラグイン ○ toggleterm.nvim ○ ugaterm.nvim terminal

Slide 28

Slide 28 text

© DeNA Co., Ltd. 28 14 ● Snacks.terminal.toggle()
 ○ ターミナルウィンドウの表示/非表示を切り替える terminal

Slide 29

Slide 29 text

© DeNA Co., Ltd. 29 15 ● https://github.com/folke/snacks.nvim/blob/main/docs/toggle.md ● 各プラグインのトグル ● Snacks.toggle.xxx() でトグルする toggle

Slide 30

Slide 30 text

© DeNA Co., Ltd. 30 15 toggle ● Snacks.toggle.dim() ○ dim をトグルする ○ なぜか効かない

Slide 31

Slide 31 text

© DeNA Co., Ltd. 31 16 ● https://github.com/folke/snacks.nvim/blob/main/docs/util.md ● ユーティリティ ● 試せていない util

Slide 32

Slide 32 text

© DeNA Co., Ltd. 32 17 ● https://github.com/folke/snacks.nvim/blob/main/docs/win.md ● フローティングウィンドウや分割ウィンドウの管理 ● 試せていない win

Slide 33

Slide 33 text

© DeNA Co., Ltd. 33 18 ● https://github.com/folke/snacks.nvim/blob/main/docs/zen.md ● zen mode で集中してコーディングする zen

Slide 34

Slide 34 text

© DeNA Co., Ltd. 34 18 ● Snacks.zen() (Snacks.zen.zen()) ○ zenn mode を切り替える zen

Slide 35

Slide 35 text

© DeNA Co., Ltd. 35 18 ● Snacks.zen.zoom()
 ○ ズームを切り替える zen

Slide 36

Slide 36 text

© DeNA Co., Ltd. 36