Vimの履歴

今広く使われてるviはほとVimらしい。

コマンド

バッファ

:ls バッファの表示
:b[number] [number]番バッファを表示する。
:bn 次のバッファを表示する。
:bp 前のバッファを表示する。
:bw 現在表示中のバッファを完全に消す。
#n 次の
:e# 前の
:e#[number] :b[number]と同じ?

置換

%s/hogem/moge/g

移動

1G ページの始めへ
G  ページの終わりへ
~d 半ページ下 (d: down)
~u 半ページ上 (u: up)
~e 一行下へ (EclipseのCtrl+↓)
~y 一行上へ (EclipseのCtrl+↑)
~f ページダウン(f: forward)
~b ページアップ (b: back)

検索

* or # カーソル下の単語を検索
g* or g# カーソル下の単語を検索(マークのみ)
[I or ]I カーソル下の単語を一覧表示

ウィンドウ

:new 新規作成
:sp 横に分割
:vsp 縦に分割
Ctrl+W Ctrl+W 順に移動
n Ctrl+W {+-><} ウィンドウサイズ変更

タブ

:tabe <file>
:tabc
:tabn or gt
:tabp or gT

その他

v ビジュアルモード
Ctrl+v 矩形選択
:earlier 10m  10分前の状態に戻る
Ctrl+P 補完
Ctrl+] ctagsの関数ジャンプ
:version バージョンや有効な機能の一覧など

複数ファイルの一括置換

まずファイルを開く

:args *.c
:args **/*.c

確認

:args

複数ファイル置換

:argdo %s/hoge/moge/g | update


Vimコマンド 覚書
http://www.7key.jp/software/vi.html

vimで複数ファイルにまたがる特定のパターンを置換する場合のお作法
http://zx.jpn.org/b/20081025/155/vim/vim-mluti-file-replace

連番

(1)

という文字列を作って、その行上で
qayyp<C-a>q

して、8@a するとあら不思議!(1)のところは 1 でも foo1 でもおk。vim テラベンリスwww。

http://subtech.g.hatena.ne.jp/secondlife/20081223/1230023656

へーすごーい

qでマクロ記録開始
aはトリガーキー
yyで一行コピー
pでペースト
C-aで数値をインクリメント
qでマクロ記録停止

8は繰り返し
@でマクロ実行
aを開始

ちくちゃに教えてもらった技

:Ex ファイル一覧
:!  コマンド実行
:sp ウィンドウ分割
:vs 縦分割
:ctrl+w w 分割した中で移動

ペースト時にオートインデントをoffにしたい

:set paste

か、

「:a!」→ペースト→Esc

複数行のインデント

vで行選択した後で「>」

" オートインデントを無効にする
"set noautoindent
" タブが対応する空白の数
set tabstop=4
" タブやバックスペースの使用等の編集操作をするときに、タブが対応する空白の数
set softtabstop=4
" インデントの各段階に使われる空白の数
set shiftwidth=4
" タブを挿入するとき、代わりに空白を使わない
set noexpandtab

コメントアウト/コメント解除

http://tempest.dcnblog.jp/blog/2007/06/vivim_9128.html

ビジュアルモードで選択→Ctrl+I→文字→Escでできるよ!って色なとこで書いてあったのにどうやってもできなくて涙目になってたら、Ctrl+Vの矩形選択でできました。