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

NeoVim v0.5がアツい!

NeoVim v0.5がアツい!

D497c45a1fb82c383c62ef994a7c0fdc?s=128

SHUN/しゅん

March 08, 2021
Tweet

Transcript

  1. NeoVim v0.5がアツい! 1

  2. ⾃⼰紹介 名前: SHUN/しゅん 学年: ⾼専新3年⽣ 得意⾔語: TypeScript、JavaScript、Haskell、など 得意分野: Webがチョットデキル、TSの型芸、CI/CD Twitter:

    @shun_shobon GitHub: @shun-shobon 2
  3. 話すこと 3

  4. NeoVimの新バージョンv0.5がアツい! 4

  5. NeoVimとは? Vimからforkされたプロジェクト Vimは20年近く開発が続いていて、古いコードで書かれたものが多かったりパッチの受け⼊ れに慎重になりがち そこで、NeoVimという新しいプロジェクトが⽴ち上がった リファクタリングや新機能追加を積極的に⾏い、モダンなCLIエディタ(?)を⽬指すというも の 5

  6. v0.5とは? NeoVimの現在のStableバージョンはv0.4 v0.5は現在絶賛開発中のバージョン(2021/03/07現在まだNightly) 6

  7. v0.5で追加(予定)の新機能 Luaのネイティブサポート Treesitterのネイティブサポート LSP Clientのネイティブサポート 7

  8. Luaのネイティブサポート Vimの設定ファイルがLuaで書けるようになります set number inoremap <silent> jj <Esc> vim.wo.number =

    true vim.api.nvim_set_keymap("i", "jj", "<Esc>", { noremap = true, silent = true }) 8
  9. VimScriptでよくね? 9

  10. VimScriptは遅い(絶望的に) ⽂法が曖昧すぎてJITコンパイルが不可能 ↑のせいでソースコードのパース処理を毎回⾏ってる 結果: For⽂等のループ処理が遅くなってしまう 10

  11. Treesitterのネイティブサポート 11

  12. Treesitterとは? 構⽂解析ツール VimのSyntax Highlightは正規表現で⾏われており、複雑なSyntaxや、動的なSyntaxの判定は ⾏うことができなかった Treesitterによって⽂脈にそった構⽂解析を⾏うことができ、これによってよりきれいな Highlightができるようになる 12

  13. LSP Clientのネイティブサポート 13

  14. LSPとは? Language Server Protocolの略 IDEが必要とする型やメンバーの⾃動補完、変数やメンバーの定義参照、変数やメンバーの定 義参照などサービスとして提供する VSCodeなどが⽤いている 14

  15. LSP Clientのネイティブサポート 旧Vim、NeoVimでは有志の⽅が作ったプラグインを⽤いてLSP Clientを使っていた v0.5ではこれがネイティブでサポートされたのでより⼿軽にLSPを使⽤することができるよ うになった しかもLuaで書かれてる、速い(多分) 15

  16. NeoVim v0.5は新機能が盛りだくさん! 16

  17. でも 17

  18. Vimも負けてない 18

  19. Vimの新機能 19

  20. Vim9Script 20

  21. Vim9Script 「遅いVimScript」の現状を打破するために作られた新たなVimScript 既存の⽂法を⼤規模に改変し、JITコンパイルにも対応 JITコンパイルしないLuaよりも速いらしい 21

  22. まとめ 22

  23. みんなVim/NeoVimを使おう! 23