Pray for Vim

gg

僕の青春を支えてくれたテキストエディタであるVimに感謝を込めたブログです。Vimだけではなくその他ツールの紹介もしています。Vimの操作性、Vimがもたらした影響などを機能とともに紹介できればと思います。

Vimを使おう

Vimはキーボード操作に徹底的に特化したテキスト編集機能を持つテキストエディタです。

テキストエディタの中でもemacsと同類のCLIという分類に入り、キーストロークだけですべての操作が完結します。

プログラマーの作業はマウスに触れる時間が少なければ少ないほど洗練されます。

まずはVimの基本的なカーソル移動である「hjkl」に慣れましょう。

次に「ft(FT)」で任意の文字列までひとっ飛びする技を会得しましょう、「;,」も駆使することを忘れずに。

/文字列」で文字列を探せます。「n(N)」と.(ドット)との相性は抜群です。

d(delete), c(cut), y(yank), p(paste)も駆使しましょう。ciwは頻出です。

i, I, a, A, o, Oでインサートモードに入れます。

ctrl-vshift-vの選択モードの挙動の違いを理解できてますか?

.(ドット), x, sも便利ですね。

マクロって使ったことありますか? qから任意のキーを押すと操作を記憶し始めます。もう一度qを押すと記録終了。qの後に押したキーを押すと先ほどの操作が丸々実行されます。ある程度構造化されたファイルを編集するときに真価を発揮します。

ターミナル操作もVim

tmuxを入れて以下のようなファイルを設定してください。

.tmux.conf

# tmux mode
set-option -g prefix C-t
unbind C-b

# transition of panes
bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R

# adjustment of pane size
bind -r H resize-pane -L 2
bind -r J resize-pane -D 2 
bind -r K resize-pane -U 2 
bind -r L resize-pane -R 2

# split the current pane virtically with |
bind | split-window -h
# split the current pane horisontally with -
bind - split-window -v

# use vi keybinds in the copy mode
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection

これで「ctrl-t + -」でペインを横に分割、「ctrl-t + |」で縦に分割できます。そして、ペイン間の移動を「ctrl-hjkl」で移動でき、ペインのサイズも「ctrl-HJKL」で調節できます。「ctrl-[」で選択モードになり。vまたはVで選択方法を変えて、enterでヤンクできます。

ブラウザもVimライクに

Vimiumというプラグインをブラウザに入れるとhjklでのスクロール操作、fでクリッカブルなエレメントの候補にキーが割り振れられ、キーを入力するとクリック操作が行われます。

OSのGUI操作もVimライクに

Homerowというアプリを入れればVimiumっぽくOSのGUI操作ができます。

マウス操作も最悪Vim

マウスに手をのばすことは邪道ですが、GUI操作が避けて通れないこともあるでしょう。それならばkarabinerを入れて、以下のような設定を追加してください。

github.com

ZZ

Vimの威力や、GUI操作にVimベースのインターフェースを提供するツールの便利さが伝わればと思います。Vimは高速な操作を追求した先に至る極地です。触ったことがない人もこれを機会に触ってみてください。


最近、Vimの開発者であるBram Moolenaarさんがお亡くなりになりました。彼の訃報に接し、彼が開発した偉大なエディタを称える記事を書かせていただきました。

Farewell, Vim's visionary: Bram Moolenaar.