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
这种方式处理。)
- 使用 安装 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 密钥设置无密码身份验证,但如何做到这一点超出了这个问题的范围(有许多指南可用;在网上搜索“无密码 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-空格键将根据需要设置标记。
(请注意,上述步骤将不是,使你的系统能够接受来自其他主机。为此,您还必须更改 Windows 防火墙规则以允许入站 TCP 端口 22。)
在另一个答案你说,“但 Putty 不是本地终端。”我不确定你是否不知道你可以localhost
这样使用,或者你是否因为与本地终端相比开销更大而拒绝使用 PuTTY。如果是后者,我不会担心,交互式 SSH 会话是一种非常轻量的负载。(当然很多比运行 X Window 系统的负载更小,因此您可以运行 GUI Emacs 或 xterm!)
与直接终端相比,这种方式运行的唯一真正缺点是粘贴事件是逐个字母发送的,就好像你非常快速地输入剪贴板的内容一样,这可能会导致触发电气对、缩进、片段扩展等。(粘贴应该不是导致键和弦命令触发,因为有逻辑可以检测正在进行的粘贴并禁用键和弦直到粘贴完成。)
而且与标准 Bash 终端相比,它至少还有一个非常大的优势:PuTTY 以 Emacs 可以响应的形式支持鼠标事件,因此,具有讽刺意味的是,即使您无法使用本地终端,您也可以在 PuTTY 中使用鼠标移动点。
答案2
我用的是ConEmu,没有什么优雅的方法,不过可以用宏来解决。
- 打开“设置”(点击
☰
顶部的图标)。 - 点击“键和宏”。
- 在右侧,向下滚动直到看到“宏 01”..“宏 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-space。