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

Paw*_*iel 14 keyboard-shortcuts bash emacs ubuntu windows-10

在 Windows 10 中,我为 Linux Bash 安装了子系统。但是我在 Emacs 中的快捷方式有问题Ctrl+space没有设置标记点。

我尝试过但没有帮助:

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

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

我想知道这是否与 ubuntu 有某种关系,它在 ctrl + space 上有类似的问题,而 windows linux bash 正在使用 ubuntu 存储库。

小智 6

我使用 ConEmu。没有优雅的方法,但可以使用宏解决。

  1. 打开“设置”(单击?顶部的图标)。
  2. 单击“键和宏”。
  3. 在右侧,向下滚动直到看到“Macro 01”..“Macro 32”选项,然后选择任何可用的选项(无关紧要)。
    我们以宏 01为例。
  4. 在第一个下拉菜单中选择“空间”。
  5. 在第二个下拉菜单中选择“Ctrl”。保留其余 2 个下拉菜单不变。
  6. GUI 宏字段中粘贴以下内容:

    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")
    
    Run Code Online (Sandbox Code Playgroud)
  7. 以上基本上将M-x select-mark-command字符串发送到 emacs。现在点击“保存设置”。


最后应该是这样的:

在此处输入图片说明


Tre*_*rey 5

在撰写本文时(2016 年 9 月 1 日),在使 Ctrl-Space 通过 Bash 终端方面没有解决方案,但有一种解决方法可能对许多用户来说就足够了:使用 PuTTY 连接通过SSH,强制处理 Ctrl-Space。(在 tty 模式下,无法区分 Ctrl-Space 和 Ctrl-@,因为它们是相同的字符代码,但这应该不是问题,因为默认情况下 Emacs 设置为处理set-mark-command这种方式。)

  1. 使用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在 Hostname 字段中登录,其他所有内容都保留为默认值。系统会要求您输入 Linux 用户名和密码。
  5. 运行emacs。Ctrl-space 将根据需要设置标记。

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

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

与直接终端相比,以这种方式运行的唯一真正缺点是粘贴事件是逐个字母发送的,就好像您非常快地键入剪贴板的内容一样,这可能会导致电子对、缩进、代码段扩展等。火。(粘贴应该不会造成主和弦命令来火,因为那里的逻辑来检测正在进行中的粘贴和禁用键的和弦,直至糊状完成。)

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