[[📒Productivityを上げるために大切な100のこと]] No30. 🥈
----
[[Vim]]というエディタをご存知だろうか? 一般的には以下のように言われている。
- 高度にカスタマイズ可能
- 使いこなせば非常に効率的なエディタ
- 使いこなすまでが大変
私は[[Vim]]を非常に気に入っているが、==すべてのことに[[Vim]]を使うべき==とは思っていない。むしろ、[[Vim]]を使うのはターミナルで1つのファイルを素早く確認したり、数行修正するときくらいだ。
## もともと懐疑的だった[[Vim]]
もともと私はアンチ[[Vim]]だった。なぜなら、[[AutoHotkey]]を使ってOSレベルで効率的なキーバインドを実現していたからだ。その全容は[[🦉Spinal reflex bindings template]]というリポジトリで管理している。
[[🦉Spinal reflex bindings template]]の設計思想は[[Vim]]のモードに近しいものがある。だからこそ、それに満足しており、苦労してまで[[Vim]]を覚える気にはなれなかったのだ。
ところが、このときの私は大きな誤解をしていた。**私が分かったつもりでいた[[Vim]]の思想は氷山の一角に過ぎなかったのである**。
それに気付かせてくれた名著こそが[[📚実践Vim]]だ。[[📚実践Vim]]を読んで、私ははじめて[[Vim]]の思想が何たるかを理解することができた。

## [[Vim]]の思想を取り入れる
[[Vim]]には明確な設計思想がある。最も特徴的なのは、デフォルトの状態が文字の入力ではなく、ファイルの閲覧/編集に特化した[[ノーマルモード]]であることだ。具体例を紹介しよう。
以下のようなテキストがあったとする。=="sasisuseso"と"tatituteto"の中身を大文字にしたい==とき、どのように操作するだろうか。
```vim
"aiueo" "kakikukeko" "sasisuseso" "tatituteto" 12345
```
操作の仕方は人それぞれだろう。ただ、[[Vim]]を使うとこうだ。
![[2021-08-02_vim.gif]]
入力したキーは `fsgUi"ft.` と10キーにも満たない。この一見して意味をもたないコマンドにもちゃんと意味がある。
| コマンド | 意味 |
| -------- | ---------------------------- |
| `fs` | 次に出現する`s`へ移動する |
| `gUi"` | `"`の内側を大文字に変換する |
| `ft` | 次に出現する`t`へ移動する |
| `.` | 直前の操作(`gUi"`)を繰り返す |
この操作に魅力を感じたのであれば、是非[[📒1時間でVimに惚れるチュートリアル]][^1]を読んでほしい。モードの説明など基本的な知識は省略しているが、[[Vim]]の魅力を必要最低限の分量で伝えているつもりだ。
## それぞれのツールにインストールする
先ほど紹介した[[Vim]]の思想は[[Vim]]以外のツールにもインストールできる。デフォルト設定で対応しているものもあれば、プラグインで対応しているものもある。エディタ[[Vim]]に比べて機能は劣るが、[[Vim]]の思想に必要な機能はほとんど揃っている。
私が使う主な[[IDE]]/エディタは3つある。それらについて取り入れ方をまとめてみた。
| 名前 | 取り入れ方 |
| ----------------- | ---------------------------------------- |
| [[IntelliJ IDEA]] | [[IdeaVim]]を使う |
| [[VSCode]] | [[VSCodeVim]]を使う |
| [[Obsidian]] | オプションで`Vim key bindings`をONにする |
他にもブラウザで使いたい場合、[[Google Chrome]]なら[[Vimium]]という[[Chrome Extension]]がある。[[IDE]]やエディタと比べて癖はあるが、一部の機能だけ使う分にはとても便利だ。
## 最低1ヶ月は使い続けてみよう
はじめて[[Vim]]を使う人は、最初の数日で挫折してしまうことが多い。**テキスト入力という欠かせない作業で日頃のスピード感が出ないため、大きなストレスや障壁になる**からだ。
だが、そこで諦めず[[📗最低1ヶ月は試す]]ようにしてほしい。私の場合も慣れるまでに1ヶ月はかかり、[[Vim]]の思想から抜け出せなくなるには半年~1年の時間がかかった。一朝一夕で習得できるものではない。
もし、1ヶ月挫折せずに続けることができ、その後に[[Vim]]の思想から離れたくないと感じたら勝ちだ。文字に関するすべての編集作業に対して、ステージが変わったと思えるだろう。
[^1]: 2021-08-02時点では[[📗4章 テキストオブジェクト]]まで執筆完了