[CTRL] コントロールキー
[N] 数字
i カーソルの前に文字列を挿入
a カーソルの後に文字列を挿入
o カーソルの下に文字列を挿入
O カーソルの上に文字列を挿入
h 一つ左(←)に移動
l 一つ右(→)に移動
j 一つ下(↓)に移動
k 一つ上(↑)に移動
[N]h N文字左(←)に移動
[N]l N文字右(→)に移動
[N]k N行上(↓)に移動
[N]j N行下(↑)に移動
CTRL+e 下にスクロール
CTRL+y 上にスクロール
:開始,終了 範囲指定
u アンドゥ
. 直前作業の繰り返し
J 次の行を連結
ZZ 保存終了
:w NewFilename NewFilenameとして保存
:w 上書き保存
:wq 保存して終了
:q 終了
:q! 保存せず終了
:e ファイル読み込み
:e! 現在のファイルを保存せずファイル読み込み
:sh 一時シェル、exitで終了
0 行頭に移動
$ 行末に移動
^ 行の先頭の文字に移動
[N]$ N行先の行末に移動
H 現在ページの先頭行
L 現在ページの末尾行
[CTRL]f カーソル位置から1ページ下に移動
[CTRL]b カーソル位置から1ページ上に移動
[N]G 先頭行からN行目に移動
G ファイル末尾へ移動
p 前にペースト
P 後にペースト
[N]yh N文字左(←)をコピー
[N]yl N文字右(→)をコピー
[N]yk N行上(↓)をコピー
[N]yj N行下(↑)をコピー
yf[文字] 行内の[文字]が現れるところまでコピー
y/[検索文字列] 検索文字列が現れるところまでコピー
Y 行をコピー
yy 行をコピー
x 後をカット(削除)
X 前をカット(削除)
dd 行をカット(削除)
v 文字範囲指定開始
V 行範囲指定開始
[CTRL]V ブロック範囲指定開始
範囲指定後の処理
d カット(削除)
y 範囲指定後コピー
r カットして挿入
~ 大文字小文字を反転
U 大文字にする
u 小文字にする
J 連結
> インデント追加
< インデント削除
/文字列 下へ検索
?文字列 上へ検索
n 下方検索
N 上方検索
:%s/検索文字列/置換文字列/[ENT] 次に出現する検索文字列を置換
:%s/検索文字列/置換文字列/g[ENT] すべての検索文字列をすべて置換
:[A],[B]s/置換前文字列/置換後文字列/g[ENT] A〜B行の間の検索文字列をすべて置換
Perl風拡張正規表現を使うには、/\vを使う
http://d.hatena.ne.jp/tyru/20111214/play_with_vim_regexp
行末のスペースにマッチ
/\v\s+$
:f ファイル情報表示
[CTRL]G ファイル情報表示
:disp レジスタの表示
"0p 0レジスタをペースト
q[英文字] キーボードマクロ記録開始
q キーボードマクロ記録終了
@[英文字] キーボードマクロ再生
[N]@[英文字] N回繰り返してキーボードマクロ再生
:set all オプション一覧の表示
:set backup バックアップを取る
:set nobackup バックアップを取らない
:set number 行番号を表示する
:set nonumber 行番号を表示しない
:set tabstop=2 TAB 幅を 2 文字にする
:set list タブや改行を表示する
:set nolist タブや改行を表示する
:set wrap 折り返しをする
:set nowrap 折り返しをしない
:set textmode 改行コードをCRLFにする
:set notextmode 改行コードをLFにする
:set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp,,ucs2le,ucs-2
:set fenc=cp932 Shift-JISで保存する
:set fenc=euc-jp EUC-JPで保存する
:set fenc=utf8 UTF8で保存する
:set scrolloff=5 スクロール時に5行の余白をつける
指定できる文字コード
utf-8, euc-jp, cp932, iso-2022-jp
文字コードを指定して開く
$ vim "+e ++enc=文字コード ファイル名"
文字コードを指定して開き直す
:e ++enc=文字コード
指定できる改行コード
unix, dos, mac
改行コードを指定して開く
$ vim "+e ++ff=改行コード
改行コードを指定して開き直す
:e ++ff=改行コード
マルチウインドウ(vim)
CTRL+w s マルチウインドウ(水平分割)
CTRL+w v マルチウインドウ(垂直分割)
CTRL+w j 下のウインドウに移動
CTRL+w k 上のウインドウに移動
CTRL+w w(CTRL+w) 次のウインドウに移動
CTRL+w p 前のウインドウに移動
CTRL+w q カレントウインドウを閉じる
CTRL+w o カレント以外のウインドウを閉じる
CTRL+w + カレントウインドウを大きくする
CTRL+w - カレントウインドウを小さくする
CTRL+w < カレントウインドウを小さくする
CTRL+w > カレントウインドウを大きくする
:vs マルチウインドウ(垂直分割)
:sp マルチウインドウ(水平分割)
分割した内容の入れ替え・縦横入れ替え
<C-w> J
<C-w> K
<C-w> L
<C-w> H
※J、K、L、Hは全てLargeです。
http://d.hatena.ne.jp/takahiro_jinno/20111111/1321017003
:new 無名バッファの作成
:b filename
:sb filename ウィンドウ分割して開く
:vert sb filename 垂直分割して開く
:ls ファイルバッファの一覧表示
:bn 次のバッファ
:bp 前のバッファ
:b# 直前のバッファ
:bf 最初のバッファ
:bl 最後のバッファ
ファイルブラウザ
:Explore
<Enter> カーソル下のファイルを開く、ディレクトリに移動する
o カーソル下のファイル、ディレクトリを別のウィンドウで開く
p カーソル下のファイル、ディレクトリをプレビューウィンドウで開く
x カーソル下のファイルを関連付けられたアプリケーションで開く
s ファイルの並び順を変更する(押すたびに、ファイル名、サイズ、日付が切替る)
r ファイルの並び順を逆にする
i ファイルの詳細情報を表示する
- 一つ上のディレクトリに移動する
? ヘルプを表示する
vimで便利な折りたたみのメモ
よく使うコマンド
zi 折り畳みの有効無効の切り替え
zf 折り畳みを作成する
za 折り畳みの開け閉め
zd 折り畳みを削除する
時々使うコマンド
zA 折り畳みの開け閉め(再帰)
zD 折り畳みを削除する(再帰)
zE 全ての折り畳みを削除
zR 全ての折り畳みを開く
zM 全ての折り畳みを閉じる
折り畳みの種類の切り替えとか
set fdc=0 折り畳みカラム幅の設定
set fdm=manual 手動
set fdm=marker マーカー
set fdm=indent インデント
CTRL-g ファイル内での位置とファイルの状態を表示
まとめてコメントをつける
開始点に移動して CTRL+V (ビジュアル矩形)
終了点に移動して I (大文字のI)
これもいい感じ http://d.hatena.ne.jp/tanakaBox/20070409/1176062438
自動インデントの設定
有効
:set autoindent
無効
:set noautoindent
短縮形
:se ai
:se noai
現在設定されているviのオプションを確認
:set
タブをスペースでいれる
:set expandtab
タブはタブでいれる
:set noexpandtab
ペーストの時インデントしない
:set paste
または
:a!
ペースト
ESC
http://d.hatena.ne.jp/cos31/20080121/1200885196
モードラインを使って、ファイルごとにvimエディタのオプションを指定する。
http://nanasi.jp/articles/howto/file/modeline.html
# vim:set expandtab fenc=euc-jp ff=unix ft=perl:
# vim:set expandtab fenc=utf-8 ff=unix ft=perl:
ヘルプについて
jhttp://webtech-walker.com/archive/2009/08/19092113.html
jfiletypeがhelpのとき、単語の上で<C-]>でその単語にジャンプ。
j<C-t>で元の位置に戻る。これ覚えておくだけでhelp読む効率が結構あがる。
ヘルプを縦分割
:vertical belowright help word
で右側に縦分割でヘルプが開く。僕は縦分割の2ペインで作業することが多いのでこの設定にしてる。
nnoremap <Space>h :<C-u>vert bel h<Space>