こんにちは。今回のテーマは『これで使える!Vimのコマンド特集(基本操作編)』です。VimはEmacsと双璧をなす有名なテキストエディタですが、キーバインドが特殊なために抵抗を感じて使っていない方も多いのではないでしょうか?膨大なvimの機能を全て紹介するのは無理なので今回は「とりあえず使える」を目標に筆者が普段使用しているコマンドを紹介します。分量が多いので目次を活用し必要な部分を辞書的に使っていただければと思います。 [adsense02] 【目次】 本記事でのコマンド表記について モードについて カーソルの移動 入力/削除/編集 コピー&ペースト関連 検索と置換 画面のスクロール タブ関連 画面の分割 編集履歴の操作:アンドゥとリドゥ ファイルの取り扱い その他の便利な機能 マクロ
本記事でのコマンド表記について
今回紹介するコマンドは特に記載がなければノーマルモードからの入力を前提としています。などはCtrlキーを押しながらwを押すことを表現しています。また本記事のコマンドはLinux上のvimで動作確認されています。 目次へ戻る
モードについて
vimのモードは派生モードも合わせれば計11のモードがありますが、特に意識する必要はないと思います。基本的には以下4つのモードを知っていれば困りません。 ノーマルモード カーソルの移動や文字のコピー・ペーストなどの基本機能を使用するモードで、基本的にはノーマルモードでキーバインド(ショートカット)を入力し操作します。 他のモードからノーマルモードに戻るにはESCキーを押します。 挿入モード 文字を挿入するモードであり、現在普及しているGUIテキストエディタのように入力、削除ができるようになる。このモードでのカーソル移動は矢印キーを用います。(環境や設定によっては矢印キーが使えない場合もあります。)ノーマルモードから挿入モードにするにはiやa,oなどの入力開始のためのコマンドを入力します。 ビジュアルモード(ノーマルモードでvまたはを押す) 文字の選択範囲を決めるためのモードです。このモードにしてからカーソル動かすと動かした範囲が選択されます。尚、では短形選択モードになります。 コマンドモード コマンドを受け付けるモードで画面下にコマンドを入力出来るようになります。理解できなくても使っている間に理解できると思います。ノーマルモードからコマンドモードにするには:や/,?等を入力し、その後にコマンドを入力します。本記事では特に意識しなくても自然とコマンドモードになるよう記載しています。 目次へ戻る
カーソルの移動
矢印キーは挿入モードでも使用可能。それ意外はノーマルモードで使用します。
作業 | コマンド |
---|
1文字分左へ移動 | h または ← |
1文字分右へ移動 | l または → |
1文字分上へ移動 | k または ↑ |
1文字分下へ移動 | j または ↓ |
次の単語の先頭に移動 | w |
前の単語の先頭に移動 | b |
次の単語の末尾に移動 | e |
手前の単語の末尾に移動 | ge |
画面の最初の行へ移動 | gg または 1G |
画面の最後の行へ移動 | G |
任意の行番号へ移動 | 行番号G |
現在の行の左行端に移動 | 0(ゼロ) |
現在の先頭文字に移動 | ^ |
現在の行の最後の文字に移動 | $ |
段落の上に移動 | { |
段落の下に移動 | } |
対応する括弧に移動 | % |
目次へ戻る
入力/削除/編集
入力
入力するためには挿入モードになります。以下のコマンドは全て挿入モードになりますので、別のコマンドを入力するためにはでノーマルモードに戻って下さい。
作業 | コマンド |
---|
現在のカーソル位置に入力 | i |
カーソルの次の位置に入力 | a |
カーソルの次の行に入力 | o |
カーソルの前の行に入力 | O(大文字) |
削除
作業 | コマンド |
---|
1文字削除 | x |
任意の文字数だけ削除 | 任意の数字 x |
一行削除 | dd |
任意の行の削除 | :行番号d |
複数行の削除(後述する行番号の記録を使うと効果的) | :始めの行番号,終わりの行番号d |
行のカーソル以降全て削除 | d$ またはD |
カーソル以降を全削除 | dG |
""や()の範囲を削除 | di” や di) |
htmlタグで囲われた範囲を削除 | dit |
単語単位で削除 | dw |
段落を削除 | dap |
選択範囲を削除 | vまたはで範囲選択してdまたはx |
編集
作業 | コマンド |
---|
1文字を他の文字列に編集する | s |
一行を他の文字列に編集する | S または s$ |
1文字上書きする | r上書きする文字 |
文字列を上書きする | R上書きする文字列 で終了 |
カーソル位置から移動コマンドの位置までを編集(c単体では使えない、他のカーソル移動コマンドと組み合わせる) | c |
行内でカーソル位置から末尾までを編集 | C または c$ |
単語を編集する(単語単位で削除し挿入モードになる) | cw |
""や[]等の記号で囲まれた範囲を編集する | ci” や ci] |
htmlやxmlタグの範囲内を編集する | cit |
段落ごと削除し編集する | cap |
選択範囲を編集する | vまたはで範囲選択してsまたはc |
行を連結する | 前の行の末尾でJ(大文字) |
文字や行、段落の入れ替え
作業 | コマンド |
---|
右隣の文字と1文字入れ替える | xp |
下の行と一行だけ入れ替える | ddp |
現在カーソルのある段落を下の段落と入れ替える | dap}p |
その他の便利な編集機能
ここでは知っておくとちょっと便利な機能を紹介します。vimはコマンドの特質上行番号を把握していると便利なものが多く行番号の設定は毎回コマンドを打つのは面倒なので~/.vimrcに記載しておくと便利です。
作業 | コマンド |
---|
1文字の大文字/小文字の変換 | ~ |
選択範囲を大文字に変換 | vまたはで範囲選択の後にU |
選択範囲を小文字に変換 | vまたはで範囲選択の後にu |
キーワード補完 | 文字入力中に または |
行番号の表示 | :set number |
目次へ戻る
コピー&ペースト関連
コピー(ヤンク)
vimではコピーはヤンクと言います。よってコマンドはyを使います。行番号を指定してyを押せば任意の行をヤンクできるし、yに続けてカーソルの移動範囲をしていすればその範囲をヤンクできます。
作業 | コマンド |
---|
カーソルのある行をヤンク | yy |
単語をヤンク | yw |
選択範囲をヤンク | vでビジュアルモードでになり範囲選択後にy |
指定行をヤンク | :任意の行番号y |
複数の行をヤンク | :始めの行番号,終わりの行番号y |
全てを選択 | ggVGy |
レジストリを指定して行をヤンク | ”任意の数字yy |
クリップボードの使用
クリップボードを使うと選択領域用レジスタを使って他のソフトウェアにペースト出来るようになります。ただし、コンパイル時にクリップボード使用が可能になっていることが条件です。使い方は簡単でレジストリとして”+を指定するだけで上記の応用が可能です。 [使用例]
作業 | コマンド |
---|
カーソルのある行をクリップボードにヤンク | ”+yy |
全てをクリップボードにヤンク | ggVG”+y |
ペースト
ペーストはpで行います。単純にpやPだけ押すと直前に削除やヤンクして無名レジストリに蓄えられたデータがペーストされます。ヤンクや削除と合わせてお使い下さい。
作業 | コマンド |
---|
カーソルの次にペースト | p |
カーソルの前にペースト | P(大文字) |
レジストリを指定してペースト | ”任意のレジストリ番号p またはP |
クリップボードの内容をペースト | ”+p またはP |
目次へ戻る
検索と置換
ファイル全体の検索
作業 | コマンド |
---|
下に向かって検索 | /検索したい文字列 |
上に向かって検索 | ?検索したい文字列 |
繰り返し検索 | n |
繰り返し逆に向かって検索 | N |
カーソル下の単語を下方向に検索 | * |
カーソル下の単語を上方向に検索 | # |
行内の検索
作業 | コマンド |
---|
行内で文字列を末尾方向に検索し、その前に移動 | t文字列 |
行内で文字を先頭方向に検索し、その後に移動 | T文字列 |
検索文字の置換
作業 | コマンド |
---|
検索文字の置換 | :%s/検索したい文字列/置換したい文字列/g |
検索文字の置換(置換前に確認したい場合) | :%s/検索したい文字列/置換したい文字列/gc |
目次へ戻る
画面の移動(スクロール)
画面のスクロール
作業 | コマンド |
---|
画面半分上にスクロール | |
画面半分下にスクロール | |
1ページ分上にスクロール | |
1ページ分下にスクロール | |
一行分上に移動 | |
一行分下に移動 | |
カーソルに合わせたスクロール
作業 | コマンド |
---|
カーソル位置が上端になるようにスクロール | zt |
カーソル位置が上端になるようにスクロール | zz |
カーソル位置が上端になるようにスクロール | zb |
目次へ戻る
タブ関連
作業 | コマンド |
---|
新しいタブを開く | :tabnew |
新しいタブで指定したファイルを開く | :tabnew ファイル名(パスを含む) |
次のタブへ移動 | gt または :tabnext |
任意の番号のタブへ移動 | タブ番号gt |
目次へ戻る
画面の分割
画面の分割は他の同一ファイルの他の箇所や他のファイルと比較しながら作業したいときに非常に便利な機能です。
画面の分割
作業 | コマンド |
---|
現在開いているファイルを横に分割する | s または:split |
現在開いているファイルを横に分割する | v または:vsplit |
画面を横に分割し指定したファイルを開く | :split ファイル名(パスを含む) |
画面を縦に分割し指定したファイルを開く | :vsplit ファイル名(パスを含む) |
画面の移動
作業 | コマンド |
---|
上の画面へ移動 | k |
下の画面へ移動 | j |
左の画面へ移動 | h |
右の画面へ移動 | l |
目次へ戻る
編集履歴の操作:アンドゥとリドゥ
Vimは編集履歴が保存されています。よって上書き保存をしなければ編集履歴を遡るが可能です。
作業 | コマンド |
---|
一つ前の編集履歴へ移動(アンドゥ) | u |
一つ後の編集履歴へ移動(リドゥ) | |
目次へ戻る
ファイルの取り扱い
作業 | コマンド |
---|
ファイルを開く | :e ファイル名(パスを含む) |
ファイルを上書きする | :w |
ファイル名をつけて保存する | :w ファイル名 |
ファイルを終了する | :q |
ファイルを上書きして終了する | :wq |
ファイルを保存せず終了する | :q! |
目次へ戻る
その他の便利な機能
カテゴリには該当しない知っておくと便利な機能も記載しておきます。
文字数のカウント
vimでも文字数をカウントすることが出来ます。以下コマンドで文字数を表示することができます。(2015/1/10修正)
行番号の記録
行番号を記録できると行番号を数値で指定しなくても記録したレジストリの前に「‘」をつけるだけで番号を指定できる便利な機能です。カーソルの位置だけで範囲を特定し削除や検索/置換を実行できます。
作業 | コマンド |
---|
行番号の記録 | m任意のキー(アルファベット推奨) |
使用例:任意の行の一括削除 12行目でma,17行目でmbコマンドを入力してa及びbレジスタに行番号を記録する。次に以下コマンドで12行目から17行目を一括削除できる。
:‘a,‘bd
目次へ戻る
マクロ
マクロはvimを使う大きなメリットの一つです。今回は基礎編なのでごく簡単なマクロの使い方を紹介します。具体例やマクロの編集方法は別の機会に記事にしたいと思います。
作業 | コマンド |
---|
マクロの記録 | q任意のキー(アルファベット推奨)を押した後に記録したい作業を行う |
マクロの記録の停止(記録したい作業が終わった後) | q |
マクロの実行 | @記録したアルファベット |
マクロの繰り返し実行 | 繰り返したい回数@記録したアルファベット |
目次へ戻る
最後に
書き始めてから分量の多さに困惑し、記事を分割しようかと悩みましたが1記事でvimの基本動作をお伝えしようと目次を付けて対応しました。お見苦しい点はご容赦下さい。vimの機能は膨大であり分厚い書籍も出版されている程です。とても全機能を紹介するつもりはありませんでしたが、普段自分が何気なく使っている機能ですら記事にするとかなりな分量で驚きました。 [adsense]