Learning vi -- the "cheatsheet" technique
1. 始めよう
イントロダクション
このチュートリアルは強力なビジュアルエディターのひとつである、viの使用方法を紹介します。
特別に高速な"カンニングペーパー"テクニックを使って莫大な時間をかけずに
あなたを熟練のviユーザにするようにこのチュートリアルはデザインされています。
このチュートリアルで、あなたは、動き回る方法、テキストの編集方法、挿入モードの使用方法、
テキストのコピー、ペースト方法、またビジュアルモードやマルチウインドウ編集のような
重要なvimの拡張機能の使い方を学習していきます。
あなたがviをまったく知らないか、快適に使えていないのならば、このチュートリアルを使って
最も人気で強力なLinux/UNIXビジュアルエディタのプログラムを素早く修得しなければなりません。
このガイドについて
特にviの修得を困難にさせることのひとつは、viに多くのコマンドがあることです。
viを効果的に使う為に、あなたはかなり多くのコマンドを記憶する必要があります。
これには非常に時間がかかりますが、このチュートリアルの目標の一つは多くの時間をかけない事です。
そう、まず、いかに正確にあなたを短期間で多くのコマンドを記憶させるか?が私たちの挑戦です。
この問題を解決する為に、このチュートリアルを通して、私たちは少しずつviの"カンニングペーパー"に
書き込んでいきます。このペーパーは重要なviのコマンドを全て含んでいます。
このチュートリアルが終了して、特定のコマンドを忘れたとしても、あなたはこのカンニングペーパーを
参照できるでしょう。時間が経つにつれ、あなたはコマンドを記憶し、
徐々にこのカンニングペーパーを必要としなくなるでしょう。
このカンニングペーパーテクニックで、あなたは以前より遥かに速くviの修得ができるでしょう。!
学習プロセス
このガイドの中で、私はあなたの学習のためにいくつかテクニックを使うつもりです。
あなたが推測するように、まず、特定のコマンドがどのように動くのか記述していきます。
それから、私はあなたにそのコマンドをviで(練習のために)試しに使ってみることを求めます。
そして、私はあなたにそのコマンドを(後から参照できるように)カンニングペーパーに書き写すことを求めます。
もしあなたがviを急速に学習したいのであれば、これらの全ての段階を踏むことは重要なことです。
viでコマンドを試し、そのコマンドをカンニングペーパーに書き写すことは、
あなたがそのコマンドを記憶することに役立つでしょう。
vimの紹介
viのヴァージョンは多数存在し、今回私はあなたに「vim」と呼ばれるバージョンのviの使用法を
紹介していきます。vimはとても人気があり、大変素晴らしい多くの拡張機能があります。
(私はいつでもvimの特別なコマンドを紹介できます。私はその素晴らしさを伝えられます。)
もし、vimをインストールする必要があれば、http://www.vim.orgから取得できます。
さらに強力なコマンドラインのvi、vimまたはgvimは、素晴らしいgtk+guiのライブラリを
使って設定された素晴らしいグラフィカルなエディタです。これは私のシステムのスクリーンショットのgvimです。:
Figure 1.1: VIM screenshot |
 |
もしあなたがviの初心者なら、あなたのシステムでgvimを実行してみてください。
guiでviを使うことは初心者に対し少し簡単になります。
2. 第一段階
ファイルを扱う
viでファイルの編集をする前にあなたはviでファイルの中の動き回る方法を知る必要があります。
viは多くの動作のコマンドがあり、それらの多くを紹介します。チュートリアルのこの部分の間、
重要でないテキストファイルを見つけ、以下のようにタイプしてviを起動します。:
Code listing 2.1 |
$ vi myfile.txt |
もしあなたがvimをインストールしたのであれば、"vim myfile.txt"とタイプしてください。
gvimを使いたいならば、"gvim myfile.txt"とタイプします。myfile.txtはあなたのシステムのテキストファイルの
名前のことです。
viの内部
viの起動後、あなたは画面上に起動したテキストファイルの1部を目にするでしょう。おめでとう!、
あなたはviを使っています。多くのエディタと違ってviを起動した時、「コマンドモード」と呼ばれる
特別なモードになります。これはもし、キーの「I」を押してもファイルの現在のカーソル位置に
「I」が挿入される代わりに、カーソルが右に一文字分動くことを意味します。コマンドモードでは
キーボードの文字列は文章に文字を挿入するよりもむしろ、viに対しコマンドを送ることに使われます。
コマンドの多くの不可欠な形のひとつは動作コマンドです。さぁ、いくつか見てみましょう。
3. 動き回る
viでの移動その1
コマンドモードではh,j,kとl キーを使ってカーソルの左、下、上と右を移動します。
もしviの最新バージョンを使っているなら矢印キーを使うことも可能です。h,j,kとl
キーは快適なので手元で、キーボードのホームポジションから指を移動することなくファイルの中を動き回ることができます。
h,j,kとl(そして矢印キー)を使ってテキストファイルを動き回ってみましょう。
hを使うまでは最初の行にいます。viはhキーをタイプして前の行を"wrap around"しないこと、
最初の文字にいる間は注意してください。行の最後にいてもlキーで次の行に"wrap around"できないことも同様です。
viでの移動その2
viには現在行の開始位置か最後にジャンプするショートカットがあります。
0(zero)キーを押すと行の先頭にジャンプでき、そして$キーで行の最後にジャンプできます。
実際にやってみてください。viはとても多くのハンディな移動コマンドがあるので、
(moreやlessコマンドのような)巨大な"pager"になります。
viを"pager"のように使うことであなたはとても素早く移動コマンドを習得するでしょう。
あなたは<CTR>Fと<CTR>Bで一度にページの前と後ろに移動することもできます。
最近のバージョンのvi(vimも含む)は「PGUP」と「PGDOWN]キーを使って同じことができます。
単語の移動その1
viはまた単語のインクリメントによる左右の移動もできます。次の単語の先頭の文字に移動するには
wを押します。次の単語の最後の文字に移動するには、eを押します。
前の単語の先頭に移動するには、bを押します。実践してみましょう。
単語の移動その2
単語の移動コマンドで遊んだ後、viは"foo-bar-oni"のような単語を5つの離れた単語として扱うことに
気が付いたことでしょう。これはデフォルトでviが空白またはpunctuationによって制限しないためです。
foo-bar-oniはそこで"foo","-","bar","-","oni"という5つの単語であるとみなされます。
時々、このことはあなたの要求に応えるでしょうし、また要求に合わないでしょう。
幸運にもviには大きい単語の概念があります。viは空白や新しい行だけによる大きい単語制限はしません。
これはつまりfoo-bar-oniがviの5つの単語であるとみなされる時に、ひとつのviの大きな単語であるとみなされます。
単語の移動その3
次の前の大きい単語を飛び回る為に、あなたは大文字の単語移動コマンドが使用できます。
次の単語の最初の文字にジャンプするにはWを使い、次の大単語の最後にジャンプするにはEを使い、
そして前の大単語の先頭にジャンプするにはBを使います。やってみてください、そして、
それらの違いを理解するまで、単語のマッチングや、大単語の移動コマンドを比較しなさい。
もっと大きく移動
私たちは、カンニングペーパーに書き込む前にもう少し、コマンドを覚えましょう。
あなたは前や次のセンテンスの先頭に移動するために(と)の文字を使用できます。
さらに現在のパラグラフの先頭や次のパラグラフの先頭にジャンプするのに {や}を使うことができます。
それらを試してみましょう。
4. 終了
終了
私たちは基本的な移動コマンドを学習しましたが、まだ覚える必要があるいくつかのコマンドがあります。
:qとタイプするとviを終了できます。もし終了できない場合には、何らかの方法でファイルを修正したと
思われます。viを終了する場合、変更を破棄するなら:q!とタイプします。コマンドプロンプトで今やって見ましょう。
viでは":" で開始する全てのコマンドはex-modeのコマンドです。なぜなら、viはexと呼ばれる非ビジュアルエディタを埋め込んでいるからです。それはsedに似た行ベースの編集に使います。さらに先程のように終了する為に使います。コマンドモード中にQキーをタイプした場合、exモードに変更されます。
この場合、この : プロンプトに続けてエンターキーをタイプすると画面の上にスクロールします。
viモードに戻るには単にviとタイプしてエンターキーを押します。
5. カンニングペーパー
カンニングペーパーの開始
私たちはたくさんのコマンドを学習してきました、さぁ、カンニングペーパーにそれらを書き込みましょう。
カンニングペーパーにはUSの便箋かA4サイズの用紙を用意して下さい。(私たちはそこにたくさんの情報を詰め込みます。)
私たちが今まで学習してきた全てのコマンドを書き写したカンニングペーパーの画像がここにあります。
一枚の紙に全て収まるようにできるだけ私のレイアウト通りに書き写して下さい。
Figure 5.1: Cheat Sheet |
 |
vi関連諸々
私たちの急速なコマンド学習ペースを続けましょう。コマンドモードでGをタイプすることにより、
指定した行にジャンプできます。ファイルの先頭行にジャンプするには、1Gとタイプします。
Gは大文字であることに注意しなさい。
次の指定した文字のパターンの場所にジャンプするには、/<regexp>とタイプしてenterを押します。
<regexp>をあなたの検索したい正規表現に置き換えてください。正規表現の使い方がわからなくても
焦らないでください・・・/fooとタイプすると、次のfooの場所に移動します。
注意しなければならないことは、^、.、$、や\の文字についてです。
これらの文字の前にはバックスラッシュ(\)を付けて、セットしてみて下さい。
例えば、/foo\.gifは次の"foo.gif"の場所を検索します。
次の検索を繰り返すにはnをタイプして下さい。戻る検索を繰り返すにはNをタイプします。
常にこれらのコマンドの動作を自分のviエディタで確認してください。//とタイプすると最後まで検索を繰り返します。
6. 保存、編集する
保存、名前を付けて保存する
私たちはviを終了するのにexコマンドである:qを使うことを学習しました。
変更(修正)を保存したい場合は:wとタイプします。
修正を別のファイルで保存するときは:w filename.txtとタイプすると、filename.txtとして保存されます。
保存して終了するときは:xか:wqとタイプします。
vim(そして他の進化したelvisのようなviエディタ)では、:wは複数のバッファを一度に開くことができます。
新しいウインドウにファイルを開くには:sp filename.txtとタイプします。
filename.txtは新しく分割されたウインドウに編集用に開かれます。
ウインドウ同士を切り換えるには<CTR>w<CTR>wを2回押します。
:q、:q!、:wと:xは現在アクティブなウインドウに反映されます。
単純な編集
今こそ単純なコマンドのいくつかを学習する時です。私たちがここで学習するコマンドは
コマンドモードですので"簡単"です。より複雑な編集コマンドはあなたをキーボードから文字の入力を
許可する挿入モードに自動的にします。私たちはそれらについて少しだけ学習します。
今度はいくつかの文字の上を動きxを繰り返しタイプしてください。
xがカーソルの下の現在の文字を削除するのが見えるでしょう。
今度はテキストファイルの中のどこかの段落の中に移動し、大文字のJをタイプして下さい。
あなたはJコマンドが現在の行を前の行の後ろに結合しているのを見るでしょう。
今度は、文字の上の移動し、rを押し、そしてそして新しい文字をタイプします。
あなたは元の文字が置き換えられるのが見えるでしょう。 最後は、ファイルの中のどこかの行に移動し、
ddとタイプします。ddがテキストの現在行を削除します。
繰り返す、削除する
どんな編集コマンドも.キーをタイプすると繰り返すことができます。慣れてくると
dd...が4行削除し、J......は4行結合するでしょう。
大抵、viはハンディなショートカットがあります。
テキストを削除するのにdコマンドと他のどんな移動コマンドとも組み合わせて使用できます。
例えば、dwは現在の位置から次の単語の最初まで削除します。d)は次のセンテンスの最後まで削除し、
そしてd}はパラグラフの残りを削除します。快適に使えるようになるまで
dコマンドと他の編集コマンドの組み合わせに慣れてください。
やり直す!
さぁ、削除になれてきましたので、どんな修正をもやり直す方法を学習する丁度いい時期です。
uをタイプするとオリジナルバージョンのviは最後の変更だけやり直すことができます。
しかし、vimのような最近のバージョンのviはuを繰り返しタイプしてファイルの変更のやり直し
を何度も続けてできます。dやuコマンドを組み合わせて結合してみましょう。
カンニングペーパーの更新
カンニングペーパーを更新する時間です。今まで学習してきたすべてのコマンドを追加するとこのようになります。
:
Figure 6.1: Cheat sheet with editing commands |
 |
7. 挿入モード
挿入モード
今まで私たちはviの中での移動、ファイルの入出力、基本的な編集操作方法を学習してきました。
しかし、まだフリーフォームテキストに実際にタイプする方法は教えていません。これは敢えてしませんでした。
なぜならviの挿入モードは最初は少し複雑だからです。しかし、挿入モードに慣れた後、
その複雑さと柔軟性は長所になるでしょう。
viの挿入モードは他の多くのヴィジュアルエディタのように直接画面に入力できます。
修正モードになっても、エスケープキーでコマンドモードに戻ることができます。
iかaを押して挿入モードにできます。iを押すと現在のカーソルの前に挿入され、
aを押すと現在のカーソルの後に追加されます。テキスト入力が終わり、
<ESC>キーを押すとコマンドモードに戻ることはお忘れなく。
挿入モードの利点
次にaやiを使ってみよう。aかiのどちらかを押し、何か文章をタイプして、
それからESCを押しコマンドモードに戻ってみましょう。aやiを押した後、
<ENTER>を押して何が起きるか見てみましょう。矢印キーや<DEL>を使うことで
挿入モードを繰り返し切り換えることなく編集できます。
挿入オプション
他にもいくつか挿入モードに切り換える方法があります。大文字のAを押すと
現在の行の最後の位置に追加できます。 同じように大文字のIでは現在行の先頭に追加できます。
oを押すと現在行の下に新しい空白行を追加し、大文字のOを押すと現在行をの上に新しい行を追加します。
現在行の全部を新しい行に置き換えるにはccを押します。行の現在地から最後まで全てを置き換えるには
c$をタイプします。行の現在地から先頭まで全てを置き換えるにはc0を押します。
さらに、特別な操作をする為に、これらのコマンドはそれぞれ、挿入モードになります。
テキストのタイプ後、<ESC>でコマンドモードに戻ります。
テキストを修正する
私たちは今までcc、c0やc$などのc(変更)コマンドを少しだけ使ってきました。
ccはddに似て特別な修正コマンドの形式です。c0とc$は移動コマンドとの
コンビネーションとして修正コマンドを使う例です。このようにcはdと似たような動きをします、
挿入モードから切り換えない限りあなたはテキストを削除したところと置き換えることができます。
いくつかの移動コマンドとcを組み合わせてみましょう。そしてあなたのファイルで試してみましょう。
(ヒント: cW、ce、c(。)
8. コンパウンドコマンド
コンパウンドコマンド
viはあなたがd{やcwのような組み合わせ("combo")コマンドを使い始めたとき、
本当に強力になります。これらのコマンドはさらに、あなたは3wのように
どんな移動コマンドにも数字と組み合わせることができます。(viは3つの単語をジャンプします。)
いくつかの"combo"コマンドの例があります: 12b、4j。
viは、さらに(数字)(移動コマンド)の組み合わせもできます 、また dやcも
数字や移動コマンドと組合わせることができます。つまり、d3wは次の3つの単語を削除し
d2jはは現在行と次の2行を削除します。いくつかcとdの組み合わせで、
viの編集がどれほど強力で簡潔か実感してみましょう。 一旦これらのコマンドに慣れると、
目覚しい速さでファイル編集ができるようになるでしょう。
カンニングペーパーの更新
再び、カンニングペーパーの更新をする時間です。今まで学習してきたことがここにあります。:
Figure 8.1: Cheat sheet with compound commands |
 |
生産性の特徴
今まで私たちはとのように移動するか、保存、終了するか、単純な編集や削除ができるか、
そして挿入モードについて学習してきました。今までカンニングペーパーに表示されている全てで、
あなたはほとんどの作業をviでこなせるでしょう。
しかし、viはさらに強力なコマンドがあります。この段落では、切り取り、
コピーそして貼り付け, 検索 and 置換, and use オートインデント
の特徴についてを学習するでしょう。これらのコマンドはviをより楽しく生産的にします。
ビジュアルモード
切り取りや貼り付けの1番最善の方法はvimやelvisのようなviの最近のバージョンに追加された
特別なモードのビジュアルモードを使うことです。あなたはビジュアルモードを「反転テキスト」モード
のように考えることができます。一旦反転されたテキストはコピー、削除、貼り付けが可能です。
もしあなたがgvimを使っているのならば特定の場所でマウスの左ボタンで単にドラッグするだけで反転できます。:
Figure 8.2: VIM with highlighted text |
 |
さらに、vをタイプしてビジュアルモードになります。(これはコンソールからviを使っているときだけの
オプションかもしれません)次に移動コマンドでカーソルを移動し(矢印キー)、あなたはテキストのエリアを
反転できます。 反転されたら、私たちはテキストの切り取りやコピーの準備ができています。
もし、テキストをコピーするなら、yタイプします (yは"yank"の意)。もしテキストを切り取るなら、
dをタイプします。あなたはコマンドモードに戻るでしょう。これであなたが、切り取りや、
コピーしたテキストを挿入したい位置に移動しPを押してカーソルの後に挿入し、
pを押してカーソルの前に挿入できます。これで、切り取り、コピー、貼り付けができました。
次の章に進む前にいくつかのコピー切り取り貼り付けの操作を試してみましょう。
テキストを置換える
テキストを置き換えるにはexモードを使用します。もし、現在行で出現する最初のパターンを
置き換えたい場合はtype :s/<regexp>/<replacement>/ をタイプし、<ENTER>を押します。
<regexp>はマッチさせるパターンで、<replacement>は置き換える文字です。
現在行のすべてのマッチするものを置換えるには:s/<regexp>/<replacement>/gとタイプし
エンターを押します。ファイルの全てを置き換えるには(たいていあなたがやりたいでしょう)、
:%s/<regexp>/<replacement>/gとします。もし、全部の置換でそれぞれの変更を確認したい場合は、
:%s/<regexp>/<replacement>/gc(comformの意)とし、<ENTER>を押します。
インデント
viにはあなたがソースコードを編集する時のためにオートインデント機能があります。
vimのような最近のバージョンのviの多くは、あなたがソースファイルで編集しているとき
オートインデントモードに自動で有効になります。(例えば.cファイルです)
オートインデントが有効の時、あなたは<CTR>d (control-d)で左にインデント移動でき、
<CTR>t (control-t)で右にインデントできます。
もし、オートインデント機能が自動で有効にならなかった場合、あなたはコマンドのex:setを
タイプして手動で有効にできます。あなたはまた、:set tabstopコマンドでタブサイズを
好みの設定に変更できます。;:set tabstop=4がとても人気です。
私たちの最後のカンニングペーパー
さぁ、私たちはviのチュートリアルの最後になりました。
あなたのカンニングペーパーにすべての進化した編集コマンドを追加するとこのようになるでしょう。:
Figure 8.3: Final cheet sheet |
 |
カンニングペーパーを常に持ち、viでファイルの編集やメールの作成を始めましょう。
必要なときにカンニングペーパーを参照しなさい。あなたは1週間以内にほぼ全てのコマンドを記憶し、
viの生産性は抜群にあがることに気が付くでしょう。
参考資料
ここにあなたが、さらにviについて学習を続けていくのに役立ついくつかの資料があります。:
|