• HOME
  • vimの練習と解説

使い方
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストを復活
現在の除外状況のURL取得
https://command-lab.com
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
気に入ってもらえたらシェアいただけるとうれしいです!
VIM操作の解説

移動系コマンド

vimをこれから学ぶ人に向けて、最初に覚えるべき移動系の基本コマンドの紹介と解説をしていきます。当サイトはショートカットやコマンドを効率的に直感的に覚えるためのサイトです。vimのコマンドを直感的に練習できる機能も用意しておりますので。是非ご活用くださいませ。

カーソル移動

vimの象徴とも言えるべき独特なカーソル移動のコマンドです。vimの操作を覚える時に最初に当たる壁とも言えます。大半の人はなんで矢印キー(→など)を使わずにkとかjで移動しないといけないんだなんて思うかもしれませんが、この操作方法の最大のメリットは指がホームポジションから離れることなくカーソルを移動できることにつきます。ホームポジションを離れずに大半の操作ができることがvimの大きなメリットでもあるのです。もしあなたがブラインドタッチを習得しているのならvimでの操作はストレスのない快適な作業を実現してくれるでしょう

↑に移動k
↓に移動j
→に移動l
←に移動h

表示上のカーソル移動

表示上のカーソル移動と聞いてもピンと来ない人も多いかもしれませんが、これは行の自動改行をオンにしている場合必要となってくるコマンドです。上記kやjなどのコマンドでは行の中の文字数が多い場合の自動改行は無視されるので自動改行部分を上下に移動する場合は下記コマンドが必要となってきます。

表示上の↑に移動gk
表示上の↓に移動gj

行の先頭・末尾にジャンプ

行の中の先頭・末尾に移動するコマンドです。意外とよく使うコマンドなのでvimを扱う上でマストで覚えるべきコマンドです。^と0の違いは、^はインデントを無視した1文字目に移動するコマンドで、0はインデントを含めての0文字目つまり1列目に移動するコマンドです。場合によって使い分けましょう。

行の先頭へ(最初の文字)^
行の先頭へ(1列目)0
行の末尾へ$

単語ごとの移動

単語単位での移動コマンドです。このコマンドを直感的に入力できるようになれば、あなたは立派なvimmerです。英語以外の言語だとなかなか思うように移動できないかもしれませんが、javascriptなどのコード間を移動する場合は非常に強力なコマンドになります。

単語の先頭に進むw
単語の先頭に戻るb
単語の末尾に進むe
単語の末尾に戻るge

ファイルの先頭・末尾に移動

ファイルの中の最初の行と最後の行に移動するコマンドです。行数が長ければ長いほど便利です。どんな仕事をするにしても使う場面が多くあり、覚えておくと非常に便利です。

そのファイルの先頭へgg
そのファイルの末尾へG

指定した行に移動

指定した行に飛べるコマンドです。2通りあり、「:」を入力しコマンドモードからジャンプする方法とコマンドモードに入らずにジャンプする方法があります。個人的には:から始まるコマンドのほうが好みです。ご自身が好きな方を覚えれば十分かと。

〇〇行目に移動:〇〇 Enter
〇〇行目に移動〇〇G

現在カーソルを画面の中央に

このコマンドは移動やスクロールとは少しだけ違い、カーソル位置を画面の中央に持ってくるというコマンドになります。上下のコードを見通したい時などに使います。知っておくと便利なコマンドです。

現在カーソルが画面中央にzz

行の中の特定文字に移動

行の中の特定文字の箇所に瞬時に移動するコマンドです。このコマンドを自由自在に打てるようになるといよいよマウスの出番がなくなります。ホームポジションを離れずに大体の操作ができるようにもなるでしょう。vimの極めるには避けては通れないコマンドです。

その行の順方向に〇を1文字検索f〇
1文字検索を順方向に繰り返し;
1文字検索を逆方向に繰り返し,
その行の逆方向に〇を1文字検索F〇

ファイルの中の文字列検索

通常エディタでいうctrl+fの検索などと同じような動きをするのがこのコマンドです。順方向と逆方向それぞれコマンドがあるので状況によって使い分けるとvimの上級者と言えますね。一度検索をかけた後に同じ文字で次の検索結果に飛びたい場合は「n」や「N」を使います。

順方向に文字列検索/〇〇 enter
逆方向に文字列検索?〇〇 enter
文字列検索を順方向に繰り返しn
文字列検索を逆方向に繰り返しN

ジャンプしてきた箇所に移動

検索や行移動などでジャンプしてきた時、さっきまでいたところに戻りたい時に使えるコマンドです。こういったコマンドが用意されているところがvimが愛される理由とも言えますね。

ジャンプしてきた箇所に戻るctrl + o
ジャンプしてきた箇所に進むctrl + i

スクロール系コマンド

vimは基本的にはマウスを使わないことを前提として作られているので、スクロールも当然コマンドで行っていきます。実はマウスのスクロールホイールからもスクロールできたりしますが、ホームポジションから離れる分、煩わしさもあります。スクロール系のコマンドもマスターしておけばホームポジションから離れることなく効率的にコーディングできるようになるでしょう。

半画面分上に移動ctrl + u
半画面分下に移動ctrl + d
1画面分上に移動ctrl + b
1画面分下に移動ctrl + f

変更した箇所を移動

変更した箇所に戻れるコマンドです。vim は変更した履歴を保存しているので変更履歴にそって移動でき、非常に便利なコマンドです。 

変更した箇所を一つ戻るg;
変更した箇所を一つ進むg,

編集系コマンド

vimの編集系のコマンドで最初に覚えておくべき基本的なコマンドを集めました。別記事で紹介している移動系のコマンドと合わせて覚えれば、ひとまずvimを実務でも使用できるくらいになるはずです。

vimを自由自在に動かせるようになれば、コーディングもかなり楽になるはず。慣れるまではなかなか思うように動かないとは思いますが、当サイトで繰り返し練習し習得していきましょう。

編集モードに切り替え

ノーマルモードから編集モードに切り替えるコマンドです。編集モードに切り替える動作は様々なバリエーションがあります。場合によって無意識に使い分けられるようになれば、あなたは立派なvimmerです。

編集モードに切り替え(カーソル前)i
編集モードに切り替え(カーソル後ろ)a
行の最初に移動して入力モードにI
行の最後に移動して入力モードにA
下に行を挿入して入力モードにo
上に行を挿入して入力モードにO

ノーマルモードに戻るコマンド

ノーマルモードに戻るコマンドです。escしか説明していないサイトも多いですが、実は「ctrl + [」でも切り替えが可能です。私は後者のほうがホームポジションから離れることなく入力できるので好みです。またノーマルモードに戻るコマンドを「jj」とキーバインド設定しておくと非常にスムーズな切り替えが可能となります。その際はvimrcという設定ファイルの編集が必要です。 

ノーマルモードに戻るesc
ノーマルモードに戻る(ctrl押下var)ctrl + [
ノーマルモードに戻る(おすすめ設定)jj

文字を置き換えモード

カーソル上の文字を消去しなくとも置き換えられるコマンドです。文字を消去する手間がなくなるので、覚えておくと効率よく編集できます。1文字置き換えの場合は置き換え文字入力とともに置き換えモードは終了しますが、複数文字置き換えモードの場合はescでモードを終了する必要あります。

カーソル上の文字を1文字置き換えr
複数文字置き換えモードに切り替えR
置き換えモード終了esc

ビジュアルモード

選択モードとも言えるビジュアルモードに切り替えるコマンドです。とくに行を選択するコマンドは非常によく使うので必ず覚えておきたいところです。

ビジュアルモードに変更v
ビジュアルモードに変更して行を選択V

コピーペーストなど

コピー・ペーストなどに関するコマンドです。ヤンクとはコピーとほぼ同じ意味です。vimではdコマンドで消去した場合も自動的にヤンクされるので注意が必要です。ヤンクする内容のコントロールはレジスタという仕組みを使いますが、それは他の記事で説明します。

ヤンク(コピー)するy
1行ヤンク(コピー)するyy
一文字消去(&ヤンク)x
消去する(&ヤンク)d
1行消去する(&ヤンク)dd
貼り付けp

便利なモーションコマンド

vimの大きな魅力のひとつでもあるモーションコマンドの紹介です。私がよく使うものをまとめました。あなたがモーションコマンドを習得したのであれば、vimはなくてはならない存在となることは間違い無いでしょう。

htmlタグの中身を消去して編集モードにcit
htmlタグの中身を選択vit
htmlタグの中身を消去dit
htmlタグの中身をヤンク(コピー)yit
“”の中身を消去して編集モードにci”
“”の中身を選択vi”
“”の中身を消去di”
“”の中身をヤンク(コピー)yi”
カーソル上の単語を消去して編集モードにciw
カーソル上の単語を選択viw
カーソル上の単語を消去diw
カーソル上の単語をヤンク(コピー)yiw

ファイル操作系コマンド

テキストを編集する上でファイルの保存や新規作成などのファイル操作は必ず必要です。ここでは基本中の基本であるvimのファイル操作について練習できます。下部にはコマンド一つ一つに説明ありますので良ければご参照くださいませ。

ファイルを開く

既存のファイルを開くコマンドです。指定したファイル名が既存ファイルに存在しなければ新規作成になります。新規作成した時点では保存しないかぎり、ファイルは追加されていないので注意が必要です。

ファイルを開く(新規作成):e [開きたいファイル名またはパス]

保存する

ファイルを保存するコマンドです。「:w」のwはwriteの頭文字と覚えておけば覚えやすいです。vim初心者の人は無意識に「ctrl + s」を押して保存した気になりがちなので注意が必要です。「:w」だと現在開いているファイル名で上書き保存するが、「:w test.js」などのようにファイル名を指定すると別名で保存となります。

保存する:w

終了する

vimモードを終了するコマンドです。「quit」の頭文字と覚えておくと良いでしょう。このコマンドでターミナル(コマンドプロンプト)に戻ります。ただし、ファイルを保存していない状態で終了しようとすると「No write since last change」とメッセージが出て終了できないので、下記で紹介するように「!」を最後に付け足す必要があります。

終了する:q

強制終了する(保存せずに終了)

変更を保存していない状態では「:q」コマンドでvimの終了できません。そういった場合は「:q!」と最後に!をつけることで強制終了できます。

強制終了する(保存せずに終了):q!

ファイル名を変更する

「:f 」の後にファイル名を指定するとそのファイル名に変更するコマンド。例でいうと「:f test.html」。fは「file」の頭文字をとっていると覚えておけば覚えやすいですね。

ファイル名を変更する:f [ファイル名]

保存して終了する

保存の「:w」と終了の「:q」を組み合わせたコマンドです。writeしてquitすると覚えておけば覚えやすそうですね。

保存して終了する:wq

vimを中断する

vimを一時的に中断したい時のコマンドです。このコマンドでvimを中断した後、ターミナル(コマンドプロンプト)で「fg」と入力するとすぐに中断時の状態に復帰できます。

vimを中断するctrlz

中断した状態を復帰

「ctrl + z」でvimを中断した後にターミナル(コマンドプロンプト)上で打つコマンドです。中断した際のvimの状態に戻ります。

中断した状態を復帰fg

画面分割コマンド

他のモダンなエディタと同様にvimでも画面分割が簡単にできるように設計されています。ウィンドウ間の移動もすべてコマンドでできるので慣れればスムーズに複数ウィンドウでの作業ができるようになります。難しいコマンドではなく、覚えることもそれほど多くはないので是非使いこなせるようになりましょう。

画面を分割

画面を分割するコマンドです。上下と左右の分割それぞれコマンドがあります。分割の際はウィンドウは同じ幅で等分されます。ウィンドウサイズを変更する場合は別のコマンドが用意されています。
こちらで紹介しているのは短縮した形ですが、「:split」や「:vsplit」とコマンドを打っても同じように動作しますので、覚えやすい方で覚えてしまいましょう。

画面を上下に分割:sp (:split)
画面を左右に分割:vsp (:vsplit)

ウインドウを閉じる

分割したウィンドウを閉じるときに使うコマンドです。すべてのウィンドウを閉じるとターミナル(コマンドプロンプト)に戻ります。vimmerを目指すのであれば下記コマンドをすべて覚えておきましょう。必ず使う機会はあります。

現在のウインドウを閉じる:q
すべてのウィンドウを閉じる:qall
現在のウィンドウ以外を閉じる:only

ウィンドウの移動

ウィンドウを分けても、下記コマンドを知らないと移動できませんので、必ず覚えましょう。「ctrl + w」のあとに入力するキーはvimのカーソル移動のキーと同じなので直感的に移動できるかと思います。

Windows端末では本サイトの練習モード時にブラウザの「新規タブを開く」が動作してしまいます。macでは正常に動作します。

ウィンドウを順番に移動ctrl + w w
下のウィンドウに移動ctrl + w j
上のウィンドウに移動ctrl + w k
左のウィンドウに移動ctrl + w h
右のウィンドウに移動ctrl + w l

ウィンドウサイズの変更

ウィンドウを分割した際は同じ大きさで分割されますが、作業内容によってその大きさを変更したい場合もあるかと思います。その際はこちらのコマンドでウィンドウの大きさを変更します。下記コマンドを打つ前に数字を入力することで変更の度合いを指定できます。(例:5 ctrl + w >)

Windows端末では本サイトの練習モード時にブラウザの「新規タブを開く」が動作してしまいます。macでは正常に動作します。

現在ウィンドウの縦方向のサイズを増やすctrl + w +
現在ウィンドウの縦方向のサイズを減らすctrl + w –
現在ウィンドウの横方向のサイズを増やすctrl + w >
現在ウィンドウの横方向のサイズを減らすctrl + w <

レジスタ関連コマンド

レジスタはvimをメインで扱うのであれば絶対に学んでおきたい機能です。

vimはヤンクや消去の作業をするたびにレジスタにその内容が保存される性質であるため、普通のエディタのようにコピー・ペーストがうまくいかない場合があります。特にデリート作業をした時にその内容がいちいち保存されてしまうので、通常のエディタで慣れている人はペーストする内容が思い通りにならなくて、つまづきます。

レジスタの性質や機能を学んでその操作に慣れておけば、vimをメインエディターとして使うのに不自由のないものとなるでしょう。

まず下記練習モードで実際に1度手を動かしてみてから、レジスタ操作の基本ルールを覚えていただき、改めて練習モードを繰り返し行うと効果があがります。

レジスタ操作の基本

レジスタ操作の基本ルールは「”」でレジスタ操作を始め、次に「a」などのレジスタの名前を指定し、「y」、「d」などコピー(ヤンク)や切り取りの操作をするという流れになります。上記練習ではコピーした直後でペーストを行っていますが、「a」などの名前でレジスタを保存しておけば、合間に様々な操作をしていても、「a」のレジスタを上書きしない限り、「a」の値をいつでもペーストできます。

基本の形「”」→「a〜zの文字」→「yなどのコマンド」

レジスタ関連コマンド

上記基本ルールに沿って、よく使いそうなコマンドをご紹介。レジスタの名前は下記では具体的に紹介しておりますが、「a~z」の間であれば何でも良いと思ってください。

選択範囲をレジスタ「a」に保存する“ay
現在行をレジスタ「b」に保存する“byy
選択範囲を消去しレジスタ「c」に保存する“cd
現在行を消去しレジスタ「d」に保存する“ddd
レジスタ「a」の内容をペーストする“ap

レジスタの情報一覧を表示

保存したレジスタの内容を確認したい時に入力するコマンドです。ちなみにレジスタの「0」は直近にコピー(ヤンク)したものが入り「1~9」は削除したものの履歴を順番に保存していきます。この件は下に一覧を載せておきます。

レジスタの情報一覧を表示:reg enter

レジスタの名前について

レジスタ一覧を見るとわかりますが、様々な名前でレジスタが登録されています。それぞれの意味についてよく使う箇所のみフォーカスしてご紹介します。

レジスタ「0」直近にヤンクした情報が格納される。逆に言えば「d」や「x」などで操作した内容は保存されない。
レジスタ「1~9」直近に削除した情報が順番に格納される。逆にヤンクした内容はここには保存されない。9以降の情報は削除されてしまう。
レジスタ「a〜z」「a〜z」の名前を明示的に指定して保存できる。この方法でレジスタを保存する際はレジスタ0には格納されない。

INSERTモード中のレジスタの使用について

INSERTモード中にレジスタを使用するときは「ctrl + r」の後に「レジスタ登録名」を押下します。「ctrl + r」を押下するとカーソルが「”」に変わるのでその状態で「a~z」などのレジスタ登録名を入力するとその内容がペーストされます。

INSERTモード中にレジスタペーストctrl + r [レジスタ名]

実はレジスタのコマンドについては他にまだまだ存在していたりするのですが、全部紹介すると混乱してしまうかもしれないので割愛します。しかしここで紹介しているものを覚えておけば、十分vimをメインエディタとして使える実力をつけることができます。是非しっかり練習して身につけてください。

最上部に移動