入門 xyzzy 読書ノート 1/3

著者:

山本泰三・日枝政弘・稲川知久・佐野匡俊

出版社:

株式会社オーム社

発行年:

2005 年

ISBN:

978-4-274-06600-9

はじめに

  • <既に xyzzy を使っており xyzzy の標準機能をさらに広く知りたい人は「第 7 章テキストを効率的に編集するための機能」から読み始めることをおすすめします> (p. v) とあるゆえ、本腰を入れてノートをとるのは、その章からでよいだろう。

  • 油断ならないのは環境変数の規約。

    • $XYZZY は「xyzzy のインストールディレクトリ」を指す。つまり xyzzy.exe のあるディレクトリの絶対パスだ。

    • Bash のように記号 ~ でホームディレクトリを表現する。環境変数名は後述。

第 1 章 xyzzy の概要

短いページ数で概要をザッと説明している。<Emacs に似たテキストエディタ> (p. 7) とのこと。

第 2 章 xyzzy の導入

2.1 インストール

  • ここで紹介されている Noah は、実際に試してみると xyzzy 抜きで優れた圧縮・解凍ツールだということが実感できた。

  • xyzzycli.exexyzzy.exe のショートカットファイルを両方作っておくのがよさそうだ。ランチャーや Send To フォルダに入れておく。

2.2 環境変数の設定

  • <xyzzy は、ホームディレクトリとして環境変数 XYZZYHOME を参照> (p. 12) するのだが、経験上 HOME で代用が効くので、以降の XYZZYHOME を勝手に HOME で置き換えて読ませてもらう。このノートでも同様。

2.3 xyzzy の起動と終了

  • 超必修事項:<何らかの理由により xyzzy が終了できなくなった場合は、 C-g と入力してください。このコマンドを実行すると、処理の実行待ちである状態から抜け出したり、実行途中の処理を中断したりすることができます> (p. 17)

2.4 初期設定ファイルの作成

  • Emacs における .emacs に相当するファイルは Xyzzy では .xyzzy であり、ファイルを置く場所もホームディレクトリとなる。

  • siteinit.l ファイルは $XYZZY/site-lisp に置く。

  • これらのファイルの詳細については、6.2 で行う。

第 3 章 xyzzy に触れてみる

GUI の操作を説明しているだけだから読み飛ばす。

第 4 章 xyzzy を使う上での基礎知識

4.1 画面構成

  • ミニバッファとステータスバー

    • <ミニバッファは、ユーザが xyzzy と対話的な処理を行うための領域です。これは、他の Windows 系のエディタにはない、非常に特徴的な機能のひとつで、ユーザは、ミニバッファを通じてコマンドを入力して実行したり、値の入力を行ったりすることができるようになっています> (p. 35)

      Emacs も含め、テキストエディタがこの種の GUI を備えているのは非常に珍しいと思う。

  • カーソルとポイント

    • <テキスト入力位置を示すための四角い目印をカーソルと呼び、カーソルがある位置のことをポイントと呼びます。ポイントの位置は、実際には、カーソルの左側の文字と文字となります> (p. 36) とあるが、xyzzy の設定ダイアログを見たり等すると、カーソルではなくキャレットという用語を使っているようだ。

4.4 キーバインド

  • xyzzy のコマンドを起動する基本的な方法は、コマンド名を明示的に指定しての呼び出しだ。例えば forward-char を実行したければ、まず M-x をキーイン、つまり Esc を押した後 X キーを押す。それからミニバッファにて forward-char とキーインすると、 xyzzy の forward-char コマンドが起動し、めでたくキャレットが一文字分次に移動する。

    だが、forward-char コマンドは使用頻度が高い。毎回このような入力をするわけはなく、単に C-f をキーイン、つまり、Ctrl キーを押しながら F キーを押すだけでこのコマンドが起動するようになっている。

    この例のように、「コマンド」と「キーボード入力手順」を関連付けることを キーバインド と呼ぶ。

  • キーバインドの集合を キーマップ と呼ぶ。

    • グローバルキーマップ は、すべてのモードで共有して適用されるキーマップ。

    • ローカルキーマップ は、編集モード等で独自に適用されるキーマップ。

    • ローカルの方が優先される。

  • 修飾キー

    • xyzzy では Ctrl, Shift, Meta キーを修飾キーとして使う。

    • Meta キーは Esc キーや Alt キーで代用する。

    • Ctrl で修飾するには、キーを押したまま修飾したいキーを押す。

    • Shift で修飾するには Ctrl と同様にする。

    • Esc で修飾するには、 Esc を「押して離して」から修飾したいキーを押すことで実現する。

    • Alt で修飾するには Ctrl と同様にする。

    • 修飾キーを複数同時に適用したい場合は、うまく工夫する。

  • 2 ストロークキー

    • 2 ストロークキーとは、C-x C-fC-c C-f のように、 <割り当てられた機能を実現するために、2 回のキー入力が必要となるキー操作のこと> (p. 42) をいう。

    • 3 ストロークキーも存在する。

    • すべてのストロークを終了しない時点で C-g とキーインすると、それまでの入力全体をキャンセルできる。

第 5 章 基本的な操作

  • <Windows 系のエディタ特有の操作と、Emacs 風の操作が混在してくる> (p. 45)

5.1 文字入力とカーソル移動

本書で言うカーソルはキャレットを指す。

  • <よくあるケースが、プログラムのソースコードを編集しているときに Tab キーを押すと、コードがインデントされるだけで、TAB 文字が挿入されないというものです> (p. 45) こういう場合は C-q (quote-char) の後に堂々と Tab キーを押せばよい。

  • <カーソルキーを使うとホームポジションから手が離れてしまうので、 C-f / C-b / C-n / C-p を好んで使うユーザも多いようです> (p. 47)

  • xyzzy を使っていて困るのは、人に触らせると Home キーや End キーを押してくることなのを思い出した。

  • ページ単位で移動するコマンド (C-x [ / C-x ]) は知らなかった。オープンソースのプロジェクトのソースコードとかを見ると、 ^L が含まれていることがあるぐらいで、馴染みがなかった。

5.2 ファイル操作

  • C-x C-w の挙動が Emacs と違うので注意。 Emacs 風にカスタマイズすることができる。

  • C-x C-v でファイルを「開きなおす」ことができる。内容が巻き戻るのは前回保存した時点まで。

5.3 バッファ操作

  • バッファの切り替えはバッファバーのタブをクリックすることで行うのが基本。

  • バッファが多い場合はバッファ選択ダイアログを使うと便利、F2 キー押し。

  • 切り替えるというより、一度に保存やクローズをしたい場合は list-buffers コマンドがよい。C-x C-b で実行。

  • バッファを閉じるには、以下のどれかの操作がよさそう。

    • バッファバーのタブの右クリックメニューから「閉じる」。

    • C-x kkill-buffer する。

    • list-buffers のバッファ経由で閉じる。

  • 書き込み許可の切替は C-x C-q で行う。モード行の左端。

5.4 編集

  • xyzzy にはテキストの範囲選択が二系統ある。 <セレクションは、Windows で一般的に使われている選択範囲のことを指し、リージョンとは、Emacs で使われている指定されたテキストの領域のことを指します> (p. 55)

  • 個人的には xyzzy ではほとんどリージョンで済ますが、セレクションの切り取り、コピー、貼り付けのショートカットキーがそれぞれ C-Delete, C-Insert, S-Insert であることは知っておく。

  • M-@ で単語をリージョンとして設定できることを初めて知った。

  • M-x yank-and-pop は何か便利な利用法があるだろうか。

5.6 その他の操作

ミニバッファ一口メモ。

  • ミニバッファにおける入力テキストの補完ルールについて説明。どうも Bash のコマンドライン補完に似ていて、 Tab や Space で入力中の文字列を補完してくれる。

  • ミニバッファの入力履歴機能。

    • 使えるキーは Up / C-p / M-p, Down / C-n / M-n, C-Up, C-Down なのだが、Ctrl キー付きのものは「全履歴対象」だ。 <既にミニバッファに何らかの文字列が入力されているかどうかは関係なく、全ての履歴を参照しようとします> (p. 67)

    • 履歴データは $XYZZY/usr/$USERNAME/OS/.xyzzy.history というファイルに保存される。

      OS の部分は OS によって異なるらしい。自分のを見たら wxp となっている。

  • ミニバッファでのキー操作

    • Home キーを押すと、バッファのキャレット位置の単語がミニバッファに現れる。ただし、ミニバッファのキャレット位置はその末端にないと、予期せぬ位置の単語が現れるようだ。

    • C-c / で文字列中の を / に置換できる。逆方向の置換も用意されている(がまず使わない)。

    • 処理のキャンセル操作として、ここでも C-g が通じる。

第 6 章 基本的な設定

6.1 共通設定ダイアログ

設定ダイアログには個人的に興味がない。

  • 共通設定で設定された値は、次のファイルに保存されている。

    • $XYZZY/usr/$USERNAME/$OS/xyzzy.ini

    • $XYZZY/usr/$USERNAME/$OS/.xyzzy.history

    さっきも書いたが $OS の部分は OS によって異なる。

  • <バックアップファイルは、対象ファイルの末尾に ~ もしくは .番号~ を付加したものとなります> (p. 71)

6.2 初期設定ファイル

一方こちらは重視している。

  • <次の 2 つのファイルをまとめて初期設定ファイルと呼びます> (p. 71)

    • ~/.xyzzy

    • siteinit.l

  • 慣れぬ間は .xyzzy のほうに記述をしたほうがよい。というより、「ユーザー」設定なのだから $HOME にあるファイルでカスタマイズ内容を記述するのが当然だと思う。

  • 初期設定ファイルの反映で気をつける点が一つ。 siteinit.l を編集した場合には、xyzzy を普通に再起動するだけでは不十分。 Ctrl と Shift キーを押しつつ、xyzzy を起動する必要がある。