=============================================== 1999.7.19 発行 =========
         極私的 Emacs カスタマイズ紹介マガヂン
            Emacs をわたし色に染めて♪
------------------------------------------------------------------------
     第 7 回 禁断の VZ 化 (2) ファンクションキーと Alt
      〜貴様はビル=ゲイツに魂を売ったかスペシャル〜
------------------------------------------------------------------------
※あなたのカスタマイズをぜひ教えてください。一般的なものから、他の人は
 絶対にしないような「外道」なものまで、何でも結構です。

※解除の方法は、このメールの末尾をごらんください。
========================================================================

	こんにちは。でるもんた・いいじまです。
	先週はお休みしてしまって申し訳ありませんでした。

☆本日のお題☆

	今回は、キー操作変更の第 2 回です。

	前回までに Ctrl キーは VZ 化しましたが、まだ VZ 化していない
	キーがあります。ファンクションキーと、Meta(Alt)キーです。

	基本的には VZ 化という方針でいくのですが、僕自身は、97 年に
	Emacs を使いはじめたときに、ほぼ同時に自分のマシンを Win95 に
	乗り換えたので、Windows テイストも混じったものになっています。
	「ビル=ゲイツに魂を売ったか」というのはそういう意味です。

		#過激派はゲイツのことを下逸と書きます(^^;)
		#私はノンポリなのでそういう書き方はしないのですが…

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆まずは Alt-F☆

	まずは Alt-F、Emacs 的な書き方だと M-f です。

	私は次のようにしました。

		(global-set-key "\M-f" MSWin-Alt-File)
		(define-key Meta-Original "\M-f" 'forward-word)

		(define-key MSWin-Alt-File "o" 'find-file)
		(define-key MSWin-Alt-File "s" 'save-buffer)
		(define-key MSWin-Alt-File "i" 'insert-file)
		(define-key MSWin-Alt-File "a" 'write-file)
		(define-key MSWin-Alt-File "x" 'save-buffers-kill-emacs)
		(define-key MSWin-Alt-File "c" 'kill-buffer)
		(define-key MSWin-Alt-File "u" 'revert-buffer)

	見ればわかるとおり、Windows の定番の操作のとおりです。
	もっとも、コンソール環境で使うことも多いので、Esc f o といった
	変な入力をすることも多いのですが…。

	なお、Meta-Original については第 4 回で説明したとおりです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆ファンクションキー☆

	つづいてファンクションキーです。
	こちらは基本的には VZ テイストです。
	ただし f1 は使っていないので省きます。

		(global-set-key [f2] 'other-window)
		(global-set-key [f3] 'buffer-menu)

		(global-set-key [f6] 'nonincremental-re-search-forward)
		(global-set-key [f7] 'query-replace-regexp)
		(global-set-key [S-f6]
				'nonincremental-repeat-re-search-forward)

	今までは、キーの指定を "\C-x" のように書いてきましたが、
	ファンクションキーではそれはできません。というのは、

		ファンクションキーにはキャラクタコードがない

	からです。

	というわけで [] でくくりましたが、通常のキーでもこれは可能です。
	たとえば、
		(global-set-key [a] 'self-insert-command)
		(global-set-key [C-x C-c] 'save-buffers-kill-emacs)
		(global-set-key [M-\\] 'call-last-kbd-macro)
	といった具合です。
		#\ だけはやはり \\ と書く必要があります。

	【後日訂正】以上は誤りで、正しくは
			(global-set-key [?a] 'self-insert-command)
			(global-set-key [?\C-x ?\C-c] 'save-buffers-kill-emacs)
			(global-set-key [?\M-\\] 'call-last-kbd-macro)
		とする必要があります。

	【さらに後日訂正】ファンクションキーの名前の前に「S-」(Shift)や
		「M-」(Meta)、「C-」(Control)をつける記法は、XEmacs
		では使えません。これについては第 ?? 回で。

☆ファンクションキーを C-o で代用☆

	さて、ファンクションキーにはキャラクタコードがありません。
	ということは、コンソールからは使えません。
	というわけで、仕方がないので他のキーで代用することを考えます。

	第 4 回で設定した飯嶋式キー配置の場合、C-o が空いているので、
	次のようにしました。Delmonta-Ctrl-O という名前は、第 4 回で
	VZ-Ctrl-K や VZ-Ctrl-Q と同様に設定してあったものです。

		(define-key Delmonta-Ctrl-O "2"  'other-window)
		(define-key Delmonta-Ctrl-O "3"  'buffer-menu)
		(define-key Delmonta-Ctrl-O "6"
				'nonincremental-re-search-forward)
		(define-key Delmonta-Ctrl-O "^"
				'nonincremental-repeat-re-search-forward)
		(define-key Delmonta-Ctrl-O "&"
				'nonincremental-repeat-re-search-forward)
		(define-key Delmonta-Ctrl-O "7" 'query-replace-regexp)

	つまり、ファンクションキーを押す代わりに、C-o を押してから、
	各ファンクションキーに相当する数字キーを押す、という指定です。

	【補足】C-o ^ と C-o & の両方に S-f6 相当を割り当てているのは、
		日本語キーボードと英語キーボードとで S-6 のキーが違う
		からです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆雑☆

	(global-set-key [M-f4] 'save-buffers-kill-emacs)
	(global-set-key "\M-h" help-map)

	(global-set-key [S-up]    'scroll-down)
	(global-set-key [S-down]  'scroll-up)
	(global-set-key [S-right] 'end-of-line)
	(global-set-key [S-left]  'beginning-of-line)

	中身は見ての通りです。もっとも、M-h 以外はほとんど使っていません。
	というのは、M-f4 は M-f x で間に合いますし、Shift+カーソルは、
	今まで使っていたマシン(高岳 XMiNT CSL)では、カーソルキーが
	f11〜f14 兼用だったために使えなかったからです。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆今週のワンポイント - 漢字コードの直接指定☆

	今回は、Emacs で漢字コードを指定する方法です。

	ファイルを保存するとき、漢字コードを指定するには、
	Mule 2.3 の場合は方法がふたつあります。

	◇universal-argument を使う

		ひとつめは、
			M-x universal-argument
			M-x write-file
		とする方法です。Emacs 標準のキー操作ならば C-u C-x C-w、
		飯嶋式ならば M-o C-u M-f a となります。

		ここで、ファイル名を指定したあとに Coding-system: と訊かれ
		ますので、*euc-japan*unix、*sjis*dos、*junet*mac のように
		指定します。'*' で囲んだ中身が漢字コード(上の例では順に
		EUC、SJIS、JIS)で、その後ろが改行コード(上の例では順に
		LF、CRLF、CR)です。改行コードの部分を省略して、*sjis* の
		ように指定することもできます。

		【補足】ファイル名を変更したくない場合でも、save-buffer
			(C-x C-s、M-f s)ではダメです。何も入力させて
			くれません。

		この方法の場合、ファイルの読み込み(C-x C-f、M-f o)時に、
		上と同様に C-u(M-o C-u)をつけると、Mule に漢字コードの
		自動判別をさせず、指定した漢字コードで読み込むことができ
		ます。通常使う機会はないのですが、文字化けしているような
		場合にはどうぞ。

	◇set-file-coding-system を使う

		もうひとつは、保存する前に C-x C-k f(set-file-coding-
		system;飯嶋式では M-o C-x C-k f)で指定する方法です。
		コード指定の書式は上と同じです。

		この操作をしてから、C-x C-s(M-f s)で保存すると、
		指定のコードで保存されます。

	◇Emacs 20 の場合

		Emacs 20 の場合は、Emacs 19 とは様相が違います。
		基本的には Emacs 19 での C-x C-k f と同じなのですが、
		C-k がリターンキーに変わります。つまり、C-x RET f です。

		さらに、コードの指定方法も違います。Emacs 20 では、
			junet-mac
			sjis-dos
			euc-jp-unix
		といった書き方をします。改行コードの指定を省略するときは、
		euc-jp のように書きます。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

☆次回予告☆

	次回は、「第 8 回 エイトック的たまご生活 (1) 外見編」です。
	Wnn ユーザーを対象に、Wnn の外見をちょこっとだけいじります。

	ちなみに、そのあとは
		エイトック的たまご生活(2)キー操作とローマ字カスタマイズ
		漢は黙ってカナ入力
	と続く予定です。順序からいえばこちらの方が先なのですが(^^;)

	それでは、また来週♪

========================================================================
極私的 Emacs カスタマイズ紹介マガジン Emacs をわたし色に染めて♪

☆発行人☆

        でるもんた・いいじま <L94102@komaba.ecc.u-tokyo.ac.jp>
                        http://user.ecc.u-tokyo.ac.jp/~l94102/emacs/

                ※このメールマガジンで取り上げてほしいテーマ、ご意見など
                 ありましたら、上のメールアドレスまでお気軽にどうぞ。

☆配信☆
        このメールマガジンは、「インターネットの本屋さん・まぐまぐ」を
        利用して配信しています。
                http://www.mag2.com     (マガジン ID=0000013484)

☆バックナンバー・登録解除・メールアドレス変更は☆

        上記のホームページまでどうぞ。
        なお、手動での登録解除は行っておりませんのでご了承下さい。
=========================================================================

Copyright © IIJIMA Hiromitsu aka Delmonta, 2016/03/10 15:09 JST
これは「古文書」です。 古くなった情報も原則未修正で保存していますのでご注意ください。

古文書本館トップ | 電脳外道学会