Windows 10 linux bash shell ctrl+space 无法在 Emacs 中设置标记

Windows 10 linux bash shell ctrl+space 无法在 Emacs 中设置标记

Ctrl在 Windows 10 中,我安装了 Subsystem for Linux Bash。但我在Emacs中遇到快捷方式space无法设置标记点的问题。

我尝试过但没有帮助的方法:

  • 我尝试在 Windows 控制台的属性菜单中取消选中“启用 Ctrl 键快捷键”

  • 我尝试使用不同的终端 ConEmu,但没有成功。

我想知道这是否与 ubuntu 有关,ubuntu 在 ctrl + space 方面有类似的问题,并且 Windows Linux Bash 正在使用 ubuntu 存储库。

答案1

没有解决方案在撰写本文时(2016 年 9 月 1 日),就让 Ctrl-Space 通过 Bash 终端而言,情况并非如此——但有一种解决方法可能足以满足许多用户的需求:使用 PuTTY 通过 SSH 连接,这会强制处理 Ctrl-Space。(在 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 密钥设置无密码身份验证,但如何做到这一点超出了这个问题的范围(有许多指南可用;在网上搜索“无密码 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-空格键将根据需要设置标记。

(请注意,上述步骤将不是,使你的系统能够接受来自其他主机。为此,您还必须更改 Windows 防火墙规则以允许入站 TCP 端口 22。)

另一个答案你说,“但 Putty 不是本地终端。”我不确定你是否不知道你可以localhost这样使用,或者你是否因为与本地终端相比开销更大而拒绝使用 PuTTY。如果是后者,我不会担心,交互式 SSH 会话是一种非常轻量的负载。(当然很多比运行 X Window 系统的负载更小,因此您可以运行 GUI Emacs 或 xterm!)

与直接终端相比,这种方式运行的唯一真正缺点是粘贴事件是逐个字母发送的,就好像你非常快速地输入剪贴板的内容一样,这可能会导致触发电气对、缩进、片段扩展等。(粘贴应该不是导致键和弦命令触发,因为有逻辑可以检测正在进行的粘贴并禁用键和弦直到粘贴完成。)

而且与标准 Bash 终端相比,它至少还有一个非常大的优势:PuTTY 以 Emacs 可以响应的形式支持鼠标事件,因此,具有讽刺意味的是,即使您无法使用本地终端,您也可以在 PuTTY 中使用鼠标移动点。

答案2

我用的是ConEmu,没有什么优雅的方法,不过可以用宏来解决。

  1. 打开“设置”(点击顶部的图标)。
  2. 点击“键和宏”。
  3. 在右侧,向下滚动直到看到“宏 01”..“宏 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-space。

答案4

此问题现已修复Windows 10 内部版本 14965。 查看:

[Environment]::OSVersion

如果还没有,请安装更新!

相关内容