操作一覧

自分用メモ。

知っていたもの

私のvimレベルはこんなもの。

j,k,h,l ↓,↑,←,→
^ 行頭に移動
$ 行末に移動
gg 1行目に移動
G 最終行に移動
:n n行目に移動
/何らか 何らかの文字をファイル中から検索。なお、検索結果ハイライトをoffにするには:nohとする。
u アンドゥ
Ctr+r リドゥ
x 一文字削除
dd 一行削除
yy 一行コピー。ヤンクすると呼ぶ。
p ペースト
複数行削除 5ddのように、数字+コマンドでそのコマンドを数字の数だけ実行したことになる。

移動系

ngg n行目へ移動
w 単語単位に移動
W 空白、タブ単位に移動。記号を含んでいる場合などに便利
b wの逆
B Wの逆
z 現在のカーソル行がページの先頭になる
Ctr+o カーソル位置を戻る。Ctr+iで進む
% 対応する括弧へ移動
Ctr+f 次のページへ
Ctr+b 前のページへ

検索系

f何らか カーソル位置から右に向かって何らかの場所まで移動。;で次検索。,で前検索
F何らか fの逆
t何らか 何らかの文字のひとつ前の文字に移動
* 検索したい単語の上で*を押し、nで検索する。Nで逆検索

編集系

o カーソルの下の行にINSERT
O カーソルの上の行にINSERT
X バックスペース
d$ カーソル位置から行末まで削除
y$ カーソル位置から行末までコピー
ビジュアル選択後、J 複数行を1行にする
>> インデント
<< 逆インデント
g- 履歴を見るundo。a→b→undo→cという時、通常のundoだとcにしか戻れないがこれだとbに戻れる。g+はリドゥ
:%s/old/new oldnewに置換。%を付けるとファイル全部。付けなければカレント行。あとはヴィジュアルモードで選択してから使うとその範囲内だけとなる。
:%g/pattern/d patternにマッチした行を削除する
:di(splay) レジストリの内容を確認。"0pのようにして貼り付け

ファイル処理

:e(dit) ファイル名 ファイルを開く
:Ctr+x カレントディレクトリのパスを展開する。
:CdCurrent Vimのカレントディレクトリを現在のディレクトリにする。

複数ファイルの取り扱い

vim xxx.js yyy.js zzz.js 3つのファイルを開く。ただし表示は最初のxxx.js
:next 次のファイルを表示
:Next(:previous) 前のファイルを表示
:first 最初のファイルを表示
:last 最後のファイルを表示
:args argument listに読み込まれているファイルを一覧表示
:args xxx.js yyy.js zzz.jsとか:args **/*.js 開いてからargument listに追加する場合に使う
:argdo %s/hoge/fuga/g パイプ update 全argument listに対してhogeをfugaに置換し、更新する

画面系

:sp 横分割
:vs 縦分割
Ctr+w Ctr+w カーソルの画面移動
Ctr+w+J/K/H/L 画面自体の移動。レイアウト調整
Ctr+w+r 画面の上下左右入れ替え
:only 現在のウィンドウ意外を閉じる
:qall すべて閉じる

その他

コマンドラインでCtr+f コマンド履歴の表示
. 直前の操作の繰り返し
:w sudo:% rootとして保存。sudo.vimが必要
文字の上で:ascii その文字のasciiコードが取得できる
コマンドライン(もしくはインサートモードで)でCtr+r+" ヤンクした文字の貼り付け

組み合わせ

単語単位の置換 cwで、単語を削除しINSERTモードになる。
カッコの中だけ置換 (まで移動し、ct)と入力すれば、括弧内を置換できる。
;前まで削除 dt;
単語の大文字小文字の変換 vw~
複数行の先頭に任意の文字を入力 Ctr+vで選択後、IでINSERTモードにし、入力、ESCで全行に反映

INSERTモード時の操作

Ctr+W 直前の単語の削除
Ctr+U 入力した文字の削除(ただし同一行内)
Ctr+N 補完
Ctr+x, Ctr+o オムニ補完
Ctr+F ファイル名の補完
Ctrl+a カーソル位置の数字をインクリメント
Ctrl+x カーソル位置の数字をデクリメント

コマンド

:!外部コマンド vimから外部コマンドを実行できる 例 :!ls
:r!外部コマンド vimから外部コマンドを実行し、結果をカレント行に反映 :r!date

設定

set xxxx? 現在の設定状況を確認する
set xxxx& デフォルト値に戻す
set xxxx! on/offのトグル

プラグイン

  • pathogen.vim
    • bundleフォルダ直下にダウンロードしてきたものをそのままの形式で配置できるようになる。管理がキレイ。
  • YankRing.vim
    • ヤンクしたものをCtr+pとかCtr+nで巡回するようになる。
  • surround.vim
  • zen-coding.vim
  • neocomplcache.vim
  • unite.vim

surround.vim

挿入 y
変更 c
削除 d
単語 iw
単語+次の空白 aw
タグ内の文字列 it
タグを含んだ文字列 at
括弧内文字 ib
括弧を含んだ文字列 ab
ysiw" "で囲む
ys$" 行末まで"で囲む
yss" 行全体を"で囲む
cs"' "を'に変更する
cst 現在のタグをで囲む
ds" 囲っている"を削除
dst 現在のタグを削除

surround.vimじゃないvimの方

yiw カーソル位置の単語コピー
di" "で囲まれた内部の削除。di(など応用が効く
ciw カーソルがある位置の文字を削除し編集モードに
vat タグの開始から終了まですべてを選択。応用として、dat。タグ全体を削除。