
在 Windows 10 中,我安裝了 Linux Bash 子系統。但我有一個問題,Emacs Ctrl+中的快捷方式space沒有設定標記點。
我嘗試過但沒有幫助:
我嘗試在 Windows 控制台的屬性選單中取消選取“啟用 Ctrl 鍵快捷鍵”
我嘗試使用不同的終端 ConEmu 但沒有成功。
我想知道這是否與 ubuntu 有某種關係,ubuntu 與 ctrl + space 有類似的問題,而 windows linux bash 正在使用 ubuntu 儲存庫。
答案1
沒有解決方案為此,在撰寫本文時(2016 年9 月1 日),就讓Ctrl-Space 透過Bash 終端機而言,但有一個解決方法對於許多用戶來說可能就足夠了:使用PuTTY 透過SSH 連接,這會強制Ctrl-空白鍵的處理。 (在 tty 模式下,不可能區分 Ctrl-Space 和 Ctrl-@,因為它們是相同的字元代碼,但這不應該成為問題,因為預設情況下 Emacs 設定為以set-mark-command
這種方式處理。)
- 安裝 OpenSSH 伺服器
sudo apt-get install openssh-server
。如果已安裝,請將其刪除 (sudo apt-get remove openssh-server
),然後重新安裝以重設設定檔。 編輯/etc/ssh/sshd_config文件(使用 sudo),如下:
- 如果有未註解的行設置
PermitRootLogin
,請將其註解掉。新增一行PermitRootLogin no
。 - 新增一行
AllowUsers USERNAME
,將 USERNAME 替換為您的 Linux 使用者名稱(如果您不知道那是什麼,請whoami
在 Bash 提示字元下執行該命令)。 - 理想情況下,您應該使用 SSH 金鑰來設定無密碼身份驗證,但如何做到這一點超出了本問題的範圍(有許多指南可用;在網路上搜尋「passwordless ssh-keygen」)。同時,新增或取消註解該行
PasswordAuthentication yes
。 - 放
UsePrivilegeSeparation no
;您可能會在文件中找到一行內容UsePrivilegeSeparation yes
:只需更改yes
為no
並保存/etc/ssh/sshd_config文件。
如果此處出現問題,您可以透過重複步驟 1 來復原檔案。
- 如果有未註解的行設置
- 使用命令啟動 SSH 伺服器
sudo service ssh --full-restart
。 - 使用 PuTTY(下載這裡),在主機名字段中登錄
localhost
,其他一切保留預設值。系統會要求您輸入 Linux 使用者名稱和密碼。 - 跑步
emacs
。 Ctrl-空白鍵將根據需要設定標記。
(請注意,上述步驟將不是,它們本身使您的系統能夠接受來自以下設備的 SSH 連線:其他主機。為此,您還必須變更 Windows 防火牆規則以允許入站 TCP 連接埠 22。
在另一個答案你說,“但是putty不是本地終端。”我不確定您是否不知道可以localhost
以這種方式使用,或者您是否因為與本地終端相比開銷更大而放棄了 PuTTY。如果是後者,我不會擔心,互動式 SSH 會話是一個極其輕量級的負載。 (這當然是很多比運行 X Window 系統負載更少,因此您可以運行 GUI Emacs 或 xterm!
與直接終端相比,以這種方式運行的唯一真正缺點是貼上事件是逐個字母發送的,就好像您非常快速地鍵入剪貼簿的內容一樣,這可能會導致電對、縮排、片段擴展等火。 (貼應不是導致觸發關鍵和弦命令,因為有邏輯可以檢測正在進行的貼上並禁用關鍵和弦,直到貼上完成。
與標準 Bash 終端機相比,至少還有一個非常大的優勢:PuTTY 以 Emacs 可以響應的形式支援滑鼠事件,因此,諷刺的是,即使您可以,您也可以在 PuTTY 中用滑鼠移動點。本地終端。
答案2
我用的是ConEmu。沒有優雅的方法,但是可以使用巨集來解決。
- 打開“設定”(點擊
☰
頂部的圖示)。 - 按一下“按鍵和巨集”。
- 在右側,向下捲動直到看到“Macro 01”..“Macro 32”選項,然後選擇任何可用的選項(無關緊要)。
讓我們來宏01對於這個例子。 - 在第一個下拉式選單中選擇“空間”。
- 在第二個下拉式選單中選擇“Ctrl”。其餘 2 個下拉式選單不變。
貼到下面的圖形使用者介面宏場地:
keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
上面基本上將
M-x select-mark-command
字串傳送到 emacs。現在點選「儲存設定」。
它最終應該看起來像這樣:
答案3
該項目允許您使用 MinTTY 作為替代終端:https://github.com/mintty/wsltty。它源自 PuTTY,但不需要 SSH。與 PuTTY 一樣,它可以很好地處理 Ctrl-空格鍵。