More than 5 years have 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 | 行番号の非表示 |
検索・置換・正規表現
検索
| コマンド | 説明 |
|---|---|
| /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 | "love"と"kill"を検索 |
| /<\d\d\d\d> | 4桁の数字を検索 |
| /^n{3} | 空の3行を検索 |
| :bufdo /love/ | 現在開いているファイル全部の中から文字列"love"を検索 |
置換
| コマンド | 説明 |
|---|---|
| :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 | 選択されたファイルの中の文字列"lover"を"friend"に置換 |
| :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
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
