Slide 1

Slide 1 text

࠷ۙͷNeovim͸ ͜Μͳײͬ͡Ά͍Α ੺ẂנϥΠτχϯάτʔΫʢAkarenga.LTʣ ୈ10ճ OKURA Masafumi, 2021-07-30

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લɿେ૔խ࢙ • ॴଐɿϑϦʔϥϯε • ಘҙͳݴޠɿRuby • ࢖͍ͬͯΔΤσΟλɿNeovim • ՝֎׆ಈɿKaigi on Rails, ʰϚελϦϯάVimʱ຋༁

Slide 3

Slide 3 text

ࠓ೔ͷςʔϚ

Slide 4

Slide 4 text

Neovim

Slide 5

Slide 5 text

Neovimͱ͸ • https://neovim.io/ • ݹ͔͘Β͋ΔΤσΟλͰ͋ΔVimͷϑΥʔΫ • LuaΛ࠾༻֦ͨ͠ுੑͷߴ͕͞΢Ϧ • 2021೥࣌఺Ͱ͸Vimͱҟͳͬͨํ޲ʹਐԽ͍ͯ͠Δ

Slide 6

Slide 6 text

࠷ۙͷNeovimࣄ৘ • LSPʢLanguage Server Protocolʣͷ૊ΈࠐΈ • TreeSitterͷద༻ʹΑΔ֦ு͞ΕͨγϯλοΫεϋΠϥΠτ • Floating WindowʹΑΔUIͷࣗ༝౓ͷߴ͞

Slide 7

Slide 7 text

LSP

Slide 8

Slide 8 text

LSP • https://microsoft.github.io/language-server-protocol/ • Microsoft͕։࢝ͨ͠ΤσΟλͷͨΊͷϓϩτίϧ • ิ׬ީิͷఏڙ΍ϦωʔϜػೳͳͲɺ༷ʑͳػೳΛඋ͑Δ • NeovimͰ͸ݱ࣌఺Ͱͷ࠷৽൛Ͱ͋Δv0.5ΑΓωΠςΟϒʹαϙʔτ ͞ΕΔ

Slide 9

Slide 9 text

TreeSitter

Slide 10

Slide 10 text

TreeSitter • https://tree-sitter.github.io/tree-sitter/ • ύʔαδΣωϨʔλͱύʔεϥΠϒϥϦ • ֤छϓϩάϥϛϯάݴޠʹରԠ • nvim-treesitterϓϥάΠϯΛ࢖͏͜ͱͰNeovimͷγϯλοΫεϋΠϥ ΠτΛஔ͖׵͑Մೳ

Slide 11

Slide 11 text

nvim-treesitter • https://github.com/nvim-treesitter/nvim-treesitter • ࠓݟͨΒNeovim v0.5Ͱ͸ಈ͔ͳ͍ͱॻ͍͚ͯ͋ͬͨͲɺ࢖ͬͯΈͨ ײ͡ಈ͍ͯͦ͏ • NeovimͷγϯλοΫεϋΠϥΠτ͕ΊͪΌ៉ྷʹͳΔ

Slide 12

Slide 12 text

Floating Window

Slide 13

Slide 13 text

Floating Window • Neovimͷ௨ৗͷόοϑΝͷ্ʹΦʔόʔϨΠ͢Δ΢Οϯυ΢ • API͔Β࡞੒Ͱ͖Δ • Gitͷ৘ใ΍Linterͷ৘ใΛग़͢ϓϥάΠϯ͕͋Δ

Slide 14

Slide 14 text

͓·͚ɿVimͱϚ΢εΦʔόʔ

Slide 15

Slide 15 text

VimͱϚ΢εΦʔόʔ • ࠷ۙͷVimʹ͸ʮόϧʔϯʯͱݺ͹ΕΔFloating Window૬౰ͷػೳ ͕͋Γɺ͔͠΋Ϛ΢εΦʔόʔʹରԠ͍ͯ͠Δ • Linterͷܯࠂ͕ग़͍ͯΔՕॴʹϚ΢εΛ͍࣋ͬͯ͘ͱܯࠂͷৄࡉ͕ද ࣔ͞ΕΔ • Neovimʹ͸ͳ͍ػೳ