Linux8Weeks01-05 標準エディタでファイル編集

あなたは、vi(ヴイアイ)、もしくは、vim(ヴィム)というエディタを使ったことがありますか?

Windowsの標準エディタといえば「メモ帳」だと思いますが、使い方が分からないという声はあまり聞かれません。

でも、Linuxの標準エディタであるviは、知識なく使うことのできるエディタではないので難しく感じてしまうこともありますがマウスやカーソルキーがなくてもファイル編集ができるエディタです。

弟子1
マウスやカーソルキーがないって、どんな状況ですか?
塾長
スマートフォンのキーボードをイメージしてみてください。

 

弟子1
あっ、ほんとですね!カーソルキーがない。
塾長
カーソルキーは設定で使えるようにはできるけど、viでファイル編集している時は、このキーボードの状態でもカーソル移動できます。

 

例えば、iPhoneのイヤフォンはボタンが3個並んでいて、上下のボタンが音量の調節。真ん中のボタンを1回押すと再生中の曲が一時停止し、連続して2回押すと次の曲にスキップなど、限られたボタンの数でそれ以上の機能を有しています。

それに似たような概念がviやvimにはあって、文字を入力するモードと、コピー&ペーストなどのような機能(コマンドモード)を切り替えながらファイルを編集します。

キーボードのホームポジションから手を離さなくても編集できることから、viに慣れてくると通常のエディタよりも速く編集することができるようになります。

viには、文字を入力するインサートモードとコマンドモードがあって、モードを切り替えながらファイルを編集する。

 

弟子1
スマホからリモートログインできるなんて初めて知りました。
塾長
どこにいてもサーバーと繋って、対応することもできるので安心!

 

今回の講座では、Linuxの標準エディタであるvi(vim)の使い方を、動画を交えて学習していきたいと思います。

vi習得のための7ステップ

先にも述べましたが、viは標準エディタでありながら初めて使う人が何の知識もなく使えるエディタではありません。

とっつきにくく、操作を覚える必要があるので、最初は戸惑うかもしれませんが、viは想像以上に強力な武器となりますし、実はそれほど難しいものではありません。

viエディタを起動するには、viコマンドとファイル名を指定します

ステップ1:vimtutor

ここでは、vimのチュートリアルであるvimtutorを起動してviを体験してみましょう。

vimtutor

チュートリアルをじっくり読んでいくと、viの基本的な操作が分かってくると思いますので、サーバーにログインしてvimtutorと入力してください。

日本語で表示させたい人は、以下のように入力してvimtutorを起動させてください。

LANG=ja_JP.UTF-8 vimtutor

vimtutorを終了するには、Escキーを押して、「:wq」もしくは「:q!」と入力すると終了することができます。

塾長
vimtutorを使ったVimの練習はこのように行います。

 

ステップ2:コマンドモード

viエディタでファイルを開いた直後は、コマンドモードになっています。

viのコマンドモードでは、以下のことができます。

    • カーソル位置を操作
    • ファイル内を移動
    • カット&ペースト
    • 文字、単語、行を削除
    • 検索、置換
    • 編集終了

 

ステップ3:基本的なカーソル移動

コマンドモードでは、ファイル内でカーソルを移動することができます。

カーソルの移動に使う4つのキーは、キーボードに右手を乗せたときの標準的な位置の「h」、「j」、「k」、「l」を使います。

h 左方向に移動
j 下方向に移動
k 上方向に移動
l 右方向に移動

 

ステップ4:インサートモードに切り替える

コマンドモードでテキストを挿入したい位置にカーソルを移動するときは、入力モードに切り替えます。

最も一般的な方法が「i」です。

iキーを押すと、カーソルの現在の位置から文字を入力することができます。

i カーソルの現在の位置から文字を入力
I 現在の行の先頭から文字を入力
a カーソルの現在の位置の後ろに文字を入力
A 現在の行の終端に文字を入力
o 現在の行の下に新しい行を追加して文字を入力
O 現在の行の上に新しい行を追加して文字を入力

文字の入力が終了したら、Escキーを押してコマンドモードに戻します。

ステップ5:文字、単語、行を削除

文字の削除はコマンドモードで行います。

文字の削除は、文字単位、単語単位、行単位で行えます。

x 現在のカーソル位置から1文字を削除
dw 現在のカーソル位置から1単語を削除
dd 現在のカーソルが置かれている行を削除

 

ステップ6:文字の検索と置換

文字の検索と置換はコマンドモードで行います。

検索や置換は頻繁に使う機能なので、覚えておくと作業効率が上がります。

ファイル内の文字列を検索

/レッスン

次の候補を検索する際は、/(半角英数のスラッシ)を押してEnterキーを押すだけで次候補にカーソルが移動します

ファイル内の「レッスン」という文字列を全て「lesson」に置換

:%s/レッスン/lesson/g

ステップ7:編集を終了

viを終了する場合は、コマンドモードで次の操作をします。

:wq ファイルの変更を書き出し、エディタを終了
:q! ファイルに変更を書き込まずに強制的に終了

 

動画講座 Linux8Weeks01-05 vi ファイルの編集

 

viで新規にファイルを編集

実際にviでファイルを編集するには、vi スペース ファイル名 とコマンドを打ちます。

指定したファイル名が存在していない場合、新規ファイルとして編集することができます。動画では以下のコマンドでtest.txtを新規に作っています。

vi test.txt

viは、起動直後はコマンドモードとなっているので、新規に文字を入力する際は、iキーを押します

入力内容1

Hello, Neo…
The Matrix has you…
Follow the white rabbit…

タイプミスをした時は、Escキーを押してコマンドモードに戻して修正しましょう。

現在のカーソル位置から1文字を削除するにはxキーで削除

入力内容2

入力内容1の1行目、HelloをWake upと修正してください。

Wake up, Neo…
The Matrix has you…
Follow the white rabbit…

カーソルは、「h(左)」、「j(下)」、「k(上)」、「l(右)」で移動します。

 

viチートシート

viには多くのコマンドがありますが、ここに上げたものだけで十分に使いこなすことができます。

特によく使うものに関しては、()を付けています。
必ず覚えるようにしてください。

基本操作

コマンドモードからインサートモード

i カーソルの現在の位置から文字を入力(
I 現在の行の先頭から文字を入力
a カーソルの現在の位置の後ろに文字を入力
A 現在の行の終端に文字を入力
o 現在の行の下に新しい行を追加して文字を入力
O 現在の行の上に新しい行を追加して文字を入力

 

インサートモードからコマンドモード

Esc インサートモードからコマンドモードに移行(

 

コマンドモード

x カーソルのある場所の文字を削除(
dd カーソルのある行を削除(
yy カーソルのある行をコピー
p カーソルの下の行にペースト
J 行末の改行を削除
u 直前の操作をキャンセル(
. 直前の操作の繰り返し
/検索文字 検索文字の検索(
?検索文字 検索文字を逆方向に検索
:%s/old/new/g oldをnewに置換(

 

ファイルの保存と終了

:wq ファイルを上書きしてviを終了(
:w ファイルの上書き保存
:w! 強制的に上書き保存
:q viの終了
:q! ファイルを保存しないで終了(

 

カーソル移動

h 左方向に移動(
j 下方向に移動(
k 上方向に移動(
l 右方向に移動(
w 単語ごとに右に移動
b 単語ごとに左に移動
$ 行末に移動(
0(ゼロ) 行頭に移動
G (Shift + g) ファイルの最後(
:n n行目に移動(:1 で先頭)(

 

行番号

:set nu 行番号を表示
:set nonu 行番号を非表示

 

シェルモード

:sh 一時的にシェルを使う
exit シェルからviのコマンドーモードに戻る

 

塾長
次の講座ではサーバーにログインできるネットワークを限定してセキュリティを強化していきます。

関連記事

  1. Linux8Weeks03-03 Apache2.4ソース版の設定

  2. Linux8Weeks03-05 ApacheバーチャルホストのSSL…

  3. Linux8Weeks02-01 最低限行っておくべきアクセス制限

  4. Linux8Weeks02-05 コンパイルするための準備

  5. Linux8Weeks03-04 Apacheのバーチャルホスト設定

  6. Linux8Weeks03-01 Apacheソース版のインストール