viのファイルの保存と終了方法

viでのファイルの保存方法は以下のようにいくつかあります。

入力キー 意味
:w ファイルを保存
:q ファイルを保存せずに閉じる。ただし、内容が変更されている場合はファイルを閉じることはできません。
:wq ファイルを保存して閉じる。
:q! ファイルを強制的に閉じる。ファイルに変更があっても保存せずにファイルを閉じる。
:w ファイル名 別のファイル名で保存する

ファイルの一覧を見る

linuxのコマンドベースでファイルの一覧を表示したいときには「ls」コマンドを使用します。

カレントディレクトリのファイル一覧を見る時は単純に以下のように実行します。

$ ls

これに以下のように「-l」オプションをつけると更新日などの詳細情報を付加した形で表示されます。

$ ls -l

またカレントディレクトリではないディレクトリにあるファイル一覧を表示させたい場合は、以下のようにディレクトリを指定します。

$ ls -l /home/hoge/test

viの基本操作

「viとは」でviがどんなものか少しつかめたと思います。

次はviでテキストファイルを編集する上で知っておくべき基本的な操作方法を説明します。

1. コマンドモードと挿入モード

viには「コマンドモード」と「挿入モード」の二つのモードがあります。

コマンドモードでは、文字列検索、カーソルの移動、コピー&ペーストなどを行います。
一方挿入モードではファイルへの文字列挿入を行います。

この二つのモードの行き来は以下のようになります。

  • コマンドモード ➡︎ 挿入モード
    • i (カーソルの手前に挿入される)
    • a (カーソルの後ろに挿入される)
  • 挿入モード ➡︎ コマンドモード
    • ESCキー

ちなみにviを起動したらコマンドモードから始まります。

2. 文字の挿入

iやaを押して挿入モードになったらそこからのキー入力はそのままテキストファイルに挿入されます。
たとえばコマンドモードの状態で「abc」と入力するとbcが挿入されます。

3. カーソルの移動

カーソルの移動が素早く柔軟に行えるのもviの大きな長所の一つです。

以下にカーソルの移動方法一覧を示します。

入力キー 意味
p 一つ上の行に移動
pの前に数字を入れるとその数字の分だけ上の行に移動する
j 一つしたの行に移動
jの前に数字を入れるとその数字の分だけ上の行に移動する
h 一つ左の文字に移動
hの前に数字を入れるとその数字の分だけ上の行に移動する
l 一つ右の文字に移動
lの前に数字を入れるとその数字の分だけ上の行に移動する
G 最後の行に移動
数字G 数字で指定した行に移動
0 行の先頭に移動
^ 行の最初の文字に移動
$ 行の最後に移動
w 次のwordに移動する。
Ctrl-u 半画面上に戻る
Ctrl-d 半画面下に進む

4. コピーと切り取り

コピーや切り取りもコマンドモードで行います。

入力キー 意味
x 1文字切り取り(削除)。
xの前に数字を入れるとその数分の文字数が切り取られる。
dd 1行丸ごと切り取り(削除)。
ddの前に数字を入れるとその数分の行が切り取られる。
yy 1行丸ごとコピー。
yyの前に数字を入れるとその数分の行がコピーされます。

6. 貼り付け

貼り付け方法は以下の二種類あります。

入力キー 意味
p 文字の貼り付けならカーソルのある文字の右側に、行の貼り付けならカーソルのある行の次の行に貼り付けられます。
P 文字の貼り付けならカーソルのえる文字の左側に、行の貼り付けならカーソルのある行の手前の行に貼り付けられます。

7. 文字列の検索

文字列検索も簡単です。

•/検索文字列
/(スラッシュ)の後に検索したい文字列を入れるだけで検索できます。
たとえば「/abc」と入れて、エンターキーを押せばabcという文字列がある場所まで移動します。
続けてエンターキーを押すと次のabcに移動します。
検索は今ある位置から下に進みますが、SHIFTを押しながらエンターキーを押すと上に向かって検索できます。

9. 文字列の置換

置換の方法はいくつかあります。

入力キー 意味
r カーソルがある文字を別の文字に変更できます。
たとえばmという文字にカーソルがある状態で「rj」とすれば、mがjに変わります。
cw 一つの文字列を別の文字列に置き換えます。
例えば「abc efg hijk lll」という文章があった場合にeのところにカーソルがある状態で「cwjejeje」と入力し、最後にESCキーを押すと、efgという文字列がjejejeにかわります。

viとは

viはサーバー上のテキストファイルを直接編集する際に非常に便利なコマンドです。

sshが使えるサーバーを借りてる方は是非viで直接編集出来るようになって作業効率を上げてください。

1. viとは
UnixやLinuxで使用される最もよく使われるテキストエディタの一つ。
vi以外ではemacsがよく使われてます。

2. viの特徴
viは、マウスや方向キーを使わずに様々な編集をすることが可能です。
マウスや方向キーを使わないため、慣れると非常に高速にテキストファイルの編集が行えます。

一度viに慣れてしまうとvi五感エディタ以外使えない!という人も結構います。慣れればそれくらい使いやすいエディタなんです。

3. 実践

とりあえず実際に使ってみて何と無く感覚をつかんでみます。

$ vi hoge.txt

上記のように打ち込むと「hoge.txt」というファイルがviにより開きます。

新規ファイルの場合は何も内容がないはずです。

まずは、このファイルに「hello」という文字列を保存してみます。

viでファイルを開いたら次のように打ち込んで行ってください。
(カンマは単なる区切りなので入力は不要です)

「i, h, e, l, l, o, ESC, :, w, q, ENTER」

こうすると、「hello」という内容がhoge.txtに保存されます。

4. 実践の解説
これは何をしているかというとそれぞれ以下のようになります。

1. 「i」
挿入モードに移行します。
viでは挿入モードに移行して初めて入力したキーが文字列としてテキストファイルに挿入されます。
入力モードになる前の各キーボードのキーは文字の削除、コピー、貼り付け、カーソルの移動など様々な役割を担います。
その中で、この「i」は入力モードへの切り替えの役割を果たします。

2. 「hello」
直前に「i」があるので挿入モード中のキー入力になるため、全て文字列としてファイルに挿入されます。

3. 「ESC」
エスケープキーです。
キーボードの左上にあるやつです。
これを押すと挿入モードが解除されます。

4. 「:」
コロンです。
これを入力すると、画面の下部に入力カーソルが来て特殊コマンド入力モードになります。
このモードでは、ファイルの保存や、viの終了、文字列の一括変換、各種設定をすることができます。

5. 「wq」
直前に:(コロン)が入力されているので、特殊コマンドモード中の入力になります。

特殊コマンドモードでの「w」はファイルの保存を、「q」はviの終了を意味します。

ここでは、「wq」と連続で入力してますが、これでファイルを保存して終了という意味になります。

6. 「ENTER」
最後にエンターキーを押します。
これにより直前に入力していた特殊コマンドモードを実行します。

つまり、ファイルの保存とviの終了を実行します。

これで、hoge.txtというファイルがhelloという文字列を含んで作成されました。

このファイルを編集するときは、作成時と同じように以下を実行します。

$ vi hoge.txt