[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bep] C-k



井上です。

YOSHIMOTO Koji <yoshimoto@...> writes:

> Emacs を使って最初に気付いたのは、行頭までの削除が一発で出来ないと言う
> ことでした。 例えば、Vz なら C-qt と C-qy が行頭、行末までの削除になっ
> ています。Emacs だと C-u 0 C-k で行頭まで削除出来ますよね。

そういえばありませんね。私個人は行頭まで削除というのをあまり使わないので
不便に思わないのですが。

> でも 3 ストロークはちょっと面倒かなと思って、 C-K で行頭まで削除出来る
> 様にしたいと思って、以下の様なものを書いてみました。

Kが大文字なのは、CTRL+SHIFT+kという意味でしょうか。
この操作ができるようにするには、Meadowにw32-set-modifier-keyを使って
shiftキーをモディファイアキーとして登録する必要があるんじゃないかと思い
ます。
なんか元からできていた気もするのですが、ちょっとよく分かりません。
ただ、その場合C-KではなくC-S-Kのように書くんだったと思います。

> (define-key global-map "\C-K"
> 	    (lambda ()
> 	    	(interactive)
> 	(emacspeak-speak-line 0)
> 	(kill-line 0))

動かない理由ですが、(lambdaの前にクオートを表す'が必要なこと、閉じ括弧が
一つ足りないことです。
でも、C-kの動作を変えてしまうとあんまりうれしくないと思うので、なにか別
のキーにした方がいいでしょう。あまり使わないC-oとか。

> キーボードマクロ程度のもので、他からコールされることもなかろうと思って
> defun で名前付きの関数を作るのはやめました。そこで lambda を使ってみた
> わけです。

これだと、閉じ括弧がちゃんとあったとしたら、キーを定義しようとした時点で
(lambda 以降が評価されてしまうので、そのときにどこかで1回だけ行削除が呼
ばれることになります。

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690