Slide 1

Slide 1 text

なぜVim/Neovimの 環境構築をするのか ゆゆ君(@Hyuyu_kun) in あくあたん工房 2022/05/27

Slide 2

Slide 2 text

Vim/Neovim n CUIのテキストエディタ(ざっくり) n Vim • Vi IMproved • 開発体制はBran Moolenaar氏1人 n Neovim • Vimのforkプロジェクト • 複数人体制で開発し、Vimのソースコードをリファクタリング • Vim互換を残しながら、拡張性の実現 • Neovim API、非同期処理、Vimscript以外で書かれたプラグインの作成、ターミナル機能など • Vimの置き換え、IDE化をしようとしているわけではない 2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4 正しくはNeovim

Slide 5

Slide 5 text

configはGitHubリポジトリにあります 5 https://github.com/Hiroya-W/dotfiles/tree/main/config/nvim

Slide 6

Slide 6 text

デモします 6

Slide 7

Slide 7 text

見てもらった機能 7 n 外観 • カラースキーム、シンタックスハイライト、 ステータスバー、バッファライン n 補完 • LSP、スニペット • コードフォーマット n UIの追加 • エクスプローラ、Git連携、 ファジーファインダー、ターミナル

Slide 8

Slide 8 text

Vim/Neovimはまだまだ進化していく 8

Slide 9

Slide 9 text

ここ数年はLSPの恩恵が大きい 9

Slide 10

Slide 10 text

LSP登場前のコード補完 n コード補完サーバ • 文字入力に対応して、シンボル検索や構文分析、 コード補完を返すサーバ • 各プログラミング言語ごとにコード補完サーバが 独自に開発される • 各開発環境が、各コード補完サーバを利用するため のプラグインを開発する • 開発環境とプログラミング言語の組だけプラグインがある • VisualStudio/Eclipseなど、プログラミング言語によって IDEを使い分けたのは全部の対応はしんどいから、か? 10 プログラミング言語のコード補完サーバ 開発環境

Slide 11

Slide 11 text

Visual Studio CodeとLanguage Server Protocol n Visual Studio Code • コードエディタ! • Visual StudioはIDE • 拡張機能で機能を追加していくスタイル n Language Server Protocol(LSP) • Microsoftによって、開発ツールと言語サーバープロセ ス間で交換するメッセージを規定し、標準化された • 開発ツール側がLanguage Clientの機能を 持っていれば、どのプログラミング言語に対しても、 同じようにコード補完の機能を利用出来るように! 11 プログラミング言語のコード補完サーバ 開発環境 LSP

Slide 12

Slide 12 text

どうなったか? 12

Slide 13

Slide 13 text

13 https://speakerdeck.com/lighttiger2505/lspkamotarasitavimhurakuinfalsebian-hua-nisi-iwochi-seru?slide=13

Slide 14

Slide 14 text

14 https://speakerdeck.com/lighttiger2505/lspkamotarasitavimhurakuinfalsebian-hua-nisi-iwochi-seru?slide=18

Slide 15

Slide 15 text

導入も、開発もしやすくなった 15

Slide 16

Slide 16 text

最近のプラグイン事情 16

Slide 17

Slide 17 text

denops.vimの登場 17

Slide 18

Slide 18 text

denops.vimでプラグイン開発 18 n denops.vim • Vim / Neovim で同一コードを利用可能 • Vim プラグインとしてインストールが可能 • Vim script と比較してエンジンが爆速なのでゴ リ押しが可能 • ユーザーによるライブラリの依存管理が不要 n プラグインの開発にも、 新しいやり方が出てきている • すごい

Slide 19

Slide 19 text

Vim/Neovimを使い続ける理由 n キーボードだけですべて完結する操作感がいい n カスタマイズ性がいい • オールインワンより、自分が使うところだけを自分の手で設定していけるのが楽しい n 活発なコミュニティによって変化し続けていく様子を見ていきたい • Vim/Neovimのテキストエディタでどこまで出来るようになるのか 19

Slide 20

Slide 20 text

Vimチュートリアルやります(宣伝) 20

Slide 21

Slide 21 text

終わったらプラグインの設定もやる? 21 講習会じゃなくても、声かけてくれればいつでもやるよ

Slide 22

Slide 22 text

おしまい

Slide 23

Slide 23 text

Vim/Neovimどっちでも使える、が難しくなってきた n VimはVimscript、NeovimはLuaに • Vim/Neovimどっちでも動くプラグインを作るのが難しくなってきた • 今まではNeovimのリモートプラグイン機能を使ってPythonで書いていた • Vim ↔ vim-hug-neovim-rpc ↔ Neovim ↔ Python • Pythonはしんどいところがあったらしい n coc.nvim • LSPの機能が全部使えるようになるプラグイン • coc.nvim用のプラグインを追加出来るようにしている • ランタイムにNode.jsを使っているが、Node.jsなので依存関係周りがしんどい。でもよく出来ている 23

Slide 24

Slide 24 text

参考文献 n neovim とは何か? • https://vim.blue/what-is-neovim/ n Neovimがどういうプロジェクトなのかまとめ • https://qiita.com/lighttiger2505/items/440c32e40082dc310c1e n language server protocolについて (前編) • https://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4 n Language Server Extension Guide • https://code.visualstudio.com/api/language-extensions/language-server-extension-guide n LSPがもたらしたVimプラグインの変化に思いを馳せる • https://speakerdeck.com/lighttiger2505/lspkamotarasitavimhurakuinfalsebian-hua-nisi-iwochi-seru 24

Slide 25

Slide 25 text

参考文献 n Deno で Vim/Neovim のプラグインを書く (denops.vim) • https://zenn.dev/lambdalisue/articles/b4a31fba0b1ce95104c9 n vim-denops/denops.vim • https://github.com/vim-denops/denops.vim n 新世代の自動補完プラグイン ddc.vim • https://zenn.dev/shougo/articles/ddc-vim-beta 25