訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter<240>6.<240>Editing

Table of Contents

6.1. Introducing vi
6.1.1. The vi interface
6.1.2. Switching to Edit Mode
6.1.3. Switching Modes & Saving Buffers to Files
6.1.4. Yanking and Putting
6.1.5. Navigation in the Buffer
6.1.6. Searching a File, the Alternate Navigational Aid
6.1.7. A Sample Session
6.2. Configuring vi
6.2.1. Extensions to .exrc
6.2.2. Documentation
6.3. Using tags with vi

6.1.<240>Introducing vi

訓練を積んだ UNIX ユーザーに vi エディターの紹介をする訳じゃありません。 vi エディターのオリジナルは Sun Microsystems の Bill Joy によって開発され、 果てしなく extensible(訳作業註:拡張性か、編集対象物のサイズ制限的なことか) で、利用しやすい 軽量 ASCII エディターであり、入門者生活の苦悩です。 この節では、入門者へ vi エディターを紹介し、および、ことによると、熟練したユーザー にもまたいくつかのアイデアをトスすることでしょう。

この節の前半は、 vi session 中での編集、セーブ、 yanking/putting およびファイルの navigating のあらましです。 後半は始めるにあたり助けとなる vi session の段階を追った見本 です。

これは、 vi エディター利用の入門書のつもりで、完全なガイドでは 決して ありません 。始めて使うユーザーに、 vi を 変更およびファイル作成に十分なskillsで使えるよう工夫することになっています。

6.1.1.<240>The vi interface

vi エディターの利用は、実は他の端末ベースのソフトウェアーと、そう変わり無くて、 一つの例外が、 タブ型 (あるいは、もしするなら curses) スタイルのインターフェースを使わない、だけれども 多くのバージョンの vi do use curses it does not give the same look and feel of 特有のちくしょうベースのインターフェース。 代わりに、2つのモード コマンド および edit で works します。 これは変に見えるかもしれませんが、あなたが考える windows ベースの editing とそんなに違いません。 Take this as an 例として、 if you are using say gedit and マウスを手にし、 いくばくかのテキストをハイライトし、 cut を選んでそれから paste, the whole time you are using the マウス you are not editing (even though you can). 。 vi では、同じ action は単純にコマンドモードで dd で line 全体を deleting し、 置きたい場所の前の行に移動し、そして、コマンドモードで p を hitting する事で できます。 One could almost say the analogy is マウスモード vs. コマンドモード (although they are not exactly identical, conceptually the idea is similar).

vi session を開始するには、 one simply begins the way they might with any terminal based ソフトウェア:

$ vi filename

ここで覚えておくべき重要な註の1つは、ファイルが編集されているとき、 それは memory buffer の中に loaded されているという事です。 テキストの残りは text will make reference to the buffer and file in their proper context. ファイルは、ユーザーが書き込みコマンドの1つで変更を committed したとき のみ 変更されます。

6.1.2.<240>Switching to Edit Mode

vi エディターは start up 時に提供可能な様々なオプションに対応し、 とりあえず default startup においてみられます。 上で見られたように invoked された時は、エディターの default startup モードはコマンドモードで、それで本当は バッファーの中に typing を始めることができません。代わりに、テキストを入力するには、 コマンドモードを抜ける必要が有ります。以下の text は編集開始モードを 記述し:

a<240><240><240><240><240>カーソルの後に追加する。
A<240><240><240><240><240>行末に追加する。
C<240><240><240><240><240>現在行の残りを変更する。
cw<240><240><240><240>現在語(current<240>word)を変更する。
i<240><240><240><240><240>カーソルの前に挿入する。
I<240><240><240><240><240>最初の非空行の前に挿入する。
o<240><240><240><240><240>挿入のために下に一行 Open する。
O<240><240><240><240><240>挿入のために上に一行 Open<240>する。

6.1.3.<240>Switching Modes & Saving Buffers to Files

もちろん、コマンドモードに戻ってファイルをセーブできなければ編集コマンドを知ることは十分ではなくで、 戻るには simply ESC キーを hit 。 あるコマンドを enter するには、コロンを使うことが必要です。 Write コマンドはそのようなコマンドセットの1つです。これをするには、単純に : を enter。

コロンを打ち込むと will put the user at the colon (or command if you will) prompt at 画面の 左下隅。ここでセーブコマンドを見ると:

:w<240><240><240><240><240>buffer をファイルに書き出す。
:wq<240><240><240>buffer をファイルに書き出し quit。

6.1.4.<240>Yanking and Putting

テキストのブロック操作ができないエディターに良いとこ有るの? もちろん vi は なにか直感的なほとんどの vi コマンドと同様にこの機能をサポートします。 1行を yank するけど delete するので ない なら、コマンドモードで単に yy あるいは Y を入れると 現在行がバッファーにコピーされます。 その行をどこかに put するなら、 put する上の行に navigate し、そして put コマンド のために p キーを hit します。 行の移動には、 dd コマンドで、単純に行全体を delete し、 navigate し put 。

6.1.4.1.<240>Oops I Did Not Mean to do that!

アンドゥ(取り消し)は非常にシンプルで、 u は最後の action をアンドゥし、そして、 U が 最後に deleted した行または、 最後に変更した行のアンドゥをします。

6.1.5.<240>Navigation in the Buffer

ほとんどの vi 入門書あるいは tutorials は navigation から始めますが、しかしながら、 ほとんどのエディターと違ってなく、ほとんどのエディター in order to navigate a file there must be something to navigate to and from (hence why this column sort of went in reverse). vi (or if it even is vi and not say elvis, nvi or vim) の your flavor によっては編集およびコマンドモードで navigate できます。

初心者には、しばらく経験を積むまでの間、コマンドモードに切り替えて、それから navigating するのが、よりいくらか無難だと思います。 terminals[端末]に navigation キーが recognized されていない、または、 矢印キーの利用がサポートされていなければ、次のように:



k<240><240><240><240><240>カーソルを1行上に移動します。
j<240><240><240><240><240>カーソルを1行下に移動します。
l<240><240><240><240><240>カーソルを一文字右に移動します。
h<240><240><240><240><240>カーソルを一文字左に移動します。

もし terminal端末 が理解し対応していれば、コマンドモードで buffer の navigate に 矢印キーが使えます。

simple one spot navigation に加えて、 vi は、コロン・プロンプトの処で単純に行番号を打ち込むことで行に飛ぶことに対応しています。 例えば、 もし 223 行 に飛びたいなら、編集モードからの keystrokes はそのようになり:

ESC
:223

6.1.6.<240>Searching a File, the Alternate Navigational Aid

vi エディターは、正規表現 syntax を用いた検索をサポートします。 しかしながら、コマンドモードからの呼び出しは少しばかり異なります。 コマンドモードで simply に / キーを 一つ hit し、検索するものを入れます。 例として、 expression foo を検索していると言わせてもらうと:

/foo

以上、少しばかり異なる表現を説明するために、 foo bar を検索していると言わせてもらうと:

/foo<240>bar

6.1.6.1.<240>Additional Navigation Commands

検索とスクロールだけが vi buffer の navigate 方法なのではありません。 以下は vi で利用可能な簡潔な navigation コマンドの一覧で:

0<240><240><240><240><240>行頭に移動する。
$<240><240><240><240><240>行末に移動する。
b<240><240><240><240><240>Back<240>up<240>one<240>word.
w<240><240><240><240><240>Move<240>forward<240>one<240>word.
G<240><240><240><240><240>バッファーの bottom に移動する。
H<240><240><240><240><240>画面上のtop行に移動する。
L<240><240><240><240><240>画面上のlast行に移動する。
M<240><240><240><240><240>カーソルを 画面screen の middle に移動する。
N<240><240><240><240><240>Scan<240>for<240>next<240>search<240>match<240>but<240>逆方向。
n<240><240><240><240><240>Scan<240>for<240>next<240>search<240>match<240>in<240>同方向。

6.1.7.<240>A Sample Session

これで基礎は covered しました。ここまでのところで論じてきた items の2つ3つを使った sample session を run してみましょう。最初に コマンドラインから〜ファイルをバッファーに open するのは そうのように:

# vi foo.txt

次に 編集edit モードに切り替え、空行で引き離された2行を enter 、 バッファーが空なことを思い起こして、それで、カーソルの前に insert するために i キーを hit し、そして、 なんらの textを enter し:

This is some text

there we skipped a line
~
~
~
~

ここで ESC キーを hit し コマンドモードに戻ります。

ここで、 we はコマンドモードにいて、ファイルの save をします。 最初に : キーを打って、 カーソル should be sitting in the 左下隅 right after a プロンプト。 : プロンプトのところで w を enter し、 ENTER または RETURN キーをhit します。ファイルはようやくセーブされます。その結果をメッセージしてくれますが、 幾つかの vi エディターでは ファイルの名前、行数およびサイズも教えてくれます。

いよいよ navigate の時です。ファイルがセーブされたとき、カーソルがどこに有っても sitting してるはずです。 ちょっと動き回るのに矢印キーを試してみましょう。 もし働かなかったら (あるいは単純に好奇心を持ったら ) hjkl キーをそれらがどう動くか 試してみましょう。

最後に、あと2つやります。最初は、最初の行に navigate up して、そして 最初のキャラクターにいきます。 ほかのコマンドモード navigation キーいくつかをその行で試してみて、 次のキーを何度も hit :

$
0
$
0

カーソルが行の end まで hop し、 beginning に back し そしてそれからまた end まで。

つぎに、 an expression の検索に、 / キーをそして an expression を hit して、 このように:

/we

カーソルは we最初の出現箇所 へジャンプする はずです。

ここでファイルをセーブし write および quit で exit します:

:wq

6.2.<240>Configuring vi

NetBSD で供給される標準エディターは、言うまでも無く、 vi で、世界で最も愛され嫌われているものです。 もし、 vi を利用しないなら、この節を飛ばしてください。そうでなければ、 他バージョンの vi をインストールする前に読んでください。 NetBSD の vi (nvi) は このエディターの自由再配布可能なバージョンを持つために UCB の Keith Bostic によって書かれ、 オリジナルの vi にとても高い互換性のまま、さらに覚える価値のある 多くの強力な拡張があります。 Nvi は BSD の標準 version になりました。

中でも最も興味深い拡張は:

  • 拡張正規表現 (egrep style)、 オプション extended の有効化で。

  • Tag stacks.

  • 無限アンドゥ(アンドゥには u を押し; アンドゥを続けるには、 . を押してください)。

  • インクリメンタルサーチ、オプション searchincr の有効化で。

  • Left-right 行スクロール、オプション leftright の有効化で; スクロールする列数 は sidescroll オプションの定義で。

  • コマンドライン history 編集、オプション cedit の有効化で。

  • ファイル名補完、 filec オプションを有効化することによって。

  • 背景スクリーンおよび表示。

  • 分割スクリーン編集。

6.2.1.<240>Extensions to .exrc

次の例は幾つかの拡張オプションを enabled の .exrc ファイルを示します。

set showmode ruler
set filec=^[
set cedit=^[

最初の行は、ステータス行へのカーソル位置 (行 および列) および現在のモード (Command, Insert, Append) の表示を有効にします。 2番目の行 (ここで ^[ は ESC キャラクター) は、 ESC キャラクターでファイル名補完を 有効にします。 3番目の行は、コマンドライン履歴編集を有効にします ( またも ESC キャラクターで)。 例えば、 : を write しそして ESC を押すと、 編集可能で実行可能な以前のコマンドのリストのウィンドウが開きます (コマンド上で Enter を押すと実行します)。

6.2.2.<240>Documentation

source tarball (src.tgz) には、 /usr/src/usr.bin/vi/docs ディレクトリーに (n)vi および ex の多くの立派な documentation が入っています。 例えば:

  • Edit: A tutorial

  • Ex Reference Manual

  • Vi man page

  • An Introduction to Display Editing with Vi by William Joy and Mark Horton

  • Ex/Vi Reference Manual by Keith Bostic

  • Vi Command & Function Reference

  • Vi tutorial (beginner and advanced)

もし一度も vi を使った事がないなら、 Vi tutorial が良い starting point です。 vi を用いて読む運命になっていて、 vi コマンド全てを読者に徐々に紹介し、 読んでいる間に tested できるようになっています。 William Joy および Mark Horton による An Introduction to Display Editing with Vi もまた非常に良い starting point です。

もし、 vi および nvi についてもっと学びたいなら、 エディターの全コマンドおよびオプションを documents の Keith Bostic による Ex/Vi Reference Manual を読むべきです。

6.3.<240>Using tags with vi

この topic は NetBSD に直接関係ありませんが便利なものです。 例えば、カーネルソースの調査に。

ディレクトリーおよびサブディレクトリーのツリー内の ソースのセットを調査するとき、 vi の tag 機能を使って 作業を簡素化することができます。方法は次のように:

  1. ソースの基点ディレクトリーに cd します。

    $ cd /path
  2. Write the 次のコマンド:

    $ find . -name "*.[ch]" > filelist
    $ cat filelist | xargs ctags
  3. .exrc に次の行を追加し

    set tags=/path/tags

    (pathの代わりに正しいパスに置き替えてください。)