自分がわりとよく「あれなんだっけ」と思うことをまとめておきます。思いついたら追加します。
目次
置換
hogeをfooに置換する場合
最初のみ
:s/hoge/foo
一行
:s/hoge/foo/g
選択範囲(:’<,'> まで自動で入るので「s/before/after/g」で OK
:’<,'>s/hoge/foo/g
複数行
:<開始行>,<終了行>s/hoge/foo/g
ファイル全体 ※%=全体という意味
:%s/hoge/foo/g
最後にcを付けると置換前に確認する
たとえば一行置換を確認しながらならばこんなかんじ
:s/hoge/foo/gc
vimgrep
:vimgrep /hogehoge/ *.txt
最初にマッチしたファイルを開かないようにするには j フラグを使う。
:vimgrep /hogehoge/j *.txt再帰的に検索するには **(starstar) を使う。
:vimgrep /hogehoge/j **/*.txt検索結果は Quickfixリストに表示される。:copen で開き :ccl で閉じることができる。詳細は :he quickfix-window。
vimgrep をデフォルトの grep プログラムとして使用する:grep を :vimgrep のエイリアスにするには、gvimrc に以下の行を追加する。
:set grepprg=internal#comments
:vimgrep /hoge/j **/*.txt | cwin
とやると、copenしなくてもQuickfixが開いてくれて幸せです。
Posted by: aoki : October 16, 2007 06:21 PM
ウィンドウ分割
上下に分割 :split
左右に分割 :vsplit
ウィンドウを閉じる :close
現在のウィンドウ以外を閉じる :only
別ウインドウへ移動 Ctrl + w
タブ・スペース変換
文書中の全てのスペースをタブに変換
:set noexpandtab
:%retab!
文書中の全てのタブをスペースに変換
:set expandtab
:%retab
折りたたみ
折りたたむ形を横から見ると z なので、キーは z
選択範囲の折りたたみを作る zf
折りたたみを開く zo
折りたたみを閉じる zc
全ての折りたたみを開く zO
全ての折りたたみを閉じる zC
ローマ字の大文字・小文字を変換
参考:Vim-users.jp – Hack #166: ローマ字の大文字/小文字を変換する
一文字ずつを対象に大文字→小文字、小文字→大文字に相互変換
・変換したい文字の上で or 選択した範囲を相互変換 → ~
・オペレーターに付ける → g~
・行丸ごと相互変換 → g~g~
例:Hoge → hOGE
大文字に変換
・選択した範囲を大文字に → ビジュアルモードで選択後 U
・オペレーターに付ける → gU
・行丸ごと大文字に → gUgU
例:Hoge→HOGE
小文字に変換
・選択した範囲を小文字に → ビジュアルモードで選択後 u
・オペレータに付ける場合 → gu
・行丸ごと小文字に → gugu
例:Hoge→hoge
細かいもの
指定行へ移動
<行数>gg か<行数>G をよく使っていたけれど、:<行数>でも移動できると知った。
ビジュアルモードの直前の選択範囲を、もう一度選択
gv
コメントアウトのトグル
#コレ何かのプラグインだっただろうか・・→発見「EnhCommentify.vim : 複数のファイルタイプに対応したソースコメントアウト、コメントアウト解除スクリプト—名無しのvim使い」
\x でコメントアウトをトグル
書き換え系
c$ で、カーソル以降~行末までを書き換え。(cw の w が $ に。すぐわすれる…。)
対応括弧にとぶ
%
削除
:10,20d
10~20 行目削除。削除範囲が広いときには便利。
単語
空白を含む単語 w
空白を含まない単語 e
ビジュアルモード、インサートモード、コマンドモードから抜ける
Ctrl + c
カーソルの下のファイルを開く
gf
<Leader>ってなんだっけ
Kaoriya版Vimでは標準で<Leader>は¥キー
plugin を追加したら
:helptags $VIM/vimfiles/doc
とかして、ヘルプを引けるようにしておく。( $VIM/vimfiles/doc の部分は各自環境に合わせて変更 )
autocomplpop.vim 使用時 omni 補完でエラー
下の 120 とまさに同じ状態がずっと起きていて困っていたけれども、ごり押しで対応したのでメモ。
120 :名無しさん@お腹いっぱい。:2009/02/20(金) 02:14:24
HTML ファイル編集時 class=" まで入力された状態で omni 補完を実行するとfunction htmlcomplete#CompleteTags の処理中にエラーが検出されました:
行 304:
E121: 未定義の変数です: classlinesとエラーが出るんだけど、このエラーどうすれば解決する?
環境は Fedora10, vim-enhanced-7.2.060-1.fc10.i386121 :名無しさん@お腹いっぱい。:2009/02/20(金) 16:17:31
>>120
同じOS&vimだけどエラー出なかったよ。
エラーの行番号304から察するに
/usr/share/vim/vim72/autoload/htmlcomplete.vim のverが自分のと違うっぽい。
うちのは
" Last Change: 2006 Oct 19122 :120:2009/02/20(金) 23:35:04
>>121
こちらの htmlcomplete.vim も " Last Change: 2006 Oct 19
vimscript は読めないけれどちょっと中身を見てみると
どうやら classlines は css ファイルから補完候補を探してる模様
css ファイル用意するとエラーが出なくなり、問題なく omni 補完出来るようになりました
『Vim Part16より引用』
とりあえず、autoload/htmlcomplete.vim の
227 行目 if context =~? "\\(id\\|class\\)\\s*=\\s*[\"'][a-zA-Z0-9_ -]*$"
から
396 行目 endif
までをコメントアウト(行頭に「”」をつける)して対応。