読者です 読者をやめる 読者になる 読者になる

h@dacchi's n0te

座右の銘:期待なんてしても無駄.自分でやる.

vim cheat sheet

あんまりに多いからtocつけた. はてブロのmarkdownに定義リストがないから,本来ならタグで書き直すべきなんだろうけど,項目多すぎてやってらんない…

覚え中

■未分類

:tabnew | command : 新しいタブでcommandを実行

:tabnew | b N : バッファNを新しいタブで開く.
Nはナンバーでもバッファ名でもOK

:[N]bw[ipeout][!] : バッファNを本当に削除する

:N,Mbw[ipeout][!] : バッファNからMをまとめて本当に削除する

:ls! : bdで隠したバッファも含めリスト表示

:bd[elete][!] [N] : バッファを隠したり戻したり

■ヘルプ

C-] : カーソル位置のリンク先にジャンプ

C-o : ジャンプ先からジャンプ元へ戻る
より古いマークへジャンプ

C-i : より新しいマークへジャンプ

■モード

A : 行末へ移動して挿入モード

S : カーソル行を削除して挿入モード

gQ : Exモード(新)へ Exモード(新)では,コマンド実行後もコマンドモードに残っている状態が継続する.
コマンドを実行しても画面は更新されない
終えるには :vi

Q : Exモード(旧)へ
Exモード(旧)はコマンド補完などが効かない
コマンドを実行しても画面は更新されない
終えるには :vi

vi : Exモードからノーマルモードへ抜ける

■カーソル移動

^ : インデントされた行頭へ移動

w : 次の単語の先頭へ移動

b : 単語の先頭へ移動

e : 単語の末尾へ移動

; : fやF,tやTの継続
nnoremap ; :
nnoremap : ;
をしている時は,使えない(:と入れ替えられている)

, (カンマ) : fやF,tやTの逆戻り

% : 対応する括弧に移動

C-g : ファイル中の現在の場所を表示

% : 括弧をまで進んだうえで,対応する括弧へジャンプ

C-o : 元いた場所へ移動,n回戻れる,ファイル間移動も可

`` : 元いた場所と今いる場所を交互に移動

'' : 元いた行と今いる行を交互に移動

ma : マークaを設定 (a-z)

:marks : マーク一覧

`a : マークaにジャンプ

'a : マークaの行頭にジャンプ

■編集

c : 削除範囲指定待ち(削除後に挿入モード)

cc : カーソル行を削除(削除後に挿入モード)

C : カーソルから行末まで削除(削除後に挿入モード)

Y : カーソル行をヤンク (yy)

■ファイル

ZZ : 保存して終了

gf : カーソル位置にある文字列をファイル名とみなして新しいバッファに開く

■ファイルパス

%:h : 開いているファイルのあるディレクトリのパス

■検索

?word : wordという単語を前方検索

* : カーソル位置にある単語を検索

:set ignorecase : [大小]文字を無視

:set hlsearch : ヒット結果のハイライト表示

C-r / : コマンド入力ラインで,最後の検索条件をペースト

■folding

zx : 折り畳みの更新,手動折り畳みのアンドゥ

zf : 選択範囲を折り畳む

:set foldmethod= : foldingの方法を決める.manual, indent, expr, syntax, diff, markerなど.

■ウィンドウ

C-w w : 他のウィンドウへ移動

:hide : 現在のウィンドウを「やめる」

C-w + / C-w - : ウィンドウを上/下へサイズ変更

C-w < / C-w > : ウィンドウを左/右へサイズ変更

タブウィンドウ

:bufdo tab split または :tab ba : バッファを全てタブで開く

■インサートモード

C-n : 補完 / (補完中なら)次候補

C-p : (補完中に)前候補

■設定

<Leader> : Leaderキー.デフォでは \

<Plug> : Plugキー.コマンドモードに入るキー.

<Space> : Spaceキー.ノーマルモードでlと同じ機能しかないため,再割り当て推奨.

■plugins

cmigemo, vim-migemo

emacsでの日本語ローマ字検索プラグインmigemoruby移植のruby/migemoのC移植のC/migemoがkaoriya (koron)氏の手で開発された.
そのC/migemovimで使うためのプラグインvim-migemoである.

:Migemo : migemoによる検索モードに入る
下の設定を記述してやることで,コマンドMigemoを定義し,ノーマルモードのg/へと割り当て(:Migemo[Enter]相当を実行)が可能となる.

if executable('cmigemo')
    command! Migemo call Migemo()
    noremap g/ :<C-u>Migemo<cr>
endif

cmdex.vim (Kaoriya patch)

:Tutorial : vimエディタのチュートリアルを開始する。

:Scratch : 作業用バッファを作成する。

:Transform : perl言語のtr演算子のような置換処理を行う。

:VDsplit : 今開いているファイルと、指定したファイルとの差分表示を行う。

:Undiff : diffモードを終了させる。

:HTMLConvert : 見た目そのままのHTMLを生成し、拡張子.htmlを付けたファイルに出力する。

:Nohlsearch : 最後の検索ワード情報を消去する。「:nohlsearch」コマンドの強化版。

:MenuLang : 指定した言語のメニューバー設定ファイルを読み込む。

VimFiler

(vimfiler.vim via neobundle.vim)

S-s : ソート種別を選択する

もう覚えた

■モード

i : カーソルの位置で挿入モード

I : インデントされた行頭へ移動して挿入モード

a : カーソルの次の位置で挿入モード

o : 下へ新しい行を追加し挿入モード

O : カーソル行へ行を追加し挿入モード

r : 1文字だけ上書きモード

R : 上書きモードへ

s : カーソルの下の文字を削除して挿入モード

ESC : 挿入モードからノーマルモードへ

: : コマンドモードへ

■カーソル移動

h,j,k,l : それぞれ←↓↑→

C-d : 半ページ送り

C-u : 半ページ戻し

C-f : ページ送り

C-b : ページ戻し

$ : 行末へ移動

0 : インデントを無視して行頭へ移動

zt : カーソル行が画面トップになるようスクロール

zz : カーソル行が画面中央になるようスクロール

zb : カーソル行が画面ボトムになるようスクロール

f : カーソル行で後方へ1文字検索

F : カーソル行で前方へ1文字検索

G : ファイルの最終行へ移動

NG : N 行目に移動

gg : ファイルの1行目へ移動

H/M/L : 画面最上部/中央/最下部へ移動

■編集

J : カーソル行末尾の改行を削除

d : 削除範囲指定待ち

dd : カーソル行を削除

D : カーソルから行末まで削除

y : ヤンク範囲指定待ち

yy : カーソル行をヤンク

x : カーソルの下の文字を削除

X : カーソルの前の文字を削除

p : 削除またはヤンクした文字(列)をカーソルの次の位置へペースト

P : 削除またはヤンクした文字(列)をカーソルの位置へペースト

. (ピリオド) : 直前の操作を再実行

u : アンドゥ

C-r : リドゥ

■ファイル

:q : 終了

:w file : fileというファイル名で別名保存

:x : 保存して終了

:r file : fileというファイルをインポート

:r !cmd : !cmdの出力を挿入

■検索

/word : wordという単語を後方検索(n:次候補,N:前候補)

:noh : ハイライトをクリア

:N,Ms/from/to/ : N行目からM行目の間でfromという文字列をtoという文字列へ置換(各行1回のみ),末尾にgをつければ各行で全て置換
fromの先頭へ\vを書けば,perl likeな正規表現マッチング.

■folding

z[oO] : カーソル下の折り畳みを[1段階だけ|再帰的に]開く

z[cC] : カーソル下の折り畳みを[1段階だけ|再帰的に]閉じる

z[aA] : カーソル下の折り畳みを[1段階だけ|再帰的に]開いたり閉じたり

z[rR] : 全ての折り畳みを[1段階だけ|再帰的に]開く

z[mM] : 全ての折り畳みを[1段階だけ|再帰的に]閉じる

■ウィンドウ

:vsplit : ウィンドウを縦線で左右に分割

:split : ウィンドウを横線で上下に分割

C-w [hjkl] : 左下上右のウィンドウへ移動

:e file : 現在のウィンドウへfileを開く

:ls : バッファ一覧

:b N : バッファNを現在のウィンドウへ読み込み

:close : 現在のウィンドウを閉じる
最後の1枚のウィンドウの場合,閉じてvimを終了する(:qの動作)のではなく,警告を出すだけになる

C-w = : ウィンドウサイズを等分割にリサイズ

タブウィンドウ

:tabnew : 新規タブ

:tabnew | b N : バッファNを新しいタブで開く

gt : 次のタブ
以下の割付が便利

nnoremap <Space> :tabn<CR>

gT : 前のタブ

nnoremap <S-Space> :tabp<CR>

■ヘルプ

: h input : inputのヘルプを表示する

■plugins

cmdex.vim (Kaoriya patch)

:CdCurrent : 現在開いているファイルのパスへcd
ただし,以下のようにしておけば,わざわざプラグインを入れる必要なし

command! -nargs=0 CdCurrent cd %:p:h

VimFiler

(vimfiler.vim via neobundle.vim)

v/E : ファイルを別バッファに開く

e/o : ファイルをvimで開く

O : (1枚の時)VimFilerを2枚にする
(2枚の時)VimFilerのカレントディレクトリを揃える

! : コマンド入力

C-l : ディレクトリの更新