Vimまとめ
【目次】
今更だけどviとVim
そもそも
Vimは複数あるLinux向けのテキストエディタの一つであり、ほとんどのLinuxディストリビューションに標準でインストールされている。(=ほぼLinuxの標準エディタといえる!)
Vimはviエディタの後継として開発されたもので、Linux関連のドキュメントではVimのことをviで表記していることがある。そのため、「vi」が出てきたら「Vim」と思って良い。 (現在ほとんど使われることはないが、互換性のため起動時も「vi」コマンドでも起動可能)
Vimのコマンド集
保存と終了
| コマンド | 意味 |
|---|---|
| :w | 上書き保存 |
| :q | 終了 |
| :wq | 保存かつ終了 |
| :q! | 保存せず終了 |
移動
-カーソル
| コマンド | 意味 |
|---|---|
| h | 左 |
| j | 下 |
| k | 上 |
| l | 右 |
-単語
| コマンド | 意味 |
|---|---|
| w | 次の単語先頭へ |
| b | 前の単語先頭へ |
| W | スペース区切り 次の単語先頭へ |
| e | 次の単語の末尾へ |
-行
| コマンド | 意味 |
|---|---|
| 0 | 行頭 |
| $ | 行末 |
| I(大文字i) | 行頭移動&インサートモードに切り替え |
| A | 行末移動&インサートモードに切り替え |
| gk | 1行ずつ上移動 |
| gj | 1行ずつ下移動 |
| gg | 最初の行へ |
| G | 最後の行へ |
| <数字>G | <数字>で指定された行へ |
削除・コピー・ペースト
| コマンド | 意味 |
|---|---|
| x・dl | 1文字削除 |
| dw | 単語の末尾まで削除 |
| dd | 行全体を削除 |
| dG | 現在地から最下部までを一気に削除 |
| s | カーソル上の文字を削除&インサートモードに切り替え |
| S | カーソルのある行を削除&インサートモードに切り替え |
| C | 現在置から右を削除&インサートモードに切り替え |
| ddp | カット&ペースト |
| yyp | コピー&ペースト |
- dコマンド:削除範囲の指定が可能
- y(ヤンク):コピーのこと
- p(プット):ペースト
連結
| コマンド | 意味 |
|---|---|
| J | 現在とその下の行を連結し、1つの行となる |
取り消し
| コマンド | 意味 |
|---|---|
| u | 取り消し(undo) |
| U | 行全体の変更取り消し |
| Ctrl + r | 取り消しを取り消す(redo) |
検索系
「/」の後ろに検索ワードを入力後Enterで現在開いているファイルから文字列を検索する。なお検索は、カーソル位置からスタートするので注意。
| コマンド | 意味 |
|---|---|
| /<文字列> | 下方向に検索 |
| ?<文字列> | 上方向に検索 |
| * | 下方向に単語を検索 |
| n | 次の検索結果へ移動 |
| N | 前の検索結果へ移動 |
| CTRL-O | 検索後元の場所に戻る |
| % | (,),[,],{, もしくは } 上にカーソルがある状態で 対になる文字検索 |
「プロセス番号を調べる」の際に登場したコマンドless。これはスクロール表示を可能にするコマンドで、以下のように使う。
less [オプション]<ファイル名>
lessコマンドでファイル閲覧中にも、検索系のコマンドが使える。
参考:新しいLinuxの教科書p79~81
置換系
| コマンド | 意味 |
|---|---|
| :#,#s/old/new/g | #,# には置き換える範囲の開始と終了の行番号を指定 |
| :%s/old/new/g | ファイル全体で見つかるものに対して変更する |
| :%s/old/new/gc | 上記の変更の際、1つ1つ確認がはいる |
| r | 一文字だけ |
挿入系
挿入後 は<ESC>
| コマンド | 意味 |
|---|---|
| cw | カーソル位置から単語の終わりまで削除&挿入 |
| c$ | カーソル位置から行の終わりまで削除&挿入 |
| a | カーソル上の次から文字追加 |
| A | 行末に文字追加 |
| o | カーソルの下に行追加&インサートモードへ |
| O | カーソルの上に行追加&インサートモードへ |
繰り返し
| コマンド | 意味 |
|---|---|
| . | 直前の一連操作を繰り返す |
外部コマンド結果の利用
:!r<コマンド>でコマンドを実行して結果を貼り付けられる。
| コマンド(例) | 意味 |
|---|---|
| :!r ls | カレントディレクトリのファイル一覧を貼り付け |
ファイル保存・読み込み
| コマンド | 意味 |
|---|---|
| :w FILENAME | ファイルに保存 |
| :r ファイル名 | ファイル名というファイルが取り込まれカーソルの下に挿入される |
| :r !dir | dir コマンドの出力をカーソル位置以下に読み込む |
ファイルの作成、編集について
このサイトがわかりやすく説明してあった!
起動スクリプトの作成
"vimrc" ファイルを作成することで色々な機能を使えるようになる。
(例)参考:vimtutorより
1. "vimrc" ファイルの編集を開始する。(システムに依存)
`:edit ~/.vimrc` UNIX 向け
2. "vimrc" を読み込む。
:read $VIMRUNTIME/vimrc_example.vim
3. 以下のようにファイルへ書き込みます。
:write
4. 次回 Vim を起動すると、色づけ構文が使えるようになる。
補完
CTRL-D : command で可能な補完を見られる。
<TAB>で補完を使用する。
ヘルプ
| コマンド | 意味 |
|---|---|
| :help | help画面の表示 |
| :q | help終了 |
| Ctrl + ] | リンク先移動 |
| Ctrl + t | リンク先から元の場所へ |
| :help <コマンド> | そのコマンドのヘルプ表示 |
参考:新しいLinuxの教科書p116~128
Vimのモード
Vimには4種類のモードがある。
- ノーマルモード:コマンド入力のできる基本の状態
- ビジュアルモード:v範囲選択をする
- インサートモード(挿入モード):iで文字の入力ができる状態
(カーソルの右側に文字入力したい時にはaを使用する)
- コマンドモード::各種コマンドの実行。文字列の編集作業をする
eaで現在の単語の直後でインサートモードに切り替わる
参考:新しいLinuxの教科書p111~113
オペレーターとモーション
オペレータ
動作を指定するもの。オペレーターコマンドは、カウントとモーションコマンドと組合わせることができる。
主要な4種は以下である
| コマンド | 意味 |
|---|---|
| c | 変更 (change) |
| d | 削除&挿入モードに切り替え (delete) |
| y | コピー(yank ) |
| g | 移動全般 (go) |
モーション
モーションはカーソル移動コマンドのことで、対象範囲を指定する。
なお、モードによって入力順序が異なる。
ノーマルモード
→基本的に最初にオペレータを入力し、その後に範囲指定を行う(CUI的発想)
ビジュアルモード
→範囲を最初に選んでそれからオペレータを入力する (GUI的発想)
このサイトの説明が分かりやすかった。
その他参考:Vim幼稚園からVim小学校へ
モーション一覧の一部
| コマンド | 意味 |
|---|---|
| w | カーソル位置から空白を含む単語の末尾まで。 |
| e | カーソル位置から空白を含まない単語の末尾まで。 |
| $ | カーソル位置から行末まで。 |
繰り返しのモーションの前に数値をタイプ
d 数値 モーション
コンビネーションによるテキスト編集
| コマンド | 意味 |
|---|---|
| ci' | シングルクオート内の文字列を削除してインサートモードへ |
| ca' | シングルクオート+文字列を削除してインサートモードへ |
| cit | HTMLタグで囲まれた文字列を削除・編集 |
| ciw | カーソルがある単語だけが消えてインサートモードへ |
cit についてはこのサイトの説明がわかりやすかった。以下は一部抜粋
citのcはアクション。cの場合は削除して挿入モードに変更。 citのiは範囲。iはタグの中身が範囲でaに置き換えるとタグ全体が範囲になる。 citのtはターゲット。tの場合はタグに対して行う。
その他参考:脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)
その他参考:Vim幼稚園からVim小学校へ
ビジュアル選択
| コマンド | 意味 |
|---|---|
| ggVG | ファイル内全選択 |
| = | インデント揃える |
その他
スニペット(neosnippet)を導入することで、定型のものは瞬時に呼び出せるようになる。