为什么cmd-r在Mac上弄乱了Vim?它实际上试图做什么?


19

因为我是一名Web开发人员,所以不断运行此命令,因此'cmd-r'的副作用是阻止箭头键在任何模式下均能正常工作,但是我无法想象这是目的,而且我一直无法找到任何有关其实际功能的文档。

编辑:显然,这实际上是mac终端命令“发送重置”,所以我现在想这是“发送重置命令有什么作用?”的问题。解释了为什么我无法在vim文档中找到它。

Answers:



10

即使不使用屏幕,这也会发生在我身上,并且我发现我可以通过清除运行vim的终端来恢复正常(我也使用tmux进行了测试,但没有使用屏幕:

:!clear

6

此问题已在此处得到解答:在OSX上运行屏幕时,command + r在所有屏幕上的vim中弄乱了箭头键

复制的答案:

作为Vim的优秀拥护者,我一定会告诉您学习使用hjkl作为光标键。在研究该问题的过程中,我以为它神秘地修复了它,直到我意识到我正在使用hjkl而不是实际的箭头键进行测试。

无论如何,现在是一个真正的答案。

无需关闭所有屏幕并重新启动,您可以利用屏幕在终端之间移动的功能。按CTRL + A CTRL + D将屏幕与终端分离,然后运行屏幕-D -R重新连接。这样可以使箭头键再次起作用。

如果您不在屏幕上,而是在Vim中,则可以按CTRL + Z并键入fg以获得相同的效果。

您也可以解决Vim中的光标键问题,但是重设可能更改了其他终端选项,因此如上所述进行操作更安全,以免出现其他随机显示/键盘问题。如果您仍然想要重新映射,则它们是:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

肮脏的细节:

Vim和screen都使用ncurses库来管理终端。当ncurses控制与VT100兼容的终端时,正在做的一件事就是将箭头键切换到“应用程序模式”,这会更改它们发出的代码。例如,向上箭头键从Esc [A更改为Esc OA。为此发出的VT100控制代码是Esc [?1小时 Command + R发送的terminal reset命令将光标键重置为默认值。

拆卸并重新连接屏幕会导致ncurses重新控制终端,从而重新应用其喜欢的所有设置,因此这可能是使事情恢复正常的最可移植和最可靠的方法。

VT100控制代码:http : //www.handshake.de/infobase/dfue/prgrmmer/t322.htm


是的,发现我发布后看到“ Command + R发送的terminal reset命令将光标键重置为默认值。”仍然很高兴知道确切的原因。老实说,我最感兴趣的是知道该命令的预期用途是什么,而这并不能解决问题。
GlyphGryph 2014年
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.