私はオーバーライドして使用したいとC-l
思います. はデフォルトである必要があり、それ以外の場合は です。どうすればいいですか?M-x erase-buffer
RET
m-shell-mode
C-l
recenter-top-bottom
3 に答える
何であるかはわかりませんm-shell-mode
が、それが明確に定義されたメジャーモードであれば、次のようにしてうまくいくはずです:
(require 'm-shell-mode)
(define-key m-shell-mode-map (kbd "C-l") 'erase-buffer)
同じ視覚効果を持つが、バッファの内容を保持する別のバインディングをお勧めします (これは便利です)。
(defun shell-clear-command (&optional a)
"\"clear\" the screen"
(interactive "P")
(recenter (or a 0)))
(define-key m-shell-mode-map (kbd "C-l") 'shell-clear-command)
m-shell-mode
が に基づいている場合comint-mode
(これは、別のプロセスと対話するためのシェルを提供する多くのモードに当てはまります) return
、関数 を使用してキープレスを matlab に渡すことができますcomint-send-input
。その場合、次のコードはあなたが望むことをするはずです:
(defun clear-and-return ()
"Erases the buffer, and then passes a return to the buffer process.
Assumes the buffer is attached to a comint process."
(interactive)
(erase-buffer)
(comint-send-input))
(defun my-m-shell-mode-hook ()
(local-set-key (kbd "C-l") 'clear-and-return))
(add-hook 'm-shell-mode-hook 'my-m-shell-mode-hook)
最初のdefunは、あなたが望むことをする関数を作ります。C-l
2 つ目は、関数が呼び出されたときにアクティブなバッファーの関数にバインドするフック関数です。はadd-hook
、 を起動するたびに 2 番目の関数を実行するように emacs に指示しますm-shell-mode
。の本体内にさらに m-shell-mode のカスタマイズを追加できmy-m-shell-mode
ます。モードを開始するたびに、Emacs はそれらすべてを実行します。
m-shell-mode
に基づいていない場合はcomint-mode
、 を押したときに何が起こるかを調べる必要がありますreturn
。モードを実行しているバッファーC-h k RET
から、return キーにバインドされた関数を検索するために入力します。comint-send-input
上記のコードではなく、その関数を使用してください。
m-shell-mode
次のコードをフックに追加できます。
(local-set-key (kbd "C-l") 'erase-buffer)