0

現在、私はそのような列/長方形機能に cua-mode を使用しています (コピー/貼り付けには使用しません):

M-x cua-mode ; Enable cua-mode
<C-return>   ; Call cua-set-rectangle-mark

次に、長方形が完成したら:

C-g          ; Call cua-cancel

CUA モードのバインドは他のモードのバインド (org モードなど) と競合するため、cua モードのオン/オフを切り替える必要がある場合があります。私はそれを長方形にしか使用していないので、次の2つのことを行うことでこの煩わしさを解決したいと思います:

1) キー (f6 など) を cua-mode が有効になっていない場合は有効にする関数にバインドし、cua-set-rectangle-mark を呼び出して四角形を作成できるようにします。

2) cua-mode がアクティブなときに Cg をオーバーライドして、押されたときに長方形を終了するだけでなく、cua-mode も終了するようにします。

したがって、私のワークフローは次のようになります。

<f6> ; Enter cua-mode and call cua-set-rectangle-mark
C-g  ; Call cua-cancel and disable cua-mode

そうすれば、衝突が発生したときに cua-mode のオン/オフを常に切り替える必要がなくなります。

パート1では、私が思いついた:

(defun cua-activate-plus-set-rectangle-mark()
 (interactive)
 (cua-set-rectangle-mark))

(global-set-key (kbd "<f6>") 'cua-activate-plus-set-rectangle-mark)

cua-mode がすでに有効になっている場合は f6 を押しても機能しますが、cua-mode が有効になっていない場合は機能しません。次のように変更すると:

(defun cua-activate-plus-set-rectangle-mark()
 (interactive)
 (cua-mode)
 (cua-set-rectangle-mark))

その後、cua-mode を有効にして開始したかどうかに関係なく、まったく機能しません。

パート2については、次のものがあります。

(defun cua-mode-off()
 "Cancels any open active region/rectangle and turns CUA mode off"
 (interactive)
 (cua-cancel)
 (setq cua-mode nil))

関数はまさに私が望んでいることを実行しますが、cua-mode が有効になっているときに Cg にバインドする方法がわかりません。

だから私の質問:

1) cua-mode に入り、cua-set-rectangle-mark を呼び出す関数を記述して、期待どおりに動作させるにはどうすればよいですか?

2) カスタム関数を呼び出すために cua-mode がアクティブなときに Cg のみをオーバーライドするにはどうすればよいですか?

4

1 に答える 1