みなさん、vimをちゃんと使ってますか?
SO Technologies ATOM開発担当の渡部です。
みなさんはLinuxサーバーに接続してテキストファイルを編集する場合、
エディタがvimしかないことが多い※ので
大半の方は基本的な使い方( INSERT/NORMALモード変更(i, ESC)とデータ保存(:w)と終了方法(:q) )しか知らないのではないでしょうか。
そういった方向けにもっとvimに興味を持ってもらうために、
- 普段使いできるvimの機能紹介
- 普段使っているエディタやIDEで使用できるプラグイン紹介
をしてみようと思います!
わりとメジャーな機能紹介となりますので、この記事はあくまで初心者向けです。
またこの記事の趣旨は「興味を持ってもらう」なので詳しい解説はしません!
こんなことできるんだ〜ぐらいに感じていただければ幸いです。
お手元にvim環境のある方はぜひ操作しながらやってみてくださいね!
vimの機能紹介
HTMLタグ内を削除する
↓HTMLファイルを開いて
↓Normalモードで「dit」と入力
そうするとカーソルがある場所の直近の深さのタグで囲まれた箇所すべてを削除します。
プログラムの{}内すべてを削除する
サンプルコードはGoogleの公式PHPライブラリから拝借して・・・
消したい箇所までカーソルを移動し
↓Normalモードで「di{」と入力
「{」を囲まれているカッコに変更することで各種カッコにも対応可能です。('"{([<等)
カッコの中を書き換える
↓カーソルを持ってきて
↓Normalモードで「ci{」と入力
↓InsertモードになっているのでコーディングしESCでNormalモードに戻る
ダブルクォーテーション内の文字をコピーする
↓カーソルを持ってきて
↓Normalモードで「yi"」と入力(コピー(yank)されます)
↓Normalモードで貼り付けたい位置にカーソルを持ってきてpと入力
Macでvimを使っている方は「:set clipboard+=unnamed」でクリップボードをMacと共有できます。
その他の機能など
こういった1単語やカッコで囲まれた文字列をひとかたまりとして扱うことをテキストオブジェクトといい、 これを活用することでvimのノーマルモードから効率的にテキストを編集することができます。
また少し脱線しますが
Vimを扱う上で割と重要なのが繰り返し「.」です。
これは直前の「テキスト編集作業」を繰り返し行うことができます。
例えばカッコ内を連続で削除する場合、繰り返しを使わない場合Normalモードで
「di{」カーソル移動「di{」カーソル移動...<br>
とする必要がありますが、
繰り返し「.」を使用すると
「di{」カーソル移動「.」カーソル移動「.」...
で同じことができます。
エディタやIDEプラグインについて
サーバーではvimだけど、コーディングにはVSCodeやIDEを使っている!
という方がほとんどかと思います。
そこでメジャーなエディタ及びIDEのプラグインをご紹介します。
一部機能が限定的ですが、上記で紹介させていただいた操作は可能です。
VSCodeのvimプラグイン
JetBrain製IDEのvimプラグイン
またはIDEにもvimプラグインが充実してます
JetBrain製IDE(PHPStorm, PyCharm, GoLand等)にはIdea Vimプラグインがあります
Google Colaboratoryのvimモード
Google Colaboratoryにもvimモードが追加されました!
最後に
このように巷にはVimが溢れています。それだけファンが多い証でしょう。 この記事で少しでもvimの「使いにくいエディタ」という印象が払拭されれば幸いです。 またこの機会にぜひともvimを使ってみて貰えればと思います!