今広く使われてるviはほとんどVimらしい。
基本
バッファ
:ls バッファの表示
:b[number] [number]番バッファを表示する。
:bn 次のバッファを表示する。
:bp 前のバッファを表示する。
:bw 現在表示中のバッファを完全に消す。
#n 次の
:e# 前の
:e#[number] :b[number]と同じ?
置換
:%s/hogem/moge/g
:'<,'>:s/hogemoge/hoge/ 範囲置換 %s でなく :s
移動
1G または gg ページの始めへ
G ページの終わりへ
^d 半ページ下 (d: down)
^u 半ページ上 (u: up)
^e 一行下へ (EclipseのCtrl+↓)
^y 一行上へ (EclipseのCtrl+↑)
^f ページダウン(f: forward)
^b ページアップ (b: back)
f(任意の文字) 同じ行でカーソル以降の任意の文字にジャンプ
F(任意の文字) 同じ行でカーソル以前の任意の文字にジャンプ
検索
* 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
レジスタ
"ay 「a」レジスタにコピー
"ap 「a」レジスタに貼付け
その他
v ビジュアルモード
Ctrl+v 矩形選択
:earlier 10m 10分前の状態に戻る
Ctrl+P 補完
Ctrl+] ctagsの関数ジャンプ
:version バージョンや有効な機能の一覧など
Ctrl+X Ctrl+O オムニ補完(関数) filetype plugin on を入れておく
. 直前の操作を繰り返す
gg=G 全体をインデント整形
挿入モードで使えるやつ
Ctrl + [ Escと同じ
Ctrl + [J,M] 改行
Ctrl + [N,P] 補完
Ctrl + T インデント増やす
Ctrl + D インデント減らす
0, Ctrl + D インデント0にする
Ctrl + H バックスペース
Ctrl + U 行頭まで削除
Ctrl + W 単語単位で逆方向へ削除
Ctrl + R ?
Ctrl + Y 直上の文字を挿入
Ctrl + E 直下の文字を挿入
Ctrl + O 一度だけコマンドモード使える
Ctrl + @ ?
Ctrl + V, Ctrl + [任意] 制御文字の入力
省略
:iabbrev ad advertisement
:iabbrev で設定した文字を打ち、
スペースやエンターを押すと文字列が展開される。
:abbreviate
:iabbrev で設定したリストを表示
:iunabbreviate ad
設定した省力記法をクリア
:iabclear
全ての省略記法をクリア
テキスト選択
vi*系 va*系がある
viw
vis
vip
vit
vi' "`({<
選択中に o でカーソル逆に
http://ogawa.s18.xrea.com/fswiki/wiki.cgi?...
リドゥ
Ctrl + R
Tips
複数ファイルの一括置換
まずファイルを開く
:args *.c
:args **/*.c
確認
:args
複数ファイル置換
:argdo %s/hoge/moge/g | update
複数ファイルの一括置換(確認しながら)
vim -c "argdo %s/FooBar/BarBaz/gce | update" **/*.pm
http://subtech.g.hatena.ne.jp/cho45/201004...
連番
(1)
という文字列を作って、その行上で
qayypq
して、8@a するとあら不思議!(1)のところは 1 でも foo1 でもおk。vim テラベンリスwww。
http://subtech.g.hatena.ne.jp/secondlife/2...
へーすごーい
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/viv...
ビジュアルモードで選択→大文字I→文字→Escでできるよ!って色んなとこで書いてあったのにどうやってもできなくて涙目になってたら、Ctrl+Vの矩形選択でできました。
UTF8で文字化けしないように
.vimrc
set encoding=utf-8
set fileencodings=iso-2022-jp,utf-8,sjis
ってこの設定やってもなお文字化けしておかしいなーと思ったらターミナルの文字コード設定がEUC-JPやったというオチ。未だにputtyなのでそろそろpoderosaとやらに乗り換えるか
設定の確認
:set
行末に^Mがつく
http://www.atmarkit.co.jp/flinux/rensai/li...
CR+LFのCR部分が出てる。
^Mはctrl+V ctrl+Mで入力できる。
取り除くには :%s/^M//g で置換する
色分けする
Fedora(やRH系?)はyum install vim-enchancedでないと色分けされないそうだ。インストールしたものは vim になるので alias vi="vim" すると vi で実行できる。
ref:
http://tempest.dcnblog.jp/blog/2005/05/fed...
ファイルごとで設定を変える(モードライン)
http://nanasi.jp/articles/howto/file/model...
改行を削除する(行を連結)
J
コマンドモードに戻る時にESC以外の戻り方
Ctrl + [
プラグイン
どこに入れるか?
:h add-global-plugin
macなら.vim/plugin
quickrun
その場で実行
http://github.com/thinca/vim-quickrun
FuzzyFinder
pluginとautoloadに入れる
http://www.vim.org/scripts/script.php?scri...
AutoComplPop
2文字タイプしたら補完始まる
http://www.vim.org/scripts/script.php?scri...
VimでPHPの辞書を作成
http://www.asahi-net.or.jp/~wv7y-kmr/memo/...
ファイルタイプごとに設定を変更する
http://d.hatena.ne.jp/bazz/20090425/124067...
ftplugin/ruby.vimにいれる
setlocal tabstop=2
setlocal shiftwidth=2
囲む/囲まない
ds" "を削除
cs" 囲んでいるのを"に変更
ysiw" "で囲む
surround.vim
http://www.serendip.ws/archives/997
zen-coding.vim
http://github.com/mattn/zencoding-vim
vimrc
http://vimwiki.net/?vimrc%C5%B8%BC%A8%B2%F...
参考
Vimコマンド 覚書
http://www.7key.jp/software/vi.html
vimで複数ファイルにまたがる特定のパターンを置換する場合のお作法
http://zx.jpn.org/b/20081025/155/vim/vim-m...
ドキュメント
http://www.ac.cyberhome.ne.jp/~yakahaira/v...