如何将C-/(即控制斜线)发送到终端?


13

我正在尝试在终端中运行Emacs。我已经在终端首选项中启用了“使用选项作为meta”,因此大约95%的工作正常。

按键序列ctrl-/(或Emacs表示法C- /)为“撤消”。此按键序列仅会使终端响铃。我该如何解决?


FWIW,这可以在iTerm2-iterm2.com中使用,但我想我只是重新训练自己在任何地方都使用^ _,以便更便携。
Steven R. Loomis

@ StevenR.Loomis可移植吗?在Android下,control- /或control__均无法工作...
Michael

@Michael我说的是可移植的,因为它可以用ASCII表示(请参见已接受的答案),因此可以轻松进行网络连接。另外,它似乎可以在我见过的大多数物理键盘上使用。我没有尝试将键盘与android设备配对,您指的是软键盘还是硬键盘?
史蒂文·R·鲁米斯

@ StevenR.Loomis软件...控制部分似乎被忽略了,导致尝试撤消插入斜杠或下划线。
2014年

Answers:


19

Control- /不是标准控制代码集的一部分。在许多终端仿真中,它不能直接表示为按键。仅在某些特定于平台的“扫描代码模式”或“ GUI模式”(API确切告诉您正在使用哪些键和修饰符)的情况下,才能正确检测到这种击键。您的终端仿真器发出蜂鸣声,因为它实际上是无效的按键。

标准控制代码仅涵盖“控制”版本

  • @ AZ [\]^_(ASCII 0-31),和
  • ? (ASCII 127)

在大多数使用大多数美国键布局运行的终端仿真器程序中,您可能需要按Shift生成一些“控制代码”:

  • C- @是ControlShift2(因为@Shift2
  • C- ^是ControlShift6(因为^Shift6
  • C-_是ControlShift-(因为_Shift-
  • 但是,C-?可能并不总是ControlShift/(因为?Shift/); C-?通常是由Backspace(在Apple键盘上,标有“删除”的键,没有附加符号⌦)或Delete(在Apple键盘上带有with的键)生成的。

在基于tty的Emacs中,通常可以使用C-_ undo代替C- /。


1
感谢您的详尽回答。我将尝试使用不同的终端类型,以查看是否可以正常工作。
凯文·彼得森

1
“不同的终端类型”?您是指不同的终端仿真器程序,还是在终端中通过终端>首选项>设置> [配置文件]>高级>声明终端将$ TERM值设置为?(首选项所做的全部工作就是设置$ TERM的值。它不会更改终端仿真的操作。)Control- /是X11的功能,可可或终端不支持。
克里斯·佩奇

5

Ctrl- /发送0x1f,相当于VT102以来的Ctrl-_。有很多VT100仿真器,但实际上是VT102仿真器。iTerm2之所以有效,是因为它遵循此行为。

只有严格符合VT100规范的仿真器才能发送Ctrl- /。我相信终端应用程序就是其中之一。

按下控制键时,VT100会屏蔽7位ASCII的2个最高有效位。/是0x2f,o是0x6f。屏蔽掉2位后,它们均为0x0f。VT100可以发送Ctrl-o,但不能发送Ctrl- /。


这应该是公认的答案。
ocodo '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.