Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP-UX   >  Knowledge-on-Demand  >  UNIXの教科書 基礎編

UNIXの教科書
〜はじめよう! WindowsとLinuxからのステップアップ〜

第5日目:viエディタの操作(基本編)

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
第5日目:viエディタの操作(基本編)
UNIXの教科書〜はじめよう! WindowsとLinuxからのステップアップ〜 5日目
viを使ってみよう
viでテキストファイルを編集する

2時間目:viでテキストファイルを編集する

1時間目の説明で、viのインサートモードとコマンドモードの使い分けが理解できたと思います。この時間では、viを使用して実際にテキストファイルを編集する方法について説明していきましょう。

カーソルの移動

ファイルの編集に欠かせない基本操作が、カーソルの1文字ずつの移動でしょう。コマンドモードでのカーソルの上下左右の移動は、「h」「j」「k」「l」キーに割り当てられています。

カーソル移動は「h」「j」「k」「l」キーに割り当てられている
図8:カーソル移動は「h」「j」「k」「l」キーに割り当てられている

タックス君:
カーソルの移動に矢印キーは使えないのですか?
タックス君
マリー先生
マリー先生:
たいていのシステムでは矢印キーでもカーソルが行えるように設定されているわ。ただし、「h」「j」「k」「l」の4つのキーは右手のホームポジション付近に並んで配置されているので、カーソルを素早く移動することが可能なの。かならず覚えるようにしましょう。

カーソル移動コマンドは、もっとも頻繁に使用するコマンドです。そのため、「h」「j」「k」「l」キーといった1文字ずつの移動以外にも、目的の場所に簡単に移動できるようにいろいろなキーが割り当てられています。たとえば、「$」コマンドはカーソルを現在行の末尾に移動します。

Hel[l]o UNIX
	↓	「$」コマンド【Enter】
Hello UNI[X]
※[]はカーソルです
また、「^」コマンドはカーソルを行頭に移動します。

Hello UNI[X]
	↓	「^」コマンド【Enter】
[H]ello UNIX
※[]はカーソルです

次の表によく使うカーソル移動コマンドをまとめておきます。

コマンド カーソルの動作
h カーソルを1文字左に移動
L、スペース カーソルを1文字右に移動
j カーソルを1文字下に移動
k カーソルを1文字上に移動
^ カーソルを行頭に移動
$ カーソルを行末に移動
w カーソルを次の単語の先頭に移動
e 現在カーソルがある単語の末尾に移動。カーソルが単語の末尾にある場合は、次の単語の末尾に移動
b 現在カーソルがある単語の先頭に移動。カーソルが単語の先頭にある場合は、前の単語の先頭に移動
H カーソルを画面の一番上の行の先頭に移動
M カーソルを画面の中央の行の先頭に移動
L カーソルを画面の最下行の先頭に移動
G バッファの最終行に移動
表2:さまざまなカーソル移動コマンド

回数を指定したカーソルの移動

編集コマンドの中には、前に数値を指定すると処理を実行する回数を指定できるものがあります。表2に挙げたカーソル移動コマンドの多くも、数値を指定できます。たとえば「w」は次の単語の先頭に移動するコマンドですが、先頭に「3」を付けて「3w」とすると、3つ後の単語の先頭に移動します。

U[N]IX is a computer operating system 
	↓	「w」コマンド【Enter】
UNIX [i]s a computer operating system 	← 次の単語の先頭に移動
	↓	「3w」コマンド
UNIX is a computer [o]perating system 	←3つ後の単語の先頭に移動
※[]はカーソルです

四色君:
たとえば次のような、「HP-UX」の先頭「H」にカーソルがあるときに「w」コマンドを実行すると、「-」にカーソルが移動してしまうのですが……。

[H]P-UX Developer Edge 
↓	「w」コマンド【Enter】
HP[-]UX Developer Edge
※[]はカーソルです
四色君
マリー先生
マリー先生:
そうね。「w」コマンドは句読点やハイフンなどを別の単語とみなすの。句読点などを単語の一部として移動するには、「W」コマンド(Shiftキーを押しながらWキーを押す)が使えるわ。

[H]P-UX Developer Edge 
↓	「W」コマンド【Enter】
HP-UX [D]eveloper Edge
※[]はカーソルです
タックス君:
指定した行番号の行に移動することはできますか?
タックス君
マリー先生
マリー先生:
「G」コマンドの前に行番号を数値で指定すれば可能よ。たとえば、「1G」は1行目に、「15G」は15行目に移動するの。


文字の削除

カーソルの移動と並んで頻繁に使用するコマンドが、文字の削除コマンドです。まず、カーソル位置の1文字を削除するには「x」コマンドを使用します。

HP-UX [D]eveloper Edge
	↓	「x」コマンド【Enter】
HP-UX [e]veloper Edge
※[]はカーソルです

「x」コマンドの前に数字を指定すると、カーソル位置からその数の文字を削除できます。たとえば「4x」では、カーソル位置から行の終わりに向かって4文字が削除されます。

HP-UX [e]veloper Edge 
	↓	「4x」コマンド【Enter】
HP-UX [o]per Edge
※[]はカーソルです

行単位の削除

現在行全体を削除するには、「dd」コマンド(Dキーを2回押す)を使用します。

line1
li[n]e2
line3
	↓	「dd」コマンド【Enter】
[l]ine1
line3
※[]はカーソルです

「dd」コマンドは、前に削除する行数を指定できます。たとえば「3dd」では、現在行からバッファの後方に向かって3行が削除されます。

line1
li[n]e2
line3
line4
line5
	↓	「3dd」コマンド【Enter】
line1
[l]ine5
※[]はカーソルです

行末までを削除する

「D」コマンドを実行すると、カーソル位置から行末までが削除されます。

HP-UX [D]eveloper Edge 
	↓	「D」コマンド【Enter】
HP-UX[ ]
※[]はカーソルです

カーソル移動コマンドを組み合わせた削除

前述のカーソル移動コマンドと組み合わせて使用できる削除コマンドに、「d」コマンドがあります。「d」コマンドは次の形式で使用します。

d<カーソル移動コマンド>

「d」コマンドを実行すると、カーソル位置(もしくはカーソルのある行)から、カーソル移動コマンドの異動先までの範囲がすべて削除されます。たとえば、カーソルを1文字右に移動する「l」コマンドと組み合わせて「d3l」とすると、カーソル位置から3文字が削除されます。これは「3x」を実行した結果と同じです。

AB[C]DEFG
	↓	「d3l」コマンド【Enter】
AB[F]G
※[]はカーソルです

また「d2w」では、カーソル位置から2つ先の単語の先頭までが削除されます。

W[o]rd1 Word2 Word3 Word4
	↓	「d2w」コマンド【Enter】
W[W]ord3 Word4
※[]はカーソルです

なお、「d」コマンドと行を移動するカーソル移動コマンドとを組み合わせると、行単位の削除になります。たとえば「d2j」では、カーソルのある行から3行が削除されます。

line1
lin[e]2
line3
line4
line5
	↓	「d2j」コマンド【Enter】
[l]ine1
line5
※[]はカーソルです

また「dG」では、カーソルのある行からバッファの最後までが削除されます。

line1
line2
li[n]e3
line4
line5
↓	「dG」コマンド【Enter】
line1
[l]ine2
※[]はカーソルです

タックス君:
間違って削除してしまった場合は?
タックス君
マリー先生
マリー先生:
そんな時は「u」コマンドを実行すれば元に戻るわ。想像が付くと思うけど「u」はUndoの略ね。


別のファイルを読み込む

「:r ファイルのパス」を実行すると、カーソル位置に別のファイルの内容を読み込むことができます。たとえばカレントディレクトリの下の「old.txt」を読み込むには「:r old.txt」コマンドを実行します。

四色君:
ターミナルでviエディタを起動しているときに、lsコマンドでディレクトリの一覧を確認したいといった場合には、いったん、viを終了しないとだめですか?
四色君
マリー先生
マリー先生:
実は、「:!UNIXコマンド」を実行すると、viの中でUNIXのコマンドが実行できるの、たとえば、「:!ls /etc」とすると「/etc」ディレクトリの一覧が表示されるわ。

viの中でUNIXのコマンドを実行
図9:viの中でUNIXのコマンドを実行

結果を確認したら【Enter】キーを押すと、もとの編集画面にもどるの。 別のテクニックとして、「:r!UNIXコマンド」を実行すると、現在行の次にそのUNIXコマンドの実行結果を挿入できるの。たとえば、dateは現在の日付時刻を表示するコマンドだけど、「:r!date 【Enter】」とすると、次の行にその時点での日付時刻が挿入されるわけ。
タックス君:
大きなファイルを編集していると、今バッファのどのあたりにいるのかわからなくなることがあるのですが……。
タックス君
マリー先生
マリー先生:
そんなときには、「Ctrl+g」コマンド(Ctrlキー押しながらGキーを押す)を実行すると、行番号、全体の行数、全体の何%の位置にいるかという情報が最下行に表示されるわよ。

行番号、全体の行数、何%の位置にいるかを表示
図10:行番号、全体の行数、何%の位置にいるかを表示

練習問題

第1問:バッファの内容をファイルに書き込んでviを終了するコマンドはどれか?

a) :w
b) :q
c) :wq
d) :q!
正解はこちら
c) :wq
コマンドモードで「:」をタイプするとexモードになる。「:wq」の「w」はファイルに書き込むコマンド、「q」はviを終了するコマンド。

第2問:インサートモードからコマンドモードに移行する方法として正しいのはどれか?

a) 「c」をタイプする
b) escキーを押す
c) Ctrlキーを押す
d) Altキーを押す
正解はこちら
b) escキーを押す
escキーを押すとコマンドモードに移行する。コマンドモードにいるときにescキーを押してもモードは変わらないため、モードがわからなくなってしまった場合には、escキーを押してみればよい。

第3問:カーソル位置の文字を削除するコマンドはどれか?

a) x
b) d
c) スペース
d) a
正解はこちら
a) x
「x」をタイプするとカーソル位置の文字が削除される。「3x」のように「x」の前に数値を指定するとその数だけ文字が削除される。

第4問:カーソル位置の次の行に、カレントディレクトリのファイル「sample.txt」の中身を読み込むコマンドはどれか?

a) :q sample.txt
b) :r sample.txt
c) :i sample.txt
d) :r ../sample.txt
正解はこちら
b) :r sample.txt
exコマンドである「:r ファイルのパス」を実行すると、現在行の次の行に指定したファイルの中身が読み込まれる。

連載記事一覧 戻る 1  |  2

教科書シリーズ 「UNIXの教科書」 「HAクラスターの教科書」 連載記事一覧

UNIXの教科書「基礎編」

第1日目:ログインしてコマンドを実行してみる
第2日目:ディレクトリやファイルを操作してみる
第3日目:シェルの基本を知る
第4日目:ファイルの基本操作
第5日目:viエディタの操作(基本編)
第6日目:リダイレクションとパイプを活用する
期末試験

UNIXの教科書「応用編」

第1日目:grepコマンドと正規表現
第2日目:ファイルの検索
第3日目:viエディタの操作(活用編)
第4日目:ファイルの圧縮とアーカイブ
第5日目:ジョブとプロセスの操作
第6日目:シェルの環境設定
第7日目:シェルスクリプトでより便利に
期末試験

UNIXの教科書「運用編」

第1日目:ユーザーの管理
第2日目:ファイルの安全管理(その1)
第3日目:ファイルの安全管理(その2)
第4日目:ネットワークの基本を理解する
第5日目:ネットワーク関連のコマンド
第6日目:システム情報の表示
期末試験 New!

HAクラスターの教科書

第1日目:ハードウェア構成を知る
第2日目:ネットワークを設定する
第3日目:共有ディスクを構成する
第4日目:HAクラスターを構成する
第5日目:パッケージを構成する
第6日目:障害テストを実施する
期末試験

 その他の連載記事


本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項