Windows 10 linux bash shell ctrl+space 在 Emacs 中未設定標記

Windows 10 linux bash shell ctrl+space 在 Emacs 中未設定標記

在 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這種方式處理。)

  1. 安裝 OpenSSH 伺服器sudo apt-get install openssh-server。如果已安裝,請將其刪除 ( sudo apt-get remove openssh-server),然後重新安裝以重設設定檔。
  2. 編輯/etc/ssh/sshd_config文件(使用 sudo),如下:

    • 如果有未註解的行設置PermitRootLogin,請將其註解掉。新增一行PermitRootLogin no
    • 新增一行AllowUsers USERNAME,將 USERNAME 替換為您的 Linux 使用者名稱(如果您不知道那是什麼,請whoami在 Bash 提示字元下執行該命令)。
    • 理想情況下,您應該使用 SSH 金鑰來設定無密碼身份驗證,但如何做到這一點超出了本問題的範圍(有許多指南可用;在網路上搜尋「passwordless ssh-keygen」)。同時,新增或取消註解該行PasswordAuthentication yes
    • UsePrivilegeSeparation no;您可能會在文件中找到一行內容UsePrivilegeSeparation yes:只需更改yesno並保存/etc/ssh/sshd_config文件。

    如果此處出現問題,您可以透過重複步驟 1 來復原檔案。

  3. 使用命令啟動 SSH 伺服器sudo service ssh --full-restart
  4. 使用 PuTTY(下載這裡),在主機名字段中登錄localhost,其他一切保留預設值。系統會要求您輸入 Linux 使用者名稱和密碼。
  5. 跑步emacs。 Ctrl-空白鍵將根據需要設定標記。

(請注意,上述步驟將不是,它們本身使您的系統能夠接受來自以下設備的 SSH 連線:其他主機。為此,您還必須變更 Windows 防火牆規則以允許入站 TCP 連接埠 22。

另一個答案你說,“但是putty不是本地終端。”我不確定您是否不知道可以localhost以這種方式使用,或者您是否因為與本地終端相比開銷更大而放棄了 PuTTY。如果是後者,我不會擔心,互動式 SSH 會話是一個極其輕量級的負載。 (這當然是很多比運行 X Window 系統負載更少,因此您可以運行 GUI Emacs 或 xterm!

與直接終端相比,以這種方式運行的唯一真正缺點是貼上事件是逐個字母發送的,就好像您非常快速地鍵入剪貼簿的內容一樣,這可能會導致電對、縮排、片段擴展等火。 (貼應不是導致觸發關鍵和弦命令,因為有邏輯可以檢測正在進行的貼上並禁用關鍵和弦,直到貼上完成。

與標準 Bash 終端機相比,至少還有一個非常大的優勢:PuTTY 以 Emacs 可以響應的形式支援滑鼠事件,因此,諷刺的是,即使您可以,您也可以在 PuTTY 中用滑鼠移動點。本地終端。

答案2

我用的是ConEmu。沒有優雅的方法,但是可以使用巨集來解決。

  1. 打開“設定”(點擊頂部的圖示)。
  2. 按一下“按鍵和巨集”。
  3. 在右側,向下捲動直到看到“Macro 01”..“Macro 32”選項,然後選擇任何可用的選項(無關緊要)。
    讓我們來宏01對於這個例子。
  4. 在第一個下拉式選單中選擇“空間”。
  5. 在第二個下拉式選單中選擇“Ctrl”。其餘 2 個下拉式選單不變。
  6. 貼到下面的圖形使用者介面宏場地:

    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")
    
  7. 上面基本上將M-x select-mark-command字串傳送到 emacs。現在點選「儲存設定」。


它最終應該看起來像這樣:

在此輸入影像描述

答案3

該項目允許您使用 MinTTY 作為替代終端:https://github.com/mintty/wsltty。它源自 PuTTY,但不需要 SSH。與 PuTTY 一​​樣,它可以很好地處理 Ctrl-空格鍵。

答案4

此問題現已修復Windows 10 內部版本 14965。查看:

[Environment]::OSVersion

如果還沒有安裝更新,請安裝!

相關內容