Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜVim Neovimの環境構築をするのか / Why build a Vim Neovim environment?

なぜVim Neovimの環境構築をするのか / Why build a Vim Neovim environment?

Hiroya-W

May 27, 2022
Tweet

More Decks by Hiroya-W

Other Decks in Technology

Transcript

  1. Vim/Neovim n CUIのテキストエディタ(ざっくり) n Vim • Vi IMproved • 開発体制はBran

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

  3. 見てもらった機能 7 n 外観 • カラースキーム、シンタックスハイライト、 ステータスバー、バッファライン n 補完 •

    LSP、スニペット • コードフォーマット n UIの追加 • エクスプローラ、Git連携、 ファジーファインダー、ターミナル
  4. LSP登場前のコード補完 n コード補完サーバ • 文字入力に対応して、シンボル検索や構文分析、 コード補完を返すサーバ • 各プログラミング言語ごとにコード補完サーバが 独自に開発される •

    各開発環境が、各コード補完サーバを利用するため のプラグインを開発する • 開発環境とプログラミング言語の組だけプラグインがある • VisualStudio/Eclipseなど、プログラミング言語によって IDEを使い分けたのは全部の対応はしんどいから、か? 10 プログラミング言語のコード補完サーバ 開発環境
  5. Visual Studio CodeとLanguage Server Protocol n Visual Studio Code •

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

    Vim プラグインとしてインストールが可能 • Vim script と比較してエンジンが爆速なのでゴ リ押しが可能 • ユーザーによるライブラリの依存管理が不要 n プラグインの開発にも、 新しいやり方が出てきている • すごい
  7. 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
  8. 参考文献 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
  9. 参考文献 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