gitbashやターミナル、コマンドプロンプトなどのコマンドラインツールで「vi ~/」や「vim ~/」といったコマンドを使うことがよくあります。
この「vi」や「vim」の意味や使い方について実例を用いてわかりやすく解説しています。
「vim」「vi」とは何か?
最初に結論からいうと、「vim」「vi」は、vimというテキストエディタを立ち上げるコマンドです。
VScodeやatomなどの一般的なテキストエディタと異なり、見た目や使い方にクセがあります。ですが、コマンドライン上でそのままファイルの中身を開いて編集できるので、とても手軽なエディタです。
viコマンドの意味と使い方
viの意味は?
viの意味は「Visual Editor」の略です。(所説あります)
Editorというだけあって、ファイルを編集する機能です。テキストエディタに分類されます。
いつ使うか?
gitbashなどのコマンドラインで、設定ファイルを開いて操作するとき使うコマンドです。単に中身を確認したい場合は、cat, less, moreがありますが、viも使えます。
例えば、デスクトップ上にある test.htmlファイルを開きたい場合は以下のようになります。
vi ~/desktop/test.html
「vi」コマンドでファイル「~/desktop/test.html」を開くという処理です。
補足
gitbashやターミナル、コマンドプロンプトのパス指定で出てくる冒頭の「~」はホームディレクトリを指します。
(参考)「~」は何か?ディレクトリを指定するときのチルダの役割
「vi」と「vim」の違い
viを調べると必ずでてくるのがvimという単語です。結論からいうと、「vi」=「vim」で問題ありません。
viはwikiによると初版1976年と約40年以上前のもの。vimは2000年以降で普及してきたviの進化版です。
コマンドは「vi」と「vim」の両方が使えますが、起動するエディタは同じです。
ちなみに、vimは「Visual editor IMproved」の略で、viの改良版という意味です。
Vimエディタの使い方
エディタの起動
または、「vi」も同じです。
例えば、デスクトップ上にある test.htmlファイルを開きたい場合は以下のようになります。
vi ~/desktop/test.html
Enterを押すとすぐにエディタが起動します。
エディタ
立ち上がったエディタの画面は以下のような構造です。
大きく3つのパートから成ります。
①ファイルの中身
②何もない行
└ 冒頭に「~」がある
└ 画面を伸ばすと~が増える。狭めれば減る。
③コマンド入力欄
└ 現在の状態も表示される
※分かりにいのが、キーボードで入力できる箇所が2つあることです(①と③)
エディタのモード
エディタには4つのモードがあります。
- 「挿入モード」
- 「ノーマルモード」
- 「コマンドモード」
- 「ビジュアルモード」
「挿入モード」
・VScodeやatom、メモ帳のようなテキストエディタです。
・上記キャプチャの①です。
・ノーマルモードの状態で、「i」をクリックすると挿入モードになります。
「ノーマルモード」
・改行、行の削除・挿入、コピペができます。
・vim立ち上げ時のデフォルト画面です。
・上記キャプチャ①の画面に対して実行します。
「コマンドモード」
・保存、vimの終了ができます。
・ノーマルモードで「:」を押します。
・上記キャプチャの③に入力できるようになります。
・「esc」キーでノーマルモードに戻ります。
「ビジュアルモード」
・範囲選択ができます。
└ ノーマルモードでも可能ですが、色が反転しないので選択範囲がわかりずらいです。
・コピペや削除で使用するモードです。
・ビジュアルモードと矩形ビジュアルモードの2種類があります。
挿入モード
「挿入モード」はファイルの編集で使います。
挿入モードへの移り方
「i」をクリック (他にも挿入コマンドあり)
画面下のコマンドモードに「–挿入–」と表示されれば、挿入モードの状態です。
マウスは効きません。移動はキーボードの矢印キーを使います。以下のように編集ができます。(例:h1タグの追加)
挿入モードから抜ける
挿入モードから抜けるには「esc」キーをクリックします。(←困ったらコレ)
挿入モードへの入り方
①指定箇所を選択
i: カーソルの前
a: カーソルの後ろ
②行頭か行末を選択
I: 行の先頭(shift+i)
A: 行の末尾(shift+a)
③空白行追加
O: 上に空白行を追加(shift+o)
o: 下に空白行を追加
└ 追加行の先頭を選択(インデント合わせ)
コマンドモード
コマンドモードでは、保存、エディタの終了(通常のgitbashに戻る)などの処理ができます。
一般的なテキストエディタでctrl押しながらする操作は、コマンドモードで行います(※注意:コマンドが違います)
主な使い方
「:」をクリックするとコマンド欄に入力できるようになります。
└ 「esc」でノーマルモードに戻る
①一時保存
:w
└ Enterで確定
完了すると「”test.html” [dos] 14L, 270C 書込み」のように表示されます。
②エディタを閉じる (通常のgitbashに戻る)
:q
└ Enterで確定
└ 変更内容を保存してないとエラーになる
変更保存前のエラー
「E37: 最後の変更が保存されていません (! を追加で変更を破棄)」
③強制終了
:q!
└ Enterで確定
└ 「!」は強制の意味を持つ
ctrl+z でも終了できる
④元に戻す(undo)
:u
└ Enterで確定
└ ノーマルモードで「u」も同じ
コマンドモードのコマンド一覧
- :w 保存
- :q 終了
- :wq 保存&終了
- :q! 強制終了
- :w! 強制保存
- :w ファイルパス ファイルに名前を付けて保存(既に存在するば場合はエラー)
- :w! ファイルパス ファイルに名前を付けて強制保存
ノーマルモードのコマンド一覧
- dd 行の削除
- d0 行の中で、選択位置から前を削除(d+ゼロ)
- D 行の中で、選択位置から後をを削除
・挿入モードでbackspace
・ビジュアルモードで選択し「d」でも可能
コピー&ペースト
- y コピー(選択後)
- yy 1行コピー
- d 切り取り(選択後)
- p 貼付け
※「ヤンク」という言葉が出てきます。「コピー」と同じ意味です。(linuxではコピーのことをヤンク(yank)という)
変更を戻す・進む(undo, redo)
- u :変更を戻す
- ctrl+r :変更を進める
改行
コマンドモードで改行
o :改行(下に改行を追加。挿入モードになる)
O :改行(上に改行を追加。挿入モードになる)
挿入モードで改行もできる
ctrl + o + o :下で改行
ctrl + o + O :上で改行
└ 「ctrl + o」で挿入モード中にコマンドを一つ入力できるモードに入る
└「o」改行を押す
範囲の選択
一般のテキストエディタとは選択方法が異ななります。(shift+カーソルは使えません)
選択方法は①「m」マーキングと②「v」ビジュアルモードの2種類があります。
m :マーキング
└ カーソルがある位置でマーキング
└ 画面右下に「m」文字が表示される
▼操作方法
1. 選択を開始する位置にカーソルを移動
2. 「m」キーを押す
3. 選択の終端にカーソルを移動
4. コマンド(例:「y」コピー)を押す
v:ビジュアルモード
└ 選択範囲が分かりやすくなる(背景色が変わる)
▼操作方法
1. 選択を開始する位置にカーソルを移動
2. 「v」キーを押す(ビジュアルモードに入る)
3. カーソルを移動し(範囲が広がる)
4. コマンドを入力
5. 「esc」キーを押す(ビジュアルモード終了)
移動(カーソル)
- 0 :行の先頭へ移動
- $ : 行の末尾へ移動(shift +4)
- – :一行上の先頭へ移動
- gg : 先頭行へ移動(HOME)
- G :最終行へ移動(END)
- j :1行上へ移動
- k :1行下へ移動
- h :左へ移動
- l :右へ移動
補足
その他のコマンド
shift + h
:先頭へ移動(≒HOME)shift + l
:末尾へ移動
hjklはキーボードの並び順です。
h | j | k | l |
---|---|---|---|
← | ↑ | ↓ | → |
画面移動
- ctrl + d :画面を上にスクロール
- ctrl + u :画面を下にスクロール
矢印でも代替可
shift + ↑
:画面を上にスクロールshift + ↓
:画面を下にスクロール
挿入モードに入る
- i: カーソルの前
- a: カーソルの後ろ
- I: 行の先頭(shift+i)
- A: 行の末尾(shift+a)
- O: 上に空白行を追加(shift+o)
- o: 下に空白行を追加
ビジュアルモードと矩形ビジュアルモードの違い
範囲選択するビジュアルモードには①ビジュアルモードと②矩形ビジュアルモードがあります。
それぞれ選択範囲が異なります。
ビジュアルモード 「V」
始点から、終点までを全て選択します。
矩形ビジュアルモード 「ctrl+v」
列単位で範囲選択をします。
※矩形とは:四角という意味です。正方形や長方形のように四角く選択できます。
選択した範囲で、文字を置換したいときなどに有効です。