Road to Vimmer

ツール

概要

Vimmerになるために覚えていったコマンドを書き連ねていく。

動機

  • GUIエディタのショートカットには慣れたもののテキスト編集の速度が頭打ちになった気がする
  • 脱GUIエディタ依存(GUIエディタに依存したショートカットキーを覚えることと枯れたエディタであるVIMのショートカットキーを覚えることのどちらがコスパが良いか。viはあらゆるOSの標準エディタとして搭載されている)
  • ショートカットや矢印キーの使用によりホームポジションから手が離れることがタイピング速度の低下の原因になっている
  • ターミナル上でテキスト編集を高速に完了させたい気持ちが高まってきた

移動

h 論理行で左
j 論理行で下
k 論理行で上
l 論理行で右

^ 先頭に移動
0 インデントを無視して先頭に移動
$ 末尾に移動
+ 下の行の先頭に移動
- 上の行の先頭に移動

:3 3行目に移動

w 次の単語の先頭に移動(空白を含む)
b 前の単語の先頭に移動(空白を含む)

e 次の単語の末尾に移動(空白を含まない)
ge 前の単語の末尾に移動(空白を含まない)

% (, [, { などに対応する閉じタグに飛ぶ

ctrl+f 画面1つ分先へ
ctrl+b 画面1つ分戻る

ctrl+d 画面半分先へ
ctrl+u 画面半分戻る

H 画面最上部へカーソルを飛ばす
M 画面中部にカーソルを飛ばす
L 画面最下部へカーソルを飛ばす

{ 上の空行へ
} 下の空行へ

ctrl+y カーソルを固定して上へスクロール
ctrl+e カーソルを固定して下へスクロール

zEnter or zt カーソルがある行を画面最上部にする
zz カーソルがある行を画面中央にする
z- or zb カーソルがある行を画面最下部にする

fWord Word(任意の文字)へジャンプ
tWord Word(任意の文字)の1つ手前へジャンプ

FWord Word(任意の文字)へジャンプ(逆方向)
tWord Word(任意の文字)の1つ手前へジャンプ(逆方向)

;/, 任意の文字の検索結果に進む/戻る

. 繰り返し
; 繰り返し(逆方向)

v visual mode
ctrl+v visual block mode
V visual line mode

編集

i insert mode
I 先頭からinsert mode
a カーソルの1つ後ろからinsert mode
A 行末からinsert mode
l 行頭からinsert mode
o 1つ次の行からinsert mode
O 1つ前の行からinsert mode
s カーソル上の一文字を消してからinsert mode
S カーソル上の行を削除してからinsert mode

r 一文字編集(Enter後normal mode)
R 複数文字編集(ESC後normal mode)

dd カーソル行の削除
3+dd 3行分削除

d$ 末尾まで削除
d^ 先頭まで削除

dw 次の単語の先頭まで削除(空白を含む)
db 前の単語の先頭まで削除(空白を含む)

de 次の単語の末尾まで削除(空白を含まない)
dge 前の単語の末尾まで削除(空白を含まない)

diw カーソル上の単語を削除からinsert mode
daw カーソル上の単語と後続の空白も削除してからinsert mode

u やり直し
ctrl+r 再実行

p カットまたはコピーした行を貼り付ける

yy カーソル行をヤンク
yi( 記号で囲まれた中身をヤンク

cw 単語の変更、insert mode
c$ 末尾まで変更、insert mode
c^ 先頭まで変更、insert mode
c0 インデントを含まない先頭まで変更、insert mode
ci( 記号で囲まれた中身を変更
cit タグの中身を削除してinsert mode

>> インデントを1つ下げる
<< インデントを1つ上げる

ctrl+p vimで開かれている全てのファイルに出現した単語補完/前の補完候補を選択
ctrl+n 次の補完候補を選択
ctrl+y 選択中の補完候補に確定
ctrl+x ctrl+l 行補完(開かれているファイルの行とマッチするものを補完)
ctrl+x ctrl+f ファイルパス補完

:s/thee/the カーソルのある行で最初に見つかったワードを置換
:s/thee/the/g カーソルのある行全体で見つかったワードを全て置換
:1,100s/thee/the 1から100行目のそれぞれの行で最初に見つかったワードを置換
:1,100s/thee/the/g 1から100行目内で見つかったワードを全て置換
:%s/thee/the/g ファイル全体から見つかったワードを全て置換
:%s/thee/the/gc ファイル全体から見つかったワードを確認しながら置換

検索

/ 語句検索 nで前方に移動、Nで後方に移動

挿入ノーマルモード

ctrl+o 一度だけノーマルモードのコマンドを実行した後挿入モードに戻る

その他メモ

  • 基本的なコマンドを覚える(反復練習)
  • オペレーター+数値+モーション(基本の応用)

練習用ドリルつくった

参考

  • vimtutor(vimに入っているチュートリアル)

関連書籍