Answers:
没有解决这一点,在通过击终端使Ctrl-Space键通而言,在撰写本文(2016年9月1日)的时间-丁有可能对许多用户来说是足够的一种解决方法:使用通过腻子连接SSH,强制处理Ctrl-Space。(在tty模式下,无法将Ctrl-Space和Ctrl- @区别开来,因为它们是相同的字符代码,但这不应该成为问题,因为默认情况下,Emacs设置为可以使用set-mark-command
这种方式。)
sudo apt-get install openssh-server
。如果已安装,请将其删除(sudo apt-get remove openssh-server
),然后重新安装以重置配置文件。编辑/ etc / ssh / sshd_config文件(使用sudo),如下所示:
PermitRootLogin
,请注释掉它。添加一行PermitRootLogin no
。AllowUsers USERNAME
,用您的Linux用户名替换USERNAME(如果您不知道这是什么,请whoami
在Bash提示符下运行命令)。PasswordAuthentication yes
。UsePrivilegeSeparation no
; 您可能在文件中找到一行说UsePrivilegeSeparation yes
; 只需将更yes
改为no
并保存/ etc / ssh / sshd_config文件。如果此处出现问题,您可以通过重复步骤1来还原文件。
sudo service ssh --full-restart
。localhost
在“主机名”字段中使用登录,其他所有内容保留为默认设置。系统将要求您输入Linux用户名和密码。emacs
。Ctrl-空格将根据需要设置标记。(请注意,上述步骤本身不会使您的系统能够接受来自其他主机的SSH连接。为此,您还必须更改Windows防火墙规则以允许入站TCP端口22。)
在另一个答案中,您说:“但腻子不是本地终端。” 我不确定您是否不知道可以用localhost
这种方式使用,还是因为与本地终端相比开销更大而取消了PuTTY。如果是后者,我不会担心,交互式SSH会话是一种非常轻量级的负载。(与运行X Window系统相比,负载肯定要小得多,因此您可以运行GUI Emacs或xterm!)
与直线端子相比,以这种方式运行的唯一真正的缺点是,粘贴事件会逐个字母地发送,就像您快速键入剪贴板的内容一样,这可能会导致电对,缩进,片段扩展等。火。(粘贴应该不会造成主和弦命令来火,因为那里的逻辑来检测正在进行中的粘贴和禁用键的和弦,直至糊状完成。)
而且,与标准的Bash终端相比,至少还有一个非常大的优势:PuTTY支持鼠标事件,Emacs可以响应鼠标事件,因此具有讽刺意味的是,即使可以,您也可以在PuTTY中使用鼠标来移动鼠标点。 t与本地终端。
我使用ConEmu。没有优雅的方法,但是可以使用宏解决。
☰
顶部的图标)。将以下内容粘贴到“ 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")
上面基本上是将M-x select-mark-command
字符串发送给emacs。现在单击“保存设置”。
最后应该看起来像这样:
showkey -a
在Windows / Ubuntu-bash控制台中运行时,它显示ctrl + space仅发送普通空间。
与其他任何linux机器的ssh会话相同的问题ctrl +空间以纯空间发送。
任何其他基于Windows的终端(conmu,consolez,MobaXTerm)都具有相同的行为-除了腻子可以很好地解决此问题,但腻子不是本地终端。
我认为Windows终端没有某些序列的映射。同样的问题也存在于其他组合中,例如ctrl + 1 ctrl + 2 ..等。这里需要的是可以自行处理键盘映射的终端,例如腻子。
我相信这个问题应该在Windows bash终端的将来版本中得到解决。
set-mark-command
可能是Emacs中最常用的命令(除了self-insert-command
),为此重新训练手指是一个非常非常困难的问题-特别是您是否像我一样使用Emacs已有25年以上。
该项目允许您使用MinTTY作为替代终端:https : //github.com/mintty/wsltty。它源自PuTTY,但不需要SSH。和PuTTY一样,它可以很好地处理Ctrl-space。
有一个黑客,因为我们可以为Windows安装X Server
1首先为Windows 安装Xming
2开始xming
3然后从Windows bash安装
sudo apt-get install rxvt-unicode-256color
4然后打开cmd.exe
并运行
bash.exe -c "urxvtd -q -o -f; bash"
现在我们在bash控制台中并运行
(DISPLAY=:0 urxvtc &)
5此时,我们应该已经在Xming中看到了一个新终端。我们可以在终端模式下运行emacs。
emacs -nw
现在所有绑定都可以正常工作
相关讨论在这里 https://github.com/Microsoft/BashOnWindows/issues/531
-nw
它使它在终端中运行,就像在PuTTY中一样,只是您现在必须运行整个第二个窗口系统-从在我的快速测试中,除了运行sshd和PuTTY外,这将花费您近500 MB的内存,并且CPU成本也将相应提高。