逆引き

選択範囲をソートする

 :'<,'>sort

重複行を削除

*各行は事前にソートされている物とする

 :%s/^\(.*\)\n\(\1\n\)*/\1^M/

複数の代入行を「=」で揃える

 "align.vimの導入が必要
 "範囲を選択した状態で
 \t=
 "example.(before
 "$hoge = $value
 "$fugahoge = $value2
 "$fuga = $value
 "(after)
 "$hoge     = $value
 "$fugahoge = $value2
 "$fuga     = $value

文字の入れ替え

 "ファイル中の「foo bar hoge」を「bar foo hoge」にする
 :%s /foo \(bar\) hoge/\1 foo hoge/g 
 "カンマ区切りの一カラム目と二カラム目を入れ替え
 :%s /^\(.*\),\(.*\)$/\2,\1/g

複数ファイルの一括置換

 :args /contents/**/*.html    "contents以下の全ての.htmlファイルを開く
 :set noic                    "大文字小文字を区別する
 :argdo %s/Foo/Bar/g | update "開いているファイルに置換を実行して保存

BOMが付いたUTF8のファイルをBOM無しで保存

 :set nobomb
 :w

タグを削除

 :%s /<.\{-}>//g

空行を削除

 :g/^$/d

PATTERNにマッチしない各行をREPLACEMENTに置換する via.

:%v/PATTERN/s/.*/REPLACEMENT/

キーバインド

ヘルプ

:help {subject}ヘルプファイル内をsubjectで検索
:Tutorialチュートリアルの開始

ファイル

:e{dir|file}ファイルエクスプローラディレクトリ|ファイルを開く
:e ++enc=UTF-8|euc-jp|cp932|...開いているファイルの文字コードを変換して開き直す
:e CTRL-Xカレントディレクトリを補完
C-w fカーソル下に記述されたファイルを別ウィンドウで開く
C-w gfカーソル下に記述されたファイルを別タブで開く
set fileencoding=UTF-8|euc-jp|cp932|...ファイルの文字コードを変更する
set fileformat=dos|mac|unix指定した改行コードに変換する

ファイルエクスプローラ

xカーソル下のファイル|ディレクトリをOSに関連付けられたファイラやアプリケーションで開く
o開く
:pwdVIMのカレントディレクトリを表示
:cd {dir}VIMのカレントディレクトリを指定

ウィンドウ

:vs {file}縦に分割して開く
:sp {file}横に分割
:simalt~x最大化
:simalt~r元のサイズに戻す
:pcプレビューウィンドウを閉じる

タブ

:tabe {file}開く
:tabcloseタブを閉じる
:tabonly他のタブを閉じる
:tabngt次に移動
:tabpgT前に移動
CTRL-w gfカーソル下のファイルを新しいタブに開く

移動

hjkl←↓↑→へ移動
gg文頭へジャンプ
G文末へジャンプ
[count]G指定した行数へジャンプ
CTRL-f一ページ送る
CTRL-b一ページ戻る

検索

/{pattern}/文書内のキーワードを前方検索
:noh検索に一致した語句のハイライトを解除
:vimgrep /{pattern}/ *.txtGREPする
:vimgrep /{pattern}/j *.txtGREP後、最初にHITしたテキストを開かない
:vimgrep /{pattern}/ /home/turkey/**/*.txt再帰的にGREPする
:cnGREPの結果リストの次にHITした箇所へジャンプ
:cpGREPの結果リストの前にHITした箇所へジャンプ
:copenGREPの結果リストを表示
:ccloseGREPの結果リストを閉じる
:vimgrep /{pattern}/j *.txt |cwGREPの結果リストを小窓で表示

編集

v範囲選択開始
gv直前の範囲選択を再度選択
>(範囲選択中)インデント
~(範囲選択中)大文字/小文字変換
:s /pattern/string/g(範囲選択中)範囲を指定して置換
=(範囲選択中)自動インデント整形
CTRL-v矩形範囲選択
CTRL-v I {input} ESC矩形選択した各行に{input}を挿入(コメント記号//挿入など)

選択

CTRL-Va((括弧の内側にカーソルがある状態で)()を含めて選択する
CTRL-Vi((括弧の内側にカーソルがある状態で)()を含めずに選択する

補完

CTRL-Pキーワード補完
CTRL-X CTRL-P局所キーワード補完
CTRL-X CTRL-Oオムニ補完

変換

:Hankaku(範囲選択中)半角に変換
:Zenkaku(範囲選択中)全角に変換

gHL可能な文字を全て半角に変換する
gZL可能な文字を全て全角に変換する
gHAASCII文字を全て半角に変換する
gHHASCII文字を全て半角に変換する
gZAASCII文字を全て全角に変換する
gHM記号を全て半角に変換する
gZM記号を全て全角に変換する
gHW英数字を全て半角に変換する
gZW英数字を全て全角に変換する
gHJカタカナを全て半角に変換する
gZJカタカナを全て全角に変換する
gZZカタカナを全て全角に変換する
gu半角英字を小文字に変換する
gU半角英字を大文字に変換する

折り畳み

zi折り畳みの有効/無効を切り替え
zf(範囲選択中)折り畳みを作成する
za折り畳みの開け閉め
zd折り畳みを削除する

タグジャンプ(要Exuberant Ctags)

CTRL-]カーソル下のメソッド、定数の宣言にジャンプ
CTRL-t直前のタグに戻る
gCTRL-]複数候補がある場合はリスト表示。単一の場合は直接ジャンプ
CTRL-w}カーソル下の単語の定義をプレビューウィンドウで開く

設定ファイル

vimrc

set nobackup
set expandtab
set autoindent
set number
set ignorecase
set nowrapscan
set showmatch
set showmode
set tabstop=4
set shiftwidth=4
set clipboard+=unnamed

gvimrc

 colorscheme torte
 "colorscheme lilac
 "colorscheme desert
 set guioptions-=T
 set guioptions+=lr
 set vb t_vb=
 set iminsert=0 imsearch=0
 if v:version >= 700
     set cursorline cursorcolumn
     hi CursorLine guibg=#000044
     hi CursorColumn guibg=#000044
 endif
 set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

定番まとめサイト

vim online 本家サイトvim.org(英語)
名無しのvim使い 基本から拡張までVimの総合情報
Vim-users.jp 日本のVimユーザーの為のハブサイト|書籍「Vim Hacks」出版を目指す「Vim Hacks Project
(PHP)プログラマのためのVIM (まとめ) - おぎろぐはてな Andreiさんの資料翻訳 | 元ネタ&最近の資料→Talks » Andrei Zmievski