Linuxを日常的に使う実験ブログ

これで使える!Vimのコマンド集(基本操作編)

 2014-11-23

 2015-03-08

 Linux全般
Vim

こんにちは。今回のテーマは『これで使える!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修正)

作業コマンド
ファイル全体の文字数カウントg

行番号の記録

行番号を記録できると行番号を数値で指定しなくても記録したレジストリの前に「‘」をつけるだけで番号を指定できる便利な機能です。カーソルの位置だけで範囲を特定し削除や検索/置換を実行できます。

作業コマンド
行番号の記録m任意のキー(アルファベット推奨)

使用例:任意の行の一括削除 12行目でma,17行目でmbコマンドを入力してa及びbレジスタに行番号を記録する。次に以下コマンドで12行目から17行目を一括削除できる。

:‘a,‘bd

目次へ戻る

マクロ

マクロはvimを使う大きなメリットの一つです。今回は基礎編なのでごく簡単なマクロの使い方を紹介します。具体例やマクロの編集方法は別の機会に記事にしたいと思います。

作業コマンド
マクロの記録q任意のキー(アルファベット推奨)を押した後に記録したい作業を行う
マクロの記録の停止(記録したい作業が終わった後)q
マクロの実行@記録したアルファベット
マクロの繰り返し実行繰り返したい回数@記録したアルファベット

目次へ戻る

最後に

書き始めてから分量の多さに困惑し、記事を分割しようかと悩みましたが1記事でvimの基本動作をお伝えしようと目次を付けて対応しました。お見苦しい点はご容赦下さい。vimの機能は膨大であり分厚い書籍も出版されている程です。とても全機能を紹介するつもりはありませんでしたが、普段自分が何気なく使っている機能ですら記事にするとかなりな分量で驚きました。 [adsense]