: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 のシンタックスを使用する場合