Vimの履歴
基本
バッファ
:ls バッファの表示 :b[number] [number]番バッファを表示する。 :bn 次のバッファを表示する。 :bp 前のバッファを表示する。 :bw 現在表示中のバッファを完全に消す。 #n 次の :e# 前の :e#[number] :b[number]と同じ?
置換
:%s/hogem/moge/g
移動
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
その他
v ビジュアルモード Ctrl+v 矩形選択 :earlier 10m 10分前の状態に戻る Ctrl+P 補完 Ctrl+] ctagsの関数ジャンプ :version バージョンや有効な機能の一覧など Ctrl+X Ctrl+O オムニ補完(関数) filetype plugin on を入れておく . 直前の操作を繰り返す gg=G 全体をインデント整形
挿入モードで使えるやつ
Ctrl + [ 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?page=Vim%A4%CE%A5%...
リドゥ
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/20100405/1270444967
連番
(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
ビジュアルモードで選択→大文字I→文字→Escでできるよ!って色んなとこで書いてあったのにどうやってもできなくて涙目になってたら、Ctrl+Vの矩形選択でできました。
UTF8で文字化けしないように
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/linuxtips/164linendm...
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/fedora_core_3vi_1939....
ファイルごとで設定を変える(モードライン)
http://nanasi.jp/articles/howto/file/modeline.html
改行を削除する(行を連結)
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?script_id=1984
AutoComplPop
2文字タイプしたら補完始まる
http://www.vim.org/scripts/script.php?script_id=1879
VimでPHPの辞書を作成
http://www.asahi-net.or.jp/~wv7y-kmr/memo/vim_php.html
ファイルタイプごとに設定を変更する
http://d.hatena.ne.jp/bazz/20090425/1240671263
ftplugin/ruby.vimにいれる
setlocal tabstop=2 setlocal shiftwidth=2
vimrc
http://vimwiki.net/?vimrc%C5%B8%BC%A8%B2%F1%BE%EC
参考
Vimコマンド 覚書
http://www.7key.jp/software/vi.html
vimで複数ファイルにまたがる特定のパターンを置換する場合のお作法
http://zx.jpn.org/b/20081025/155/vim/vim-mluti-file-replace
ドキュメント
http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/index.html