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

Rubyエンジニアが vimrcを棚卸しして ナウいluaに書き換えた話

Avatar for zatton zatton
March 03, 2023

Rubyエンジニアが vimrcを棚卸しして ナウいluaに書き換えた話

Avatar for zatton

zatton

March 03, 2023
Tweet

Other Decks in Programming

Transcript

  1. © DeNA Co., Ltd. 3 zatton • 修士22卒の1年目 • Vim歴6年くらい

    • 趣味: ランニング(フル3:40)/登山(百名山35)/ スノボ/プロ野球観戦(横浜) DeNA サーバーサイドエンジニア @zatton @_zatton (今週作った!) © DeNA Co., Ltd. 自己紹介
  2. © DeNA Co., Ltd. 4 1 普段のNeovimでの開発 • ほぼ100%Neovimでコーディング •

    Alacritty + tmux + Neovim • Ruby on Rails, SQL, CSV, YML, etc Rubyの場合 1. v でneovim起動 (alias v=nvim) 2. telescope.nvimでファイルを開く 3. コーディングする ◦ LSPで定義ジャンプ ◦ aleでRubocopフォーマット ◦ quickrun.vimでRspec実行 ◦ NERDTreeでファイル操作 4. Neovimを閉じてgit操作 4 ↑昔書いた趣味PJのコード ←5年前とほぼ変わってない()
  3. © DeNA Co., Ltd. 5 2 • 起動が時々遅い!ナウい(死語)luaが良い!ほとんどのプラグインを遅延読み込みに init.vimをinit.luaに書き換え! 秘伝のinit.vim

    • dein.vim (プラグイン管理) • vim-colors-solarized (カラースキーム) • NERDTree (ファイルツリー) • Telescope.nvim (fuzzy finder) • quickrun.vim (コード実行) • lightline.vim (ステータスライン) • vim-signify (git diffを表示) • asyncomplete.vim (補完) • vim-lsp & vim-lsp-settings (LSP) • neosnippet.vim (スニペット) • ale.vim (Linter & Formatter) • open-browser-github (GitHubで開く) ナウいinit.lua • lazy.nvim • neosolarized.nvim (truecolor化!) • nvim-tree.lua • Telescope.nvim • jaq-nvim • lualine.nvim • gitsigns.nvim • nvim-cmp • nvim-lspconfig • cmp-vsnip • null-ls.nvim • openingh.nvim • tabline.nvim (タブライン) • nvim-insx (カッコ補完) これでさらに快適になるはず。。
  4. © DeNA Co., Ltd. 9 4 startuptimeを計測してみる • v --startuptime

    /tmp/startup.log で起動時のログが取れる と以前頼れる先輩エンジニアに聞いた • 遅い原因を探る。。。 • デフォルトで入っているスクリプトが悪さをしている?? • https://github.com/neovim/neovim/blob/master/runtime/ftplugin/ruby.vim を覗いてみる • どうやらRubyを起動しているっぽい??
  5. © DeNA Co., Ltd. 10 そして解決🎉 • vim.g.ruby_path = ""

    を追記すればRubyが起動しないようだ • 良くない副作用があるかもしれないが、ひとまず様子をみてみることに 5 ←実用的なNeovimが 起動50ms以下! 体感的にも速くなった! (Lazy.nvim見やすい)
  6. © DeNA Co., Ltd. 11 (たぶん)まとめ • 定期的にアップデートすべし ◦ init.vimからの移行に丸1日くらいかかった😣

    (土日👋) • Luaはいいぞ ◦ かなり書きやすい & カスタマイズしやすいと感じた • 「推測するな、計測せよ」はNeovimでも大事 ◦ startuptimeを活用すべし • Neovim最高! 6 今回紹介したinit.lua等々はCompassのGitHubリンクから見れます!
  7. © DeNA Co., Ltd. 12 おまけ:Ruby関連のはなし • jaq-nvim での Rspec実行の設定はシェル側で対応してる

    (いい方法あったら教えて下さい!) • LSP ◦ 結局古き良き(?) solargraph を使っている ◦ Shopify/ruby-lsp は定義ジャンプが未実装らしい (期待) ◦ RubyMine の LSP試してみたい (ケチなので多分しない) • Rubocop が遅い! ◦ fohte/rubocop-daemon を使ったらめっちゃ良かった ◦ Neovimが遅いとき原因がNeovimにあるとは限らない 7