はじめに
前回は、NeoVimの環境構築に挑戦しました。
今回は、Vim初心者の私が実際に使ってみて感じた「率直な感想」や、思わず頭を抱えた「困りごと」を記録していきたいと思います。
前回の環境構築編は"こちら"から確認ください!
ベテランの皆さんにとっては「自分も昔はここで詰まったな」と懐かしく感じたり、あるいは「そんな解決策があるのか!」と新たな発見があったりするかもしれません。
それでは、私のVim奮闘記、始めていきましょう!
第1章 文字が打てませんけど……?(モードの洗礼)
私: 「PHPの開始タグ Vim: (...)
私: 「あれ?、もう1回 (<連打)」
Vim: (...)
1. 「待ち」状態の罠
普通のテキストエディタなら、キーを叩けば文字が出ます。
しかし、Vimでは命令(コマンド)を待っているノーマルモードになっていました。
Vim初心者が最初に味わう洗礼を受けました。
2. insertモードとの出会い
じゃあ、どうやって文字を打つんだと調査すると、iキーを押してinsert (挿入)モードに切り替えなければならないというルールを知りました。
普段、キーを押せば文字が出るという当たり前の世界に痛感しました。
3. 保存にも苦戦
PHPのコードを書き終え、いよいよ保存の時。
長年の習慣で無意識に Cmd + S(あるいは Ctrl + S)を叩き出していました。
すると、画面には保存どころか「s」が連打されています。
これも、調査してみるとinsertモードを解除して、コマンドラインモードに入る必要があるようです。
1. Escキーで「ノーマルモード」に戻る
2. : (コロン)で「コマンドラインモード」を呼び出す
保存にも、多くの種類がありました
|
:w |
書き込み、Vimは開いたまま | こまめに進捗を残したい時に利用 |
| :wq | 書き込んで、終了 ターミナルに戻る | 書き終えて、PHPを実行したいときなど |
| :q | 保存せず、終了 | 一度リセットしたいときなど |
第2章 移動・編集の基本
1.移動の基本 hjkl
ここが1番理解できなかった。
普通のエディタは矢印で操作するが、Vimでは「h」「j」「k」「l」で移動する。
・h:左
・j:下
・k:上
・l:右
最初は操作に慣れることができず、矢印キーを使ってしまったり、「wasd」の直感性の優れさに感動していたが、
徐々に使ってみると、ホームポジションから崩さない設計になっていることになっていることに気づき、hjklである理由も徐々にわかってきました。
2. もっと効率的に移動するために
使ってみるうちに、徐々に最初の疑問は減ってきましたが、
代わりに新しく1個の疑問を思いついてきました。
「これ、hjkl連打しないといけないの?・・・」
100行下に移動のために、jを100連打するわけにもいかないので、もっと効率的な移動方法の調査を始めました。
下記は基本的な操作です。もっと効率的な方法があると思います。
・単語ごとの移動
| w | 次の単語の先頭へ |
| b | 前の単語の先頭へ |
| e | 単語の末尾へ |
・先頭・末尾の移動
| 0 | 行の先頭 |
| $ | 行の末尾 |
| gg | ファイルの先頭 |
| G | ファイルの末尾 |
| % | 対応する括弧に移動 |
・大きく移動
|
Ctrl + d |
画面半分下に移動 |
| Ctrl + u | 画面半分上に移動 |
・hjklの複数回移動
| 数字 + hjkl | 数字分 移動 |
3. おすすめのプラグイン
この章では、入れてみてよかったプラグインを紹介していきます。
telescope nvim
検索に特化したプラグインです。
下記のようなものをあいまい検索が可能です。
・ファイル検索
・文字列検索
・最近開いたファイル
・プロジェクト
VSCodeでは検索の手段として使ってましたが、NeoVimでは移動の手段で使用するため、
ファイルを探すという行為を消すことができるのが良いと思いました。
Comment.nvim
gccを打つだけで、そのファイルの拡張子に対応したコメントが自動で挿入されます。
gc + モーションで複数行コメントや、段落ブロックの一括コメントアウト、検索+コメントアウトなど複雑な操作も可能です。
4. まとめ
■ NeoVimが良かった場面
NeoVimにもはっきりとした強みがありました。
起動が速い、動作が軽いキーボードだけで完結できる
特に感じたのは、 ちょっとした修正や確認が圧倒的に速い
設定ファイルをサッと開いたり数行だけ修正するログを軽く見る
こういう「軽い作業」に関しては、かなり快適でした。
■ VS Codeの方が良かった場面
複雑な開発になるほど、いつも利用しているVSCodeの強さを感ました。
拡張機能が豊富で、すぐに環境が作れる
GUIで直感的に操作できる
AIや画像系など、新しい機能への対応が速い
特に、画面共有などするシーンでは、VSCodeのほうが主流のため
見る人が理解しやすいメリットがあったと思う
■ 実際の使い分け
使っているうちに、自然とこんな感じに落ち着いた。
VSCode => 複雑な開発、マウスキーボード、モニターなど環境が整っている環境
NeoVim => 軽微な改修、外出先など
■ 使ってみて思ったこと
最初は「どっちがいいのか」で考えていたけど、
実際にはそういう話ではなかった。 それぞれに得意な場面がある。
大谷翔平のように全てをこなすのが理想ではあるが
バッターはバッター、ピッチャーはピッチャーのように、それぞれ得意な役割に集中させた方が、結果的に効率がいい。
だからこそ、強みを活かして使い分けていきたい。