プログラマ的京都生活

2010年07月18日

[]操作一覧

自分用メモ。


知っていたもの

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

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

移動系

nggn行目へ移動
w単語単位に移動
W空白、タブ単位に移動。記号を含んでいる場合などに便利
bwの逆
BWの逆
z<Enter>現在のカーソル行がページの先頭になる
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/newoldnewに置換。%を付けるとファイル全部。付けなければカレント行。あとはヴィジュアルモードで選択してから使うとその範囲内だけとなる。
:%g/pattern/dpatternにマッチした行を削除する
:di(splay)レジストリの内容を確認。"0pのようにして貼り付け

ファイル処理

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

複数ファイルの取り扱い

vim xxx.js yyy.js zzz.js3つのファイルを開く。ただし表示は最初のxxx.js
:next次のファイルを表示
:Next(:previous)前のファイルを表示
:first最初のファイルを表示
:last最後のファイルを表示
:argsargument 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。タグ全体を削除。


参考サイト