Jump to content 日本-日本語
日本HPホーム 製品とサービス サポートとドライバ ソリューション ご購入方法
お問い合わせ
日本HPホーム
製品とサービス > ソフトウェアとOS > HP-UX Developer Edge

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

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

HP-UX
Developer Edge

設定ガイド(構築手順)
コマンド・リファレンス
ホワイトペーパー
ダウンロード
パートナー製品
技術コラム
特集、特別企画
連載
ダイジェスト
カタログ・ライブラリ
HP-UXサポート
テクニカルドキュメント
HP 教育サービス
HP-UX
  各種ソフトウェア
  書籍の紹介
日本HPサイトマップ
知っておくべきセキュリティ対策
-HP-UXのセキュリティを極める-
特集:Webベースのクラスタ管理〜Serviceguardの新機能〜
HP Serviceguardクラスタ構築手順
コンテンツに進む
第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 ファイルのパス」を実行すると、現在行の次の行に指定したファイルの中身が読み込まれる。

トップへ 戻る  

内容に関するご意見・ご質問・お問い合わせ

 
日本ITフォーラム (別途、会員登録が必要です)
 

その他のコラム(連載)もお読み下さい

 
知っておくべきセキュリティ対策-HP-UXのセキュリティを極める-
第6回:RBACによる権限分掌
第5回:audsysとHIDSによる監査と侵入検知
第4回:Bastilleによるシステムアセスメント
第3回:PS-WSでつくるセキュアなWebサーバ
第2回:EVFSとTCSによるデータ暗号化
第1回:セキュリティの『多層防御』とHP-UX
 
 
 
 
UNIXの教科書〜はじめよう! WindowsとLinuxからのステップアップ〜 全7回
SMHでらくらくHP-UXシステム管理 全9回
Integrity VMでやさしく学ぶサーバ仮想化 全10回
はじめてのHP-UX 全12回
HP-UX 11iカーネル・チューニング技法 全2回
DBシステム開発者のためのサーバプラットフォーム移行ガイド 全5回
Javaパフォーマンス・チューニング 全6回
 

本ページの内容は執筆時の情報に基づいており、異なる場合があります。
印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡
© 2008 Hewlett-Packard Development Company, L.P.