Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

UNIX(Linux)
Beginner

  1. What is UNIX (Linux)? - Japanese Only
  2. What are Distributions? - Japanese Only
  3. About CentOS, macOS, and CUI - Japanese Only
  4. Installing CentOS with Virtualization Software and macOS CUI Environment - Japanese Only
  5. Login, root User, and Shutdown - Japanese Only
  6. Command Structure and Important Notes - Japanese Only
  7. File System and Navigating Directories (cd and pwd) - Japanese Only
  8. Key Directories and Listing Contents (ls) - Japanese Only
  9. Advanced Directory Navigation (cd) and Paths - Japanese Only
  10. Advanced ls Command (Part 1) and Dotfiles - Japanese Only
  11. Advanced ls Command (Part 2) - Japanese Only
  12. Tab Completion for Input - Japanese Only
  13. Creating Directories (mkdir) - Japanese Only
  14. Quick File Creation (touch) and About Files - Japanese Only
  15. Standard I/O, Redirection (> and >>), echo, and cat - Japanese Only
  1. Deleting Files and Directories (rm) - Japanese Only
  2. Copying Files and Directories (cp) - Japanese Only
  3. Moving and Renaming Files and Directories (mv) - Japanese Only
  4. What is the vi Editor? - Japanese Only
  5. Basic vi Usage (Part 1) - Japanese Only
  6. Basic vi Usage (Part 2) - Japanese Only
  7. Remote Operations via Terminal (SSH and Tera Term) - Japanese Only
  8. Installing Software (yum and Package Managers) - Japanese Only
  9. User Overview, Verification, Creation, and Switching (adduser and su) - Japanese Only
  10. User Passwords, Deletion, Modification, and sudo (passwd, userdel, usermod) - Japanese Only
  11. About Groups and the groups Command - Japanese Only
  12. Adding, Deleting, and Modifying Groups (groupadd, groupdel, groupmod) - Japanese Only
  13. About Permissions - Japanese Only
  14. Setting Permissions (chmod and chown) - Japanese Only
  1. Home
  2. UNIX(Linux)Beginner - Basic vi Usage (Part 1)

Basic vi Usage (Part 1) - Japanese Only

みなさまこんにちはでございます。続きまして『vi』の使い方を色々と見ていきましょう。

そこで最初にご報告なのでございますが今回は「『vi』を使うにあたっての最低限の知識」のご紹介とさせて頂きますね。というのも『vi』(vim)は超絶使いやすい素敵エディタなわけなのですが使いやすい反面、ものすごーーーーく色々な機能がございましてそれらを全て紹介するとなるととんでもない文章量になっちゃうわけなんです。

多分著者が普段使ってるコマンドとかを紹介するだけでも薄い本が一冊書けるくらいの量になっちゃって著者の心が折れる事うけあいなので今回は超基礎的な部分って感じにさせて頂きたく存じます(キリッ。

(´-`).。oO(『Vim(vi)入門編』みたいな記事は気が向いたら書きます...多分...)

あとこれから『vi』を初めて触るって方もちょいちょいいらっしゃるかと思うのですが『vi』系のエディタをなるべく最短で使いこなすコツは「体で覚える」ってことになりましてですね、つまり勉強とかよりもスポーツとか運動とかそっちに近いものなんだなって意識を持っておくと良いかもしれません。

パソコンな世界なのに何を言ってるかわからないって思った方も多いと思うのですが職場とかでバシバシ『vi』を使ってる方に「『vi』は勉強とスポーツどっちに該当すると思いますか?」と聞いてみると多分ほとんどの方が「スポーツ」って言ってくれるかと思います。おそらくやり込んだゲームとかで手と指が勝手に動くような感覚に近い感じかなって思いますのでそんな意識を持ちつつ色々とやっていきましょう。

というわけでまずいつも通りCentOSにログインしてみます。カレントディレクトリはどこでもOKなのですが『root』ユーザーでログインすると初期カレントディレクトリが『/root』になりますのでまたもやここで作業していきたいと思います。

というわけでまず『vi』を起動する為のコマンドを紹介します。以下のような感じです。

[root@localhost ~]# vi test.txt

これについては簡単ですね、『vi ファイル名』って感じで打ち込めばOKです。この引数のファイル名の部分ですが「存在していないファイル名を指定した場合は新規ファイルの作成、すでに存在しているファイル名だった場合はそのファイルの編集」という感じになります。

そして上記のコマンドをタイピングしてエンターキーを押してコマンドを実行させるとこんな感じになります。


~
~
~
~
~
"test.txt" [New File]

画面いっぱいに『~』が出てきて下の方に「"test.txt" [New File]」って感じの現在編集中のファイル名とかが出てきてますね。これが『vi』が起動している状態になります。

ここが慣れないとややこしいのですが今は「『vi』が起動している状態」でございますので「OSがコマンド受け付け待ちをしている状態(プロンプトが出力されている状態)」とは全く違います。なのでこの状態だと『ls』とか『cd』とかそういうOSで使うコマンドは入力出来ませんのでご注意です。

そして『vi』には『モード』という非常に特徴的な仕組みがございまして『コマンドモード』(ノーマルモード)と『インサートモード』(編集モード)と『exモード』という3つの『モード』が存在しています。最初に『vi』を起動した状態だと必ず『コマンドモード』な状態になっていますね。

『コマンドモード』はその名の通り「コマンドを打つ為のモード」になりますのでこの状態だとテキストの入力が出来ません。

「じゃあテキスト入力する時はどうするのー?」と思った方は『i』キーをバシッと押してみましょう。はい、皆様のお手元のキーボードに居るであろうそこの『i』くんでございます。

『i』キーを押すと以下のような感じになります。


~
~
~
~
~
-- INSERT --

下部に「-- INSERT --」みたいに出てきてますね。これが『インサートモード』な状態になります。この状態だとテキストを入力出来るようになってますので以下のような感じでお好きなテキストを入力してみましょう。ちょいと練習したい事があるので以下のように複数行入力して頂けるととっても嬉しいでございます。

Miku Hatsune

This is a CentOS!
~
~
~
~
~
~

そしてテキストの入力が終わったら『エスケープ』(ESC)キー、または『Control』キーを押しながら『[』キーを押してみて下さい。Mac使いの方は『command』キーと間違えないようにして下さい、『command』ではなく『Control』キーでございます。『Control』と『command』を間違えちゃうのはMac使いの方あるあるでございますね。

そうすると以下のように

Miku Hatsune

This is a CentOS!
~
~
~

「-- INSERT --」っていうのが消えましたね。これでまた『コマンドモード』に戻ってます。

このように「『vi』では『モード』があって、テキストを編集するには『インサートモード』な状態で在る必要がある」って覚えておいて下さい。

そしたら「カーソルの移動」についてやっていきましょう。今現在は『コマンドモード』なわけなのですがその状態でキーボードの方向(矢印)キー、皆様のお手元にある上キーとか左キーとかですね。これを押して見て下さい、そうするとカーソルが移動できたかと思います。

そして『vi』では矢印キー以外にもカーソルの移動を行うことができます。皆様のお手元の『h』キーから右に進んで『h』、『j』、『k』、『l』が並んでますね。それらを適当に押してみて下さい。するとカーソルが移動できたと思います。『h』なら左、『j』なら下、『k』なら上、『l』なら右って感じですね。

そして慣れてしまうと矢印キーよりも『h』キーとかを使ったほうが遥かに楽なので皆様にはぜひ矢印キー以外のキーを使って移動するようにして頂きたい次第でございます。こういうエディタの扱い方って作業時間に直結するので意外と侮れません。

そして一点注意点がございますが古いバージョンの『vi』になると方向キーではカーソルの移動はできません。なぜ移動できないかというとその時代のキーボードには方向キーが存在していない事が多く、『vi』の製作者のウィリアム・ネルソン・ジョイさんが使っていた当時のキーボードにも方向キーが存在していなかったかららしいです。まあ古いバージョンの『vi』を触る機会もめっきり減っちゃってますが一応覚えておきましょう。

カーソル移動の際に、『移動したい行とか文字の数値』を打ち込んだあとに『h』、『j』、『k』、『l』を使うとその打ち込んだ数値分移動することができます。

例えば『5j』と打つと5行下へ、『3l』と打つと3文字分右へ、といった感じです。

これ覚えておくと色々と捗るのでぜひ使って見て下さい。

さて先程は『i』キーを押して『インサートモード』に移っていましたが実は『i』キー以外にも『インサートモード』に移動することの出来るキーがいくつかあります。

最初に紹介するのは『a』と『A』です。『a』を押すと現在のカーソルの右側に移動してから『インサートモード』に入れます。『A』を押すと行の末尾に移動してから『インサートモード』に入れます。そして大文字の『I』です。これは行の先頭に移動してから『インサートモード』に入れます。この3つだと『A』と『I』はかなり便利なのでぜひ使ってみて下さい。

続いて『o』と『O』です。『o』は現在の次の行に空行を追加しつつ『インサートモード』へ、『O』は現在の前の行に空行を追加しつつ『インサートモード』へ入れます。これは2つとも使い勝手が良いですね。

『インサートモード』に移動するキーはこのあたりを抑えておけば大体なんとかなる感じです。他にもちょいちょいあるので興味があったら調べてみて下さい。

あ、あと『コマンドモード』のときのキーボードの入力モードは半角英数である必要がありますので現在入力中のキーボードの状態が日本語モードなら半角英数モードに変更しちゃいましょう。

さて入力はOKなので次は入力したテキストの保存と『vi』エディタの終了の仕方です。まず保存したり終了したりするには『exモード』に移行する必要があります。んで『exモード』に移動するにはどうすればいいのかというと『:』キーを押してみましょう。すると以下のように

Miku Hatsune

This is a CentOS!
~
~
~
:

画面の下部に『:』が出てきましたね。これで『exモード』にちゃんと移行できてます。そしたら『:』を押したあとに『w』を入力してエンターキーをバシッと押して下さい。すると「"test.txt" 3L, 32C written」みたいな出力がされると思います。これで保存はOKです。

そしてもう一度『:』を押した後に『q』キーを押してエンターキーを押してみましょう。そうするとプロンプトの画面に移行できたと思います。これで『vi』は終了して通常の画面に戻れています。

そこでもう一度『vi test.txt』と入力して頂いて『vi』を起動させてみましょう。

そして適当にテキストを編集してみます。「This is not a pen!」って文章を追加してみました。

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~

そして『コマンドモード』に戻って『:q』を入力して『vi』を終了させてみます。しかし以下のように

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~
~
~
E37: No write since last change (add ! to override)

「変更が保存されてないよ!」って忠告されて『vi』を終了することはできません。このように「変更を保存しないと『vi』を終了することはできない」って動作は覚えておきましょう。

そして「でも変更を破棄してでも終了したいなー!(*'ω'*)」って気分になったら『:q!』を使ってみましょう。これを打つと変更を破棄した状態で『vi』を終了させることができます。

なので先程の状態で『:q!』を打つと

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~
~
~
:q!
[root@localhost ~]#

いつものプロンプトが出力されている画面に戻ってきましたね。んでもういっちょ『vi test.txt』と打って『vi』を開いてみると

Miku Hatsune

This is a CentOS!
~
~
~
:

「This is not a pen!」が追記されていない状態になっていますね。こんな感じで『:q!』を使えば変更を破棄して『vi』を終了させることができます。

そして最後にテキストを保存したあとそのまま『vi』を終了させる事が出来る『:wq』を紹介しておきます。『:w』で保存して『:q』で『vi』を終了させるっていう動作を『:wq』と打ち込むことでさくっと実行できるのでとっても便利です。

ちょいと試してみると先ほどのように「This is not a pen!」を追記して

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~
~
~

この状態で『:wq』とタイピングします。

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~
~
:wq

そしてエンターキーをバシッと押せば

[root@localhost ~]#

プロンプト画面に戻れます。そしてもういっちょ『vi test.txt』と打って『vi』を起動してみると

Miku Hatsune

This is a CentOS!
This is not a pen!
~
~
~
~

「This is not a pen!」がちゃんと保存されていますね。

こんな感じで『:wq』は使い勝手がとっても良いのでぜひ覚えておいて下さい。

(´-`).。oO(ちょっと余談ではございますがこの『モード』という仕組みは使いこなすと非常に強力で素晴らしいものになるのですが...)

(´-`).。oO(この『モード』くんのせいである程度の知識が無いと1ミリも使えないって事態を引き起こしてしまっているのは内緒でございます...)

というわけでキリが良いので一旦ここで記事を終わらせますね。次の記事でも『vi』についてやっていきます。ではまたお会いしましょう。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .