vim操作

:50,100s/XXX/OOO/g 50行~100行の全てのXXXをOOOに置換 :1,$s/XXX/OOO/g 全行の、全てのXXXをOOOに置換(1,$ = 全行)

:%s/XXX/OOO/g 上と同義(% = 全行) :%s/XXX/OOO/gc 全行のXXXをOOOに確認しながら置換

:sは置換コマンド。 最後のgは一行に幾つあっても置換を行う(逆に gが無い場合は一行に一置換)

:/~は検索。 つまり :/XXX でハイライトしておいて :%s//000/g としても同じこととなる

[組合せ置換]

:g/SSS/s/XXX/OOO/g SSSを含む行の、XXXをOOOに置換

[マーク]

m? マークを付ける ? は a-Z の一文字

`? マークの場所に移動 '? マークの行に移動

別位置で d`? マーク?から現在を、カット 別位置で y`? マーク?から現在を、ヤンク

別位置で d'?, y'? マーク行から現在の行を、カット・ヤンク

[マクロ]

qx 操作の記録 x は a-z の一文字 qX 操作の追記 X は a-z のに該当する大文字

q 記録終了 @? 記録を再生 @a , 5@a

@@ 直前のマクロを再生 :dis qで記憶したバッファの一覧を表示

[Shell]

:sh 一時的にデフォルトシェルを呼び出し⇒exit で vi へ戻る。

:!コマンド viを中断してコマンドを実行(シェル変数は引き継いでいない) viの扱いは、新たなシェルとして扱われているようだ。

:!perl foo.pl

[カレントディレクトリ]

:cd カレントディレクトリを表示 :cd D:/data/ カレントディレクトリを変更

[バッファのリスト]

:ls リストの表示(番号)

:buffer N N番を開く :bN N番を開く

:bn 一つ前のバッファを開く :bp 一つ後のバッファを開く

[マルチウインドウ]

C-w ウインドウモードに切り替え

n (new) 空のウインドウを開く s (share,separate) ウインドウを分割(水平)

v インドウを分割(垂直) C-w(もう一度) 次のウインドウに移動

q (quit) 終了(バッファを消す) c (close) 閉じる(バッファは残る)

r ウインドウの位置を交換 o (only) カレント以外のウインドウを閉じる

[Vim付属のエクスプローラで簡単にファイルを開く]

:Explore ディレクトリとファイルを一覧表示

:Explore D: Dドライブのディレクトリとファイルを一覧表示 カーソル下のファイルを開く、ディレクトリに移動する

o カーソル下のファイル、ディレクトリを別のウィンドウで開く p カーソル下のファイル、ディレクトリをプレビューウィンドウで開く

x カーソル下のファイルを関連付けられたアプリケーションで開く s ファイルの並び順を変更する(押すたびに、ファイル名、サイズ、日付が切替る)

r ファイルの並び順を逆にする i ファイルの詳細情報を表示する

- 一つ上のディレクトリに移動する ? ヘルプを表示する

[grepコマンド]

:grep (-r) pattern filename 検索/再帰検索

:copen 検索結果一覧を見る :clist(:cl) リスト表示

:cc[n] n番目に見付かった位置へ :cnext(:cn) 次に見付かった位置へ

:cprevious(:cp) その前に見付かった位置へ

[入力中の補完]

C-p カーソル位置よりも前にある単語で補完 C-n カーソル位置よりも後にある単語で補完 C-x C-f ファイル/ディレクトリの補完

[数値の増減]

C-a インクリメント(10進/8進/16進を自動判別)

C-x デクリメント(〃)

[Diff機能]

:diffsplit "filename" 水平分割 :vert diffsplit "filename" 垂直分割(verticalが本当)

[タブ/スペース変換]

:set expandtab タブをスペースに変換する

この状態で :retab 現在表示されているtabを、全てスペースに変換 :set unexpandtab タブをスペースに変換しない

この状態で :retab![new_tabstop] スペースがtabに変換される。 new_tabstopが設定されないときは、:set tabstopにより設定されている値で置換される。

[コマンドラインへのペースト]

C-r C-w カーソルの乗っている単語をペースト

C-r C-a カーソルの乗っているスペース区切りの一文をペースト

[設定について]

:set デフォルトから変更した設定一覧 :set all 全設定項目一覧

[クリップボード操作]

(+, * はクリップボードのレジスタを表す。" は C^R と同意)

"+x クリップボードへ切り取り "+y クリップボードへコピー

"+p クリップボードから貼り付け(下の行へ) "+P クリップボードから貼り付け(上の行へ)

[フォルダを再帰的にgrep(要grep)]

:grep -r 検索文字列 * カレントフォルダ以下を検索 (-riで大文字小文字を無視)

:copen 検索結果を表示 :ccl 検索結果を閉じる

[シンタックスの指定]

拡張子の無いファイルを開いた場合、シンタックスが判別できず

viのような真っ白なテキストを編集することになる。 明示的にファイルタイプを指定して、シンタックスを適用するには、下記コマンドを実行する。

:set filetype=sh sh のシンタックスを使用する場合