プログラミング

【viのモード切替】コマンドモード⇔ノーマルモード⇔入力モード

  • このエントリーをはてなブックマークに追加
  • LINEで送る

こんにちわ!

Linux系のOSで避けては通れないviエディタ。

今回は、viエディタについて解説いたします。

 

『viエディタのモードって何?』
『viのモード切替ができない!』
『viのカーソルすら動かない!』

こんな疑問に答えます。

SE歴25年のオッサンが解説するぞい!
SEおっさん
SEおっさん



スポンサーリンク

【viのモード切替】コマンドモード⇔ノーマルモード⇔入力モード

viエディタには操作するモードという概念があります。

主なモードはノーマルモード・コマンドモード・入力モードの3つです。

【viのモード切替】ノーマルモード⇔入力モード


iキーとESCキーを押下することでモード切替【ノーマルモード⇔入力モード】を行います。

モードの切替方法【ノーマルモード⇔入力モード】
  • 入力モード iキー
    INSERT(またはINPUT)のiキーと覚えよう!
  • ノーマルモード ESCキー

【viのモード切替】ノーマルモード⇔コマンドモード

:キーとESCキーを押下することでモード切替【ノーマルモード⇔コマンドモード】を行います。

モードの切替方法【ノーマルモード⇔コマンドモード】
  • コマンドモード :キー
  • ノーマルモード ESCキー

【viのモード切替】キーボード入力~ファイルを保存まで

viでキーボード入力してファイルを保存するまでの主な流れです。

  1. iキーで入力モード
  2. キーボード入力
  3. ESCキーでノーマルモード
  4. :キーでコマンドモード
  5. wキーとEnterでファイルを保存(writeの頭文字でwキーと覚えよう)
  6. ESCキーでノーマルモード
たろちゃん
たろちゃん
コマンドモードのwでファイルを保存するんだね

ちなみに…

ノーマルモードのカーソル移動はこちら。

  • 下にカーソルが移動…「j」キー
  • 上にカーソルが移動…「k」キー
  • 右にカーソルが移動…「l」キー
  • 左にカーソルが移動…「h」キー

慣れてきたら右「l」と左「h」のカーソル移動はあまり使わなくなります。
(ノーマルモードの詳細は別の記事で書く予定)

【viのモード切替】ファイルを開いてから閉じるまで

viでファイルを開いてからファイルを閉じるまでの主な流れです。
(キーボード入力やファイルの保存は前章をご参照)

  1. vi コマンドでファイルを開く(もしくは新規作成)
  2. iキーで入力モード
  3. ESCキーでノーマルモード
  4. :キーでコマンドモード
  5. qキーとEnterでファイルを閉じる(quitの頭文字でqキーと覚えよう)
SEおっさん
SEおっさん
コマンドモードのqでファイルを閉じるぞい


スポンサーリンク

viのビジュアルモードと切替(ノーマル・ライン・ブロック)

viのモードは、基本となるコマンドモード・入力モード意外にもビジュアルモードがあります。

このビジュアルモードはテキストを選択するモードです。

ビジュアルモードは次の3種類。

ビジュアルモード
  • ビジュアルモード…文字単位で選択[v]
  • ビジュアルラインモード…行単位で選択[V]
  • ビジュアルブロックモード…矩形で選択[Ctrl-v] Windowsでは[Ctrl-q]

ビジュアルモードは使い道・使い方は?

ビジュアルモードはコピペで良く使います。

ビジュアルモードでテキスト選択したものをコピーして、別の所にペーストしたりです。

3種類のビジュアルモードで実際に選択するイメージをそれぞれ見てみましょう。

たろちゃん
たろちゃん
ブロックモードは便利そうだね!


vimエディタとviエディタの関係

厳密にいうと、ビジュアルモードはviにはありません。

ビジュアルモードはviから派生したエディタであるvimに搭載されています。

基本的には今のLinuxはvimとなっている印象です。

viで起動してもailiasとしてvimが設定されており、実際に起動しているのはvimということも多いかと思います。

たろちゃん
たろちゃん
あ、そうなんだ

もっというと…

VimはCUIで動作しますが、GUIで動くVimをGvimと呼んでます。

意外と奥が深いぞい
SEおっさん
SEおっさん


スポンサーリンク

viのモード切替が存在する理由【CUIとGUI】

モードなんて無い方がシンプルですよね。

そもそも、なぜviにモードがあるのでしょうか?

viに2つのモード(入力モードとコマンドモード)がある理由は…

viはCUI(キャラクタユーザインタフェース)のエディタだからです。

CUIとは

たろちゃん
たろちゃん
CUIって何?

CUIはキャラクタユーザインタフェースと呼ばれ、エディタの見た目が文字ベースとなっています。

そして、viはCUIです。

CUIであるviは文字ベースの見た目のため、

文字を入力するモードと命令を実行するモードを分けないと操作がややこしくなる

という理由で、コマンドモードと入力モードを切替ながら作業します。

GUIもあるぞい
SEおっさん
SEおっさん

GUIとは

CUIに対して、GUIと呼ばれるグラフィカルユーザーインターフェースがあります。

GUIとは、ユーザが画面上で視覚的に捉えて行動を指定できるインタフェースのことです。

WindowsやMacのエディタは基本的にはGUIです。

WindowsやMacでエディタが立ち上がると…

ウィンドウとして表示されてマウスでドラッグや☓ボタンで閉じたりできますよね。

それは、GUIだからできる技なのです。

CUIは文字によるコマンド入力方式のインターフェースなので、ドラッグはもちろんの事、閉じたり保存したりもコマンドを入力が必要です。

viはコマンド入力モードと文字入力モードの2つで操作を切り替えているのです。

たろちゃん
たろちゃん
なるほど!
そういうことね

コマンド入力モードでは、ファイルの保存やカーソルの移動・文字のコピーペーストなどを行います。

入力モードでは、エディタに文字を入力します。

一昔前のパソコンがCUIでしたが、Windowsで一気にGUIが広まりました。

現在のパソコンのインターフェースは、ほとんどGUIを採用しています。

サーバはGUIである必要はないのでCUIであるviを使うことも多いです。

 



スポンサーリンク

viのモード切替!まとめ

いかがでしたでしょうか?

viのモード切替について解説いたしました。

 

振り返ってみましょう!

モードの切替方法【ノーマルモード⇔入力モード】
  • 入力モード iキー
  • ノーマルモード ESCキー
モードの切替方法【ノーマルモード⇔コマンドモード】
  • コマンドモード :キー
  • ノーマルモード ESCキー
ビジュアルモード
  • ビジュアルモード…文字単位で選択[v]
  • ビジュアルラインモード…行単位で選択[V]
  • ビジュアルブロックモード…矩形で選択[Ctrl-v] Windowsでは[Ctrl-q]

ビジュアルモードはコピペで良く使う。

viでキーボード入力してファイルを保存するまで

  1. iキーで入力モード
  2. キーボード入力
  3. ESCキーでノーマルモード
  4. :キーでコマンドモード
  5. wキーとEnterでファイルを保存
  6. ESCキーでノーマルモード
viでファイルを開いて閉じるまで

  1. vi コマンドでファイルを開く(もしくは新規作成)
  2. iキーで入力モード
  3. ESCキーでノーマルモード
  4. :キーでコマンドモード
  5. qキーでファイルを閉じる

最後に…

エディターは作業効率にかなり影響する部分です。

私がviエディタを初めて触ったときは

『なんじゃこりゃ』

使いにくいってレベルじゃありませんでした(笑)

でも、使っていくうちにviエディタの打ちやすさに目覚めて行きます。

慣れてくると『viじゃなきゃダメ』ってなるかも。

viに慣れすぎて…

メーラでカーソル移動を使用とすると「jjj」となることも(笑)
(ここまで来るとvi使い)

一緒に頑張りましょー

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java SE Gold
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメント

  1. まなぶ より:

    ノーマルモードのカーソル上移動のキーの記述がhになってます。

    1. SEおっさん より:

      ご指摘ありがとうございます!!
      修正いたしました。

コメントを残す

*