Keyboard-Shortcuts

我不能在 matlab 中使用鍵盤快捷鍵 <ctrl>+<alt>+<enter> 在螢幕中執行的 emacs 中執行

  • August 26, 2015

在我通常的設置中,我使用 matlab-emacs 通過 emacs gui 執行 Matlab。我在 linux 伺服器上執行 matlab 和 emacs,並使用 ssh 和 X 轉發,所以這一切都顯示在我本地的 ubuntu 筆記型電腦上。

我想通過在螢幕上執行 emacs 來進一步複雜化這個設置。這主要適用於一個顯著的例外,即告訴 Matlab 執行程式碼塊的鍵盤快捷鍵Ctrl++似乎沒有做任何事情。我想這個快捷方式可能是在我自己的機器上本地發送的?當我嘗試執行此命令時,我注意到筆記型電腦終端頂部的菜單欄發生了變化。Alt``Enter

有沒有人對我如何讓Ctrl++AltEnter預期執行Matlab程式碼塊有一個聰明的建議?謝謝!

終端傳輸字元¹,而不是鍵。Ctrl當您按下++Alt之類的鍵或組合鍵時Enter,終端必須將其轉換為字元或字元序列。幾乎沒有足夠的字元來表示所有鍵,因此大多數此類組合都作為轉義序列傳輸:以轉義字元開頭的字元序列。

儘管有一些通用約定,但轉義序列沒有通用標準。例如,Alt+*key*通常發送轉義字元,後跟key的字元或轉義序列;但是Ctrl+Enter發送的內容沒有標準。一些終端是可配置的,一些具有硬編碼的轉義序列。

另請參閱使用終端時的鍵綁定問題以獲取更詳細的說明以及 Xterm 的可能解決方案。

如果您無法通過您喜歡的終端傳輸 ++ Ctrl,您可以選擇不同的鍵綁定。當您在 GUI Emacs 中使用 Matlab 時,通過按來找出執行的命令++ 。然後輸入where是命令名;這將告訴您綁定到什麼鍵。如果沒有您可以方便地鍵入的綁定,請將其添加到您的 init 文件中,例如Alt``Enter``Ctrl``Alt``Enter``C-h c C-M-return``C-h w matlab-foo RET``matlab-foo``matlab-foo

(defun my-eval-after-load-matlab ()
 (define-key matlab-mode-map [f9] 'matlab-foo))
(eval-after-load "matlab" '(my-eval-after-load-matlab))

對於"matlab",替換定義matlab-foo命令的 Lisp 文件的名稱。要找出那是什麼,請輸入C-h k C-M-return;這告訴你類似“CM-return 執行命令 matlab-foo,它是 matlab.el 中的互動式編譯 Lisp 函式”。Lisp 文件的名稱是該行的最後一位,減去該.el部分。對於matlab-mode-map,替換鍵盤映射的名稱;這通常是主要模式的名稱(C-h v major-mode RET“它的值是 matlab-mode”)加上-map末尾。

或者,您真的需要使用 Screen 嗎?如果您只是為了讓 Emacs 能夠在斷開連接後繼續使用它,那麼這實際上不是必需的。將 Emacs 作為守護程序 ( ) 啟動,並通過執行以打開新的 GUI 框架emacs --daemon通過 SSH 遠端連接到它。emacsclient -c您可以在多個顯示器上打開和關閉 GUI 框架,即使顯示器來來去去,Emacs 也會繼續執行。

¹實際上是字節,但那一點在這裡無關緊要。

引用自:https://unix.stackexchange.com/questions/225503