*nixで過ごす日々

PCでの作業に役立つ情報を提供するブログ

人生が変わったテキストエディタ&IDEの機能・プラグイン

プログラミングで必ず使うことになるテキストエディタorIDE。
私が今まで使ってきた中で人生が変わるほどの衝撃を受けたソフトウェアの機能やプラグインを紹介しようと思う。
紹介順は衝撃を受けた日付が古いものから順にしていく。

ソフトウェアによっては別名で提供されていたりするので、良さそうなものがあったら「自分が使っているソフトウェア名」+「紹介する機能・プラグイン名」で検索してみると良いだろう。

1. カラーテーマ (Sublime Text)

色なんて背景が白いか黒いかしかの違いしかないと思っていたが、カラーテーマとシンタックスハイライトが合わさる事で見やすさが全然違う事を知る。
Sublime Textのデフォルトテーマのmonokaiが個人的なおすすめ。

2. コマンドパレット (Sublime Text)

エディタのあらゆる機能を検索・実行できる。
今思えばemacsM-xとかが元祖なんだろうなとは思うが、私が初めてこの機能を知ったのはSublime Textだった。

3. 自動保存 (Visual Studio Code)

C-sの押し忘れに絶望を感じる中、自動保存を利用し始める。
Sublime Textの自動保存がお行儀が悪かったため使っていなかったと記憶しているが、vscodeの自動保存は普通に良いことに気付く。

4. キーマップ・キーバインド (emacs)

キーボードショートカットはソフトウェア内全体で作用するものと思っていたが、モード毎にキーマップが存在する場合があることをemacsで知った。
どういうことかというと、
テキスト編集している時にC-sはファイル保存だとする。
しかし、C-fで検索に入った時はC-sは次を検索になるといった感じ。
同じキーの組み合わせでもキーマップが別であれば設定可能だと知った時は衝撃的だった。
また、C-x C-xの様に同時押し以外にもキー入力の組み合わせができることを知ったのも衝撃的だった。

5. undo-tree (emacs)

emacsプラグイン
undo/redoの履歴をgitのツリーの様に表示し、移動ができる。
C-z連打して、あれ?あれには戻れないのか…なんてことがなくなる。
人生変わるレベルのプラグインだと思うのだが、vscodeとかではなさそうに見える…なぜ…

6. volatile-highlights (emacs)

emacsプラグイン
置換したり、挿入したりした時にその部分をハイライト表示する。
カーソルの位置とは違うところが変わった時にどこが変わったか把握しやすくなる。

7. ace-jump (emacs)

emacsプラグイン
いくつかのキーストロークでどんな場所にも移動できるというプラグイン
マウスに手を動かさなくても、ポン・ポン・ポンってキーを押すと移動できるのは革新的だった。

8. rainbow-delimiters (emacs)

emacsプラグイン
対応する括弧を色分けして表示する。
プログラミングしてると((()))という感じで括弧が入れ子になることがあるが、ちゃんと括弧を閉じたかどうかわかりやすくなる。
特にlispは括弧地獄なため救世主のように思えた。

9. magit (emacs)

emacsプラグイン
gitはコマンドラインを使うものと思っていたが、エディタの中からでもgitが使えるんだと知った。
今は一周回ってsource treeとかsublime mergeとかguiでマウスポチポチでできる方が良いと思っているが、ちょっとコミットしたりする時はエディタ内のgitで済ませるのが良いと感じている。

10. which-key (emacs)

emacsプラグイン
押されたキーから派生するキーバインドを表示してくれる。
エディタのキーバインドとか覚えてらんないよと思っていたが、すべてを覚えるのではなくトリガーを覚えて、あとはwhich-keyが教えてくれる通りに押せば良い。
キーバインドは覚えなくても使えるというパラダイムシフトが起こった。

11. 定義ジャンプ (Intellij IDEA)

他のエディタでも普通にあるし存在は知っていたが、うまく使えていなかった。
仕事を始めたのと同時期にJetbrainsのIDEを使い始めて、定義ジャンプの便利さを知る。
vscodeではピークエディタが開くだけだが、Jetbrains IDEは定義元のファイルを開く。
個人的にはJetbrains IDEの挙動の方がしっくりきた。

12. Indet Rainbow (Intellij IDEA)

インデントの階層ごとに色をつけるあれ。
たぶん本家はvscodeプラグインこれ
職場の人が使っているのを見てJetbrains IDEで同じのないかなと検索したらあった。
pythonを使う人は絶対に導入すべき。

13. モーダルエディット (Intellij IDEA & IdeaVim)

モードを切り替えてテキスト編集を行う機能のこと。要はvim
vimじゃなくてもモーダルエディットができることをJetbrains IDEプラグインIdeaVimで知る。
vimとそのエミュレータは行に対する編集機能が強い。
仕事では既存のコードに手を加えることが多くなるため、この行に対する編集機能が効いてくる。
いちいちマウスに手を伸ばして、選択して、キーボードに手を戻して編集して…がなくなる。

しかし、現在vimを使っていない人は絶対に手を出してはいけない。あとに戻れなくなるぞ。
これから先、新しい革新的なエディタが出てきてもモーダルエディットが出来ないor機能が十分じゃないからと言って移行できなくなってしまう。
そんな機会損失をするくらいなら面倒だなと思いながらマウスで操作するほうが全然良い。
キーボードで操作してもマウスで操作しても大して速度は変わらない。
vimmerの人で「いや、キーボード操作の方が絶対に早い!」とう言う人はキーボード操作を完全に覚え、慣れているだけ。
マウスで操作する流れを構築して慣れてしまえば同じくらいの速度で作業ができる。
正確に時間を測ればvimでキーボードだけで操作するほうが確かに早いだろうが、これからvimを覚える人はキーバインドを覚えるところから始めないと行けない。
そんなことに時間かけるくらいなら、ゲームして遊んでたほうがマシだと個人的に思う。
現在学生で時間を無限に余らせているのなら話は別だが、社会人等の時間に限りがある人はモーダルエディットなんて覚えなくて良い。

vimチートシート見ながら、インサートモードに入って、編集して、ノーマルモードに戻って、上書き保存、終了の操作ができれば十分。

14. vim-surround (vim)

本家はvimプラグイン。私はIdeaVimの機能で知る。
pythonとかを書いているときにシングルクォートで文字列を書いていて、「やべっ、コーディング規約で文字列はダブルクォートだった」なんてことがよくある。(あるよね?)
そんな時にvim-surroundは一瞬でシングルクォートをダブルクォートに書き換えることができる。

15. Dev Containers (Visual Studio Code)

Dockerのコンテナ内にソースファイルをマウントし、コンテナ内で開発作業ができる。
ホストマシンの環境を一切汚さずに開発できるのがすごく良い。