5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BeeXAdvent Calendar 2024

Day 6

何故(neo)vimを使うのか

Last updated at Posted at 2024-12-05

始めに

neovimをメインエディタにして1年を過ぎました

VSCodeの一人勝ち状態が続いていて、The AI Code Editorを名乗るCursorやThe editor for what's nextを名乗る Zed、A post-modern text editor.を名乗るHelix、A Community-led Hyper-Hackable Text Editorを名乗るAtom後継のPULSAR等、魅力的な選択肢があり、IntelliJ IDEAVisual StudioEclipseApache NetBeansと言ったIDE等々色んな選択肢がありますが、今のところneovimから乗り換える予定はありません

そこで、何故そんなにneovimに愛着を感じているのかを考えてみました

軽い

  1. 起動に150msecしか必要としません
  2. 思いついた時に起動して、すぐに行動に移れます
  3. 速いのは正義です

測定ツールでの計測結果
スクリーンショット 2024-12-05 19.07.35.png

やりたい事がすぐに出来る

コードを書いていて、エディタに包含されているターミナルを開きたくなった時に、開き方をネットで調べていませんか?
画面を分割したくなった時はどうでしょう?メニューを探していませんか?
(neo)vimなら、キーを2つ3つ叩けば出来ます
自分で設定するせいか、すぐにキーを思い出せます
これって結構大きくて、フロー状態をずっとキープ出来るんですよね

エディタが成長する

素の(neo)vimって編集しか出来ません
自分の欲しい機能をひとつひとつ積み上げて、自分だけの環境を作成するのが楽しいですね。またひとつ強くなった的な
自分でセットアップしたので使いたい時に使いたい機能が使えるのは大きいです

今のプログラム用エディタって一通りの機能が揃っていますが、メニュー見てもどんな機能か分からなかったり、ファイルをコピーするのにファイラを開いたりと、逆にエディタに使われていませんか?

相談先がある

vim-jpってslackがありまして、vimは勿論、emacsやgolang, kosodateチャネルやjopboardまであります
generalチャネルで4100人を越えていました
ラジオもあります
プラグインの相談をすると、作者さんから直接アドバイスを頂くシーンも見たことあります

私の説明よりもTOMOYAさんのブログを見た方が早いかも知れません
エンジニアの楽園 vim-jp

お世話になっているプラグインの紹介(1部)

私の開発を支えてくれているプラグイン達です

ファイラー

mini.files
左カラムに常駐させず、必要な時のみ呼び出すスタイルです
ファイル操作がvimと同じでファイラ画面をファイル名を変更して、=で確定すると、実際のファイルもリネーム出来ます
フローティングに対応しているmini.filesを愛用しています
同様のファイラーだとoil.nvimが有名ですが、私の環境では起動が何故か遅く、瞬時に起動するこちらを使っています
下のマッピングで大分使い易くなりました

mapping.lua
mappings = {
    go_in      = '<CR>',
    go_in_plus = 'J',
    go_out     = '<BS>',
    reset      = 'R',
},
windows = {
    preview = true,
}

スクリーンショット 2024-12-05 10.52.50.png

ファジーファインダー

telescope.nvim
一覧からインクリメンタルで絞り込めるユーティリティです
主にBufferの切り替えに使っています

ファイル関係プラグイン

smart-open
上記のpluginです
直近開いたファイルの一覧を表示してくれ、インクリメンタルで検索できます

ターミナル関係

toggleterm.nvim
vim内にターミナルを表示してくれます
今はもっぱらFloatingで表示していますが、Windowに表示したい場合もあるのでキーバインドを検討しています
スクリーンショット 2024-12-05 10.54.18.png

自動補完

blink.cmp
定番は nvim-cmp になるかと思います
長い間使っていましたが、何かのタイミングで候補が表示されなくなるので、blink.cmpの開発が進んで、ある程度の設定がサポートされたタイミングでこちらに乗り替えました
今のところ、問題なく使えています
スクリーンショット 2024-12-05 10.56.04.png

日本語入力

skkeleton
SKKユーザーですので自ずとこちらに
OS側はMacSKKを使っています
時々、OS側のIMEを使っているのか、skkeletonのIMEを使っているのか分からなくなりますw
スクリーンショット 2024-11-29 15.23.42.png

カーソル移動

flash.nvim
移動したいワードの先頭の文字をタイプすると該当箇所にラベルが貼られ、タイプを進めるごとに選択肢が絞られていきます
希望するワードのところに数回のキーで移動出来るのは快適です

下は「bl」までタイプしたところです。後は移動したいところのキー(f, g, k, q, t)を打てば移動できます
スクリーンショット 2024-12-05 11.03.05.png

window移動

nvim-window
私の使い方だと精々左右に2分割ぐらいですが、その状況だと「,」 と 左Windowなら「a」右Windowなら「b」で移動出来ます

keymap.lua
vim.keymap.set("n", ",", ":lua require('nvim-window').pick()<CR>", { noremap = true })

編集系

vim-sandwich
テキストオブジェクト のプラグインです

単語を囲んでいる両方の「"」を「'」に変換出来たりします
無論「[aWord]」を「(aWord)」とかも出来ます
これが決まると気持ち良いです

docmentにありますが、下の設定を入れると思うように動くようになりました

keymap.lua
vim.keymap.set({ 'n', 'x' }, 's', '<NOP>')

お知らせ系コマンド系

Noice (Nice, Noise, Notice)
vimというと画面の一番下にコマンド行が表示されますが、これを画面中央で表示してくれるプラグインです
画面右上にカラフルなポップアップでお知らせもしてくれます
スクリーンショット 2024-11-29 15.22.13.png

検索補助

fzf ❤️ vim

ファイル内の検索文字列に一致するリストを表示してくれます
ファジーファインダーは上記のtelescopeを使っているのですが、今編集しているファイルのみの検索をサポートしているのはこのプラグインのみ(BLines)のようです

vim-jp slackでtelescopeのcurrent_buffer_fuzzy_findが対応していると思えて頂きました
yuys13さん、ありがとうございました

スクリーンショット 2024-12-05 11.08.46.png

開発系

lspsaga.nvim
下の機能を提供してくれます
使っているのは、1, 4, 6, 11ぐらいですね
それでも快適なプログラミング環境を提供してくれます

  1. Breadcrumbs
  2. Callhierarchy
  3. Code Action
  4. Definition
  5. Diagnostic
  6. Finder
  7. Float Terminal
  8. Hover
  9. Implement
  10. LightBulb
  11. Outline
  12. Rename
  13. Ui Beacon

今後やりたい事

testの実行をもっと早く

一番多く使っているのは、pythonなんですが、pytestの起動に(vim内で)Terminalを起動して、↑を押して前回コマンドを呼び出して実行すると2アクションかかっています
vim-testやquickrunから実行できれば1アクションで済みますので、是非実現したいですのですが、pytest.iniは見つけてくれるのですが、実際のテストの抽出が上手くいかず、0テストを実行しました的な結果が返っています

設定ファイルの整理

思いつくままに記載しているので、結構あちこちに分散しています
コメントアウトして放置なのも多々あります

text-objectをもっと身近に

まだ脳内リンクが完成していません

vimレベルの向上

まだまだカーソルキーに触れている時間もあるので、下の記事レベルぐらいにはなりたいですね
中級 Vim 操作

この記事がどなたかのお役に立ちますように

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?