覚えておきたい Vim コマンド 備忘録

  • 519
    Like
  • 0
    Comment
More than 1 year has passed since last update.

よく忘れるvimのコマンドをまとめました。
私向けの備忘録となってます。
間違いやあらも多いのでお気をつけ下さい。

基本

コマンド 説明
x 1文字削除
dd(連打) 1行切り取り
dd(x行目で1回目のdを押し、y行目で2回目のdを押す) x行目〜y行目までを切り取り
5dd (xdd) 5(x)行削除
yy(x行目で1回目のを押し、y行目で2回目のyを押す) x行目からy行目までをコピー
p 貼り付け
u undo
CTRL + r redo
. 直前のコマンドを実行
CTRL+n 補完
CTRL+p 前候補を検索
CTRL+n 次候補を検索

カーソルの移動

コマンド 説明
h,j,k,l ←,↓,↑,→
w 1単語分前へ移動
b 1単語分後ろへ移動
gg ファイル先頭に戻る
Shift + g ファイル末尾に進む
0 行頭へ
$ 行末へ
^ 行の最初の空白でない文字へ
5l 5文字分右へ
CTRL+f ページアップ
CTRL+b ページダウン
Shift+m カーソルを画面の中心へ
f fを押して文字を打ち込むと、カーソル行にあるその文字のところに進む。文字入力後、; を押すと戻る
% (, ), {, }, [, ] カッコ移動などの対応する場所へ移動
mk 現在のカーソル位置をマーク
'k マークした位置へ
d'k 現在位置からマークまでを削除

見た目

インデント

コマンド 説明
= 選択行のインデント修正
gg, shift+v, shift+g, = ファイル全体のインデント修正
ctrl-t, ctrl-d 挿入モードでインデントを追加/削除
>> インデント
<< インデントを削除
:set shiftwidth=4 インデント幅をスペース4つ分にする
:set autoindent オートインデントをON
:set smartindent スマートなオートインデントをON

フォーマット

コマンド 説明
:%!fmt すべての行をフォーマット
!}fmt 現在位置にあるすべての行をフォーマット
5!!fmt 次の5行をフォーマット

その他設定、Syntax highlightingなど

コマンド 説明
:syntax on 色付けする
:syntax off 色付け止める
:set syntax=ruby (rubyの部分は言語名) 指定した言語のモードで色付け
:set number 行番号の表示
:set nonumber 行番号の非表示

:set syntax={}に関してはコチラ

検索・置換・正規表現

検索

コマンド 説明
/lover 文字列hogeを検索(上から下へ)
?lover 文字列hogeを検索(下から上へ)
検索候補表示中に n カーソルより下側にある検索候補に移動
検索候補表示中に shift+n カーソルより上側にある検索候補に移動
* 今単語がある位置の単語を検索(カーソルより下側)
# 今単語がある位置の単語を検索(カーソルより上側)
/lo[vb]er 文字列の"lover"か"lober"を検索する
/<love 文字列"love"から始まる単語を検索
/love> 文字列"love"で終わる単語を検索
/<love> 文字列"love"を検索
/^love 文字列"love"から始まる行を検索
/love$ 文字列"love"で終わる行を検索
/^love$ 文字列"love"だけの行を検索
/<….> 4文字の単語を検索
/love\ kill
/<\d\d\d\d> 4桁の数字を検索
/^n{3} 空の3行を検索
:bufdo /love/ 現在開いているファイル全部の中から文字列"love"を検索

vimでの正規表現に関してはコチラ

置換

コマンド 説明
:s/before/after カーソルのある行にある最初の文字列"before"を"after"に置換(1つずつ)
:s/before/after/g カーソルのある行にある文字列"before"をすべて"after"に一括置換
:s/before/after/gc カーソルのある行にある文字列"before"をすべて"after"に置換。確認を表示させる
:%s/before/after/g 現在使っているファイルにある文字列"before"を"after"に一括置換
:%s/before/after/g 現在使っているファイルにある文字列"before"を"after"に置換。確認を表示させる
:%s;/var/home;/usr/home;gc パス名などを置換するときは、"/"でなく、";"を区切り文字に使用
:63,79s /lover/killer/g 特定範囲のみ置換: 63〜79行目までの範囲にある"lover"を"killer"に一括置換
:%s/^/Goodbye/g ファイル全体のすべての行の先頭に"Goodbye"を追加
:%s/$/./g ファイル全体のすべての行の末尾に"."を追加
:3,$s/lover/killer/g 特定範囲のみ置換: 3行目から最終行の範囲にある"lover"を"killer"に一括置換
:%s/ /^M/g; ファイル全体の中からスペース(空文字)を改行(CR)に置換(改行は CTRL+vを押した後にEnterを押すと入力される)
:%s/GoodByeMyLove/ILoveYou/gi ファイル全体の中から"GoodByeMyLove"を"ILoveYou"に置換する。"GoodByeMyLove"は大文字小文字関係なく検索する
:%s/ *$/g ファイル全体の行末の空文字(空白、スペース)を削除
:%s#<[^>]+>##g タグに囲まれたテキストは残しつつ、HTMLタグを全て削除
:g/love/d "love"を含んでる行を削除
:v/goodbye "goodbye"を含んでいない行だけを削除
:%s/^(.*)n1$/1/ 同じ行が2回続いたら片方削除
CTRL+a カーソル上の数字をインクリメント
CTRL+x カーソル上の数字をデクリメント
argadd */.c カレントディレクトリ以下にある.cファイルを選択
:argdo %s/lover/friend/gc \ update
:tabdo %s/lover/friend/g すべてのタブに対して、"lover"を"friend"に置換

ファイル操作

コマンド 説明
:e filename filenameを現在のウィンドウで開く
:split filename filenameを横分割したウィンドウで開く
:vsplit filename filenameを縦分割して開く
:sview filename filenameを横分割で読み取り専用で開く

画面分割については下に。

画面

画面分割

コマンド 説明
:sp 上下分割
:vs 左右分割
CTRL+w CTRL+w(CTRL+wを2回押す) 次の画面へ
CTRL+w ↑(矢印) カーソルを上のウィンドウへ
CTRL+w _ 選択中のウィンドウを最大化
CTRL+w = 分割したすべてのウィンドウを同じ大きさに
10 CTRL+w + 選択中のウィンドウを10行大きくする
:close 画面を閉じる
:hide 現在のウィンドウを閉じる
:only 現在のウィンドウ以外を閉じる
:b 2 バッファの2番目を開く

タブ

コマンド 説明
:tabnew 新しいタブ作成
:tabe filename filenameをタブで開く
:tabclose タブを閉じる
gt 次のタブへ
g shift+t 前のタブへ
{i}gt i番目のタブへ
:tabdo %s/before/after/g すべてのタブに対して、一括置換
:tabs 開いているタブをリスト表示
:tabo 今使っているタブ以外を閉じる
:tabfirst 最初のタブを表示
:tablast 最後のタブを表示
:tabm n 現在のタブをn番目へ
:tab ball バッファをすべてタブで開く
vim -p file1 file2
     open files as tabs

file1 file2をタブで開く

ヴィジュアルモード

コマンド 説明
v ヴィジュアルモードに入って一文字選択
shift+v ヴィジュアルモードに入って一行選択
CTRL+v 矩形(くけい)選択 (複数行選択)
v, gg, shift+g 全選択
CTRL + v, I(shift + i), input words or delete, esc 矩形選択後、選択範囲の編集

その他便利なコマンド

UNIXとのインタラクション

コマンド 説明
:!pwd pwd” を実行し、Vimに戻る
!!pwd “pwd” を実行し、実行結果をファイルに挿入
:sh, CTRL + z 一時的にUnixへ戻る
$ exit, fg Vimに戻る

設定

コマンド 説明
:set tabstop=x タブの設定
:set ignorecase 大文字小文字の区別をなくす
:set noignorecase 大文字小文字を区別する
:ab hoge abcdefghijklmn abcdefghijklmnのショートカットにhgoe定義
Ctrl+n Ctrl+p(挿入モードで) 単語を補完
Ctrl+x Ctrl+l(挿入モードで) 行を補完
:set dictionary=hoge “hoge” を “dictionary” に定義

cit

コマンド 説明
c or d or i 変更 or 削除 or 挿入
i or a 中身 or 全体
t or " or ) or ] binding character(<>. (), tag, [])
cit タグの中身を削除して入力モードに入る
ca" ""を含んだ全体を削除して入力モードに入る

OSによっては、~/.vimrc ファイルに:filetype indent on
という記述がないと、インデントがきかない場合があるらしい。
.vimrc ファイルがない場合は、ホームディレクトリ以下に .vimrc というファイルを作成して、編集してみるのもよいかと。


【参考】
http://loumo.jp/wp/archive/20080701175525/
http://archiva.jp/web/tool/vim_regexps.html