「Linux標準教科書」でお勉強(第6章)viエディタ

当ページのリンクには広告が含まれています。
vi(vim)の使い方

「Linux標準教科書」の第6章は「viエディタ」です。

ここでは、viというテキストエディタの使い方が解説されています。

これは、Linuxの本来の使い方であるターミナル(コマンドライン)で操作できるLinux標準搭載のテキストエディタで、マウスや矢印キーを使わずに操作ができる反面、操作方法が独特なため、特別に章が設けられています。

今回は、このviエディタとその改良版のvimエディタの使い方について勉強したので、私なりにまとめて紹介します。

覚えることが沢山あるので、vi(vim)を使いながら、必要なときに必要な分だけ覚えていくのが一番良い方法だと思います。

そんな時に、この記事を備忘録(チートシート)として使っていただけると幸いです。

目次

vi(vim)の特徴

先ほど「vi(vim)の操作方法は独特」と書きましたが、他のテキストエディタと大きく違うのが、「モード」と「コマンド」です。

vi(vim)には、役割の違う「モード」があり、このモードを切り替えながらテキストを編集していきます。

そして、モードの操作には「コマンド」の入力が必要になります。

このため、「コマンドの切り替え方法」と「操作のためのコマンド」を覚えなくてはなりません。

また、viもvimも、Linuxの本来の使い方であるターミナル(コマンドライン)による操作ができるテキストエディタであるという特徴があり、これがLinuxに標準搭載されている大きな理由といえます。

viとvimの違いとモードの切り替え

Linux標準教科書の第6章の冒頭の文章に「vi(vim)」と表記されています。
冒頭でも少し書きましたが、viとvimは別のソフトウェアで、viの改良版がvimです。

viとvimは具体的にどう違うのかというと、モードの種類が違います。

viには2つ、vimには4つのモードがあり、下の表のように各モードで役割が違います。

viとvimの比較表

viは起動時にはコマンドモードで開き、vimはノーマルモードで開きます。

各モードへは上の表にあるキーで切り替え、「Esc」でviではコマンドモードに、vimではノーマルモードに切り替えます。

viは2つのモードを行き来するだけなのですが、vimは、必ず「Esc」でノーマルモードに戻ってからでないと、インサートモード・コマンドモード・ビジュアルモードへの切り替えができません。

また、vimにはviにはないビジュアルモードが搭載されています。

このように、viとvimではモードに違いはありますが、使用するコマンドはほとんど一緒です。

では、viとvim、どちらを使えば良いでしょうか。

もし、今後プログラミングを学びたいと思っている方にはvimをおすすめします。

なぜかというと、Visual Studio Codeのようなプログラミング用のテキストエディタには、vimと同じような操作ができるプラグインなどがあるからです。

「別にプログラミングをやる気はないし、簡単な方がいいよ」という方はviをおすすめします。

vi(vim)で使う基本的なコマンド

viもvimも、操作にコマンドを多く使います。

コマンドは、入力するとターミナルの一番下の行に入力の内容などが表示されます。

コマンドモードに切り替えると、カーソルがターミナルの一番下の行に移動します。

viのコマンド入力位置

これから紹介するコマンドは、Linux標準教科書よりも少し数が多いです。

実は、以前vimを少し使ったことがあり、その時に調べて使ったものも含めました。
コマンドの表内で赤字で表記してある分がLinux標準教科書に掲載されていたコマンドで、黒字の部分が追加した分です。

また、基本的にviをベースに紹介しますが、vimをお使いの方は、viをvimと置き換えて読んでください。

vi(vim)の起動・保存・終了

ファイル操作で最も基本的なviの起動とファイルの保存、終了のコマンドを表にまとめました。

目的コマンド          備考
ただの起動(空の無名ファイルを開く)viオープニング画面が表示されるので、「i」でインサートモードに切り替えて、打ち込み始めると画面が変わる
既存のファイルを開いて起動vi ファイル名
ファイルを名前を付きで新規作成して起動vi ファイル名同じディレクトリ内に同名のファイルがない場合
別のディレクトリにあるファイルを開いて起動vi 開きたいファイルのパス
編集中の上書き保存:wviは終了しないので、そのまま編集続行可能
別名で保存:sav ファイル名実行後は、別名で保存したファイルを編集することになる
上書き保存してviを終了させる:wq
ただの終了:q
強制的に終了:q!

viは、ターミナルでviと入力しただけでも起動できるのですが、その場合は以下の画像のようにオープニング画面が表示されます。

viの起動画面

ここから「i」キーを押し、何か文字を入力しだすと、名前のない空のテキストファイルが開いて入力された文字が表示され始めます。

この状態から名前をつけて保存したい場合は、「:sav ファイル名」で保存します。

また、「vi ファイル名」で起動すると、ターミナルを起動したディレクトリ内に同名のファイルがない場合は、名前付きで新規作成できます。

vi(vim)のモードの切り替え

vi(vim)でテキストファイルを編集するには、モードの切り替えが必要です。
モードの種類と切り替え方法は先ほど表にまとめて紹介しましたが、切り替えコマンドだけ抜き取って表にしたものを念のため紹介します。

コマンドを確認するだけならこちらの方が便利だと思います。

目的コマンド   備考
インサートモードに切り替えiカーソルの現在ある位置の左側に入力できるようになる
インサートモードに切り替えaカーソルが右にひとつ移動し、その左側に入力できるようになる
インサートモードに切り替えI(大文字)カーソルが行頭に移動して、その左側から入力できるようになる
インサートモードに切り替えA(大文字)カーソルが行末最終文字の右側に移動して、その左側から入力できるようになる
コマンドモードに切り替え:
ビジュアルモードに切り替えv
各モードからコマンド(ノーマル)モードに切り替え「Esc」キー

文字の入力をするインサートモードへの切り替えコマンドはいくつかあり、それぞれ微妙に違います。

表中の備考にそれぞれの特徴を入れましたので、必要に応じたコマンドを使ってください。

特に、行末に文字を追加したい場合、「i」キーで切り替えると最後から2番目に文字が入力されてしまいます。

「a」キーで切り替えましょう。

カーソルの移動

vi(vim)ではカーソルの移動にマウスや矢印キーは使いません。

コマンドモード(ノーマルモード)で以下のキーを使います。

目的コマンド備考
ひとつ上にカーソルを移動j
ひとつ下にカーソルを移動k
ひとつ左にカーソルを移動h
ひとつ左にカーソルを移動l
1単語進むw
1単語もどるb
1行上にカーソルを移動gk
1行下にカーソルを移動gj
カレント行の行頭へカーソルを移動0(ゼロ)
カレント行の行末へカーソルを移動$
行番号を指定してカーソルを移動:行番号
ファイルの先頭行(1行目)にカーソルを移動gg
ファイルの最終行にカーソルを移動G(大文字)
次のページへ移動「Ctrl」キー+f
前のページへ移動「Ctrl」キー+l

単純なカーソルの移動なら、ブラインドタッチのホームポジションに手を置いて、右手だけで操作できます。

慣れるまで時間がかかりますが、慣れてしまうととても使いやすく、会社でワードを使うときにうっかりコマンドを打ってしまうほどです。

文字のカット・アンド・ペースト

テキストの編集では、カット・アンド・ペーストは必須の操作ですが、その中でvi(vim)のカットは特徴的で、削除の役割も兼ねています。

目的コマンド   備考
1文字カットx削除ではなく、カット(pやPで貼り付け可能)だが、削除としても使用する
カーソルのある単語をカットdwカーソルのある単語だけをカットする
1行カットdd削除ではなく、カット(pやPで貼り付け可能)だが、削除としても使用する
任意の行数をカット行数ddカーソルのある行から指定した行数カットする
カーソルのある単語をコピーywカーソルのある単語だけをコピーする
1行コピーyyカーソルのある行をコピーする
任意の行数をコピー行数yyカーソルのある行から指定した行数コピーされる
カーソルの文字の次または次の行にペーストp
カーソルの文字の前または前の行にペーストP(大文字)

Windowsのメモ帳やオフィススイートでは削除はバックスペースキーや「Del」キーを使いますが、vi(vim)の場合は表中のコマンドを使ってカットします。

カットされた部分のデータは残っているのですが、ペーストしないままにしておくと、結果削除になります。

コマンドの取り消しと繰り返し

Linux標準教科書では、カット・アンド・ペーストのところにコマンドの取り消しが掲載されていますが、取り消しと繰り返しは便利な機能なので、少し多めに紹介します。

目的コマンド         備考
コマンドを1回取り消し(アンドゥ)uLinux標準教科書には「カット、ペーストを1回取り消し」と書いてあるが、その他のコマンドや入力にも有効
アンドゥを取り消す「Ctrl」キー+r
直前のコマンドを実行.
直前のコマンドを複数回実行繰り返したい回数.2.で2回コマンドを繰り返す

文字列の検索

vi(vim)で文字列を検索すると、検索結果としてカーソルが最初にヒットした文字列に飛びます。
また、環境によっては検索してヒットした文字列がハイライトされます。

目的コマンド   備考
文字列を検索する/検索文字列カーソルが検索した文字列のところまで飛ぶ
カーソルのある単語を下方向に検索*もう1回*を押すと、下方向の次のヒットした単語に飛ぶ
カーソルのある単語を上方向に検索#もう1回*を押すと、上方向の次のヒットした単語に飛ぶ
検索した文字列を次の文字列から検索しなおすn
検索した文字列を前の文字列から検索しなおすN(大文字)
:nohでも、「Esc」キー2回連打でも消すことができる場合がある:nohlsearch:nohでも、「Esc」キー2回連打でも消すことができる場合がある

文字列の置き換え

vi(vim)で文字列の置き換えを行う場合、コマンド1つで、1回だけ置き換えるのか、1行に含まれるものすべてを置き換えるのか、ファイル全体の該当部分をすべて置き換えるのか指定することができます。

目的コマンド     備考
カーソルのある行の最初のoldをnewに置き換える:s/old/new置き換えはヒットした最初の文字列だけ
指定した行の最初のoldをnewに置き換える:行数s/old/new
指定した行のすべてのoldをnewに置き換える:行数s/old/new/g
ファイル全体のすべてのoldをnewに置き換える:%s/old/new/g
ファイル全体のすべてのoldをnewに置き換える(置き換えのたびに確認):%s/old/new/gc確認メッセージがコマンドの部分に表示されたら、yキーでYes、nキーでNo、qキーで中断の意思表示を入力

ビジュアルモード

ビジュアルモードはviにはなく、vimにはある機能なため、Linux標準教科書には掲載されていませんが、vimを使うなら覚えておきたい機能なので、紹介します。

ビジュアルモードは、コピーやカットをするときの範囲選択をハイライトの帯で視覚的にわかりやすくするためのモードです。

ハイライトの帯の形状によって、以下の3つのコマンドを使い分けます。

目的コマンド      備考
カーソルのあった場所を起点に、カーソルが移動した先までが範囲(ハイライト表示)v任意の場所にカーソルを移動してからvを入力して起点を決め、範囲を指定(ハイライト)して、カットやコピーなどのコマンドを入力する
カーソルのあった行を起点に、カーソルが移動した先の行までが範囲(ハイライト表示)V(大文字)任意の行にカーソルを移動してからVを入力して最初の行を決め、範囲を指定(ハイライト)して、カットやコピーなどのコマンドを入力する
カーソルのあった場所を起点に、カーソルが移動した先までを対角とした長方形が範囲(ハイライト表示)「Ctrl」キー+v任意の場所にカーソルを移動してから「Ctrl」キーとvを入力して起点を決め、範囲を指定(ハイライト)して、カットやコピーなどのコマンドを入力する

まとめ

「Linux標準教科書」第6章の「viエディタ」の使い方について勉強したので、私なりにまとめて紹介しました。

vi(vim)は、Linuxの本来の使い方であるターミナル(コマンドライン)で操作できるLinux標準搭載のテキストエディタで、マウスや矢印キーを使わずに操作ができる反面、操作方法が独特なため、特別に章が設けられています。

覚えることが沢山あるので、vi(vim)を使いながら、必要なときに必要な分だけ覚えていくのが一番良い方法だと思います。

そんな時に、この記事を備忘録(チートシート)として使っていただけると幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次