xyzzyとは?

xyzzyはWindows用のテキストエディタの1つで、Unix系のOSで人気の高いEmacsライクな操作性を備えているのが大きな特徴だ。

図1 : xyzzy

Emacsは各種操作をキーボードからのコマンド入力で行うことができるため、慣れるとマウスなどのポインティングデバイスを一切使わずに編集を行うことができる。また、複数のファイルを編集することができるのはもちろんのこと、Emacs LispというLisp言語で本体の機能を自由に拡張することができ、様々な機能を追加することができる。プログラミングはもちろんのこと、Webブラウズやメールの読み書きなど、PC上で日常的に必要な作業の大部分をEmacs上で済ませることも可能なのだ。

xyzzyの基本的な使い方

xyzzyのキーボードショートカットは一般的なWindowsアプリケーションとはかなり異なる(Emacsとも微妙に異なる)。メニューバーやコンテキストメニューも配置されているので慣れないうちはコンテキストメニューから操作を行い、メニューに表記されているショートカットを覚えるといいだろう。

表1にxyzzyの基本的なコマンドを示す。

表1 : xyzzyの基本的なコマンド

分類 操作 コマンド
ファイル操作 ファイルを開く C-x C-f
二画面ファイラを表示 C-c C-f
上書き保存 C-x C-s
バッファを切り替える C-x b
バッファ一覧を表示(1でカーソル位置のバッファを開く) C-x C-b
バッファをダイアログで選択 F2
バッファを閉じる C-x k
カーソル移動 前に移動 C-f
後に移動 C-b
上に移動 C-p
下に移動 C-n
編集 マークをセット C-Space
マークから現在の位置までをコピーしてキルリングに保存 C-w
マークから現在の位置までを切り取ってキルリングに保存 M-w
キルリングから貼り付け C-y
コピーしてクリップボードに保存 C-Insert
切り取ってクリップボードに保存 C-Delete
削除 Delete
クリップボードから貼り付け Shift-Insert
検索 C-s
アンドゥ C-\
リドゥ C-_
ウィンドウ操作 水平に分割 C-x 2
垂直に分割 C-x 5
分割を解除 C-x 1
その他 コマンドの取り消し C-g
任意のコマンドを実行 M-x コマンド
コマンドプロンプト M-x shell
※ CはCtrl、MはAltキーに対応します

xyzzyは非常に拡張性が高いため、これらのキーバインドを自由に変更することも可能だ。また、xyzzyにはキーバインドをWindowsアプリケーションの標準的なキーボードショートカットにあわせるためのGates.lという拡張Lispが付属しており、ホームディレクトリに以下の内容で.xyzzyというファイルを作成しておくことで有効にできる。

(load-library "Gates")

xyzzyとEmacsに共通するのがミニバッファと呼ばれるウィンドウの一番下に表示されている小さな入力欄だ。ここはコマンドの情報を入力する際に使用する。たとえばC-x C-fでファイルを開く場合、以下のように開くファイルのパスをこのミニバッファで入力する。ミニバッファではTABキーで入力補完が可能だ。

図2 : ミニバッファ

またC-c C-fで開くことのできる二画面ファイラからファイルを開くことができる。このファイラではファイルのコピーや移動、削除といった操作をキーボードだけで行うことができる。

図3 : 二画面ファイラ

xyzzyは1つのウィンドウで複数のファイルを編集することが可能だ。C-x bやC-x C-bでバッファの切り替えを行うことができるが、[表示]メニューから[ツールバー]-[バッファ]を選択することで通常のタブエディタのようにタブを表示することができる。

図4 : タブを表示したところ

エディタの基本的な設定は[ツール]メニューの[共通設定]や[ローカル設定]で行うことができるが、詳細な設定や拡張はホームディレクトリ(環境変数XYZZYHOMEで任意のディレクトリを指定することも可能)の.xyzzyというファイルにLispプログラムを記述する。EmacsのEmacs Lispとは異なり、xyzzyはCommon Lispのサブセットを用いる。

プログラミング向けの機能

xyzzyはプログラミングを支援する機能も豊富だ。デフォルトで様々なプログラミング言語に対応したシンタックスハイライト機能を備えている。また、C/C++、Java、Perlといった言語に関しては[ツール]メニューの[TAGSファイルの作成]でタグファイルを作成しておき、[F4]でタグジャンプを行うことができる。

図5 : タグジャンプ

また、M-x shellと入力することでxyzzy内でコマンドプロンプトを実行することができるため、プログラミング時はビルドスクリプトの実行などに使用できるだろう。通常のコマンドプロンプトと異なりTABキーで補完ができない、すべての出力がバッファ上に残るため大量の出力を行うとメモリを圧迫するなど不便な点もあるものの、実行結果を簡単にコピーすることができるといった利点もある。なによりxyzzyだけで操作が完結するというメリットは大きいだろう。

図6 : xyzzy内でコマンドプロンプトを実行

これらの基本機能以外にも有志の手によって様々な言語での開発を支援するための拡張機能が公開されている。使用する言語にあわせて導入するといいだろう。

まとめ

xyzzyはEmacsに似ているものの「拡張方法が異なる」「拡張機能がEmacsほど豊富ではない」「デフォルトのキーバインドがEmacsと微妙に異なる」など、実際には異なる部分も多い。Windows上で完全にEmacsと同じ使い勝手を求めるのであればMeadowやCygwin上でEmacsを利用するなどの方法がよいだろう。

ただし、キーボードのみで操作可能な2画面ファイラやエクスプローラから「送る」メニューですでに起動しているxyzzyに新しいバッファとしてファイルを開くことができるなど、xyzzyならではの機能もある。Emacsライクな操作性に加えてWindows上での使い勝手を重視するのであればxyzzyは非常に有力な選択肢といえる。