![在 OSX 上运行屏幕时,command+r 会使 vim 中的所有屏幕中的箭头键混乱](https://linux22.com/image/1257410/%E5%9C%A8%20OSX%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%B1%8F%E5%B9%95%E6%97%B6%EF%BC%8Ccommand%2Br%20%E4%BC%9A%E4%BD%BF%20vim%20%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%B1%8F%E5%B9%95%E4%B8%AD%E7%9A%84%E7%AE%AD%E5%A4%B4%E9%94%AE%E6%B7%B7%E4%B9%B1.png)
您该如何解决这个问题?因为您总是按下 command r 来重新加载浏览器,而且您经常处于终端中。
由于我还没有弄清楚如何重新启用箭头键,我目前关闭了所有屏幕并重新启动屏幕,这很麻烦。
答案1
作为一名优秀的 Vim 拥护者,我有责任告诉您学习使用 hjkl 作为光标键。在探索问题的过程中,我以为它已经神秘地自行修复,直到我意识到我正在使用 hjkl 而不是实际的箭头键进行测试。
无论如何,现在来看一下真正的答案。
您无需关闭所有屏幕并重新启动,而是可以利用屏幕在终端之间移动的功能。点击CTRL+A
CTRL+D
以将屏幕从终端分离,然后运行screen -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
O
A
它为此发出的 VT100 控制代码是Esc
[
?
1
h
。Command+R 发送的终端重置命令将光标键重置为默认值。
分离并重新连接屏幕会导致 ncurses 重新控制终端,并重新应用它喜欢的所有设置,所以这可能是恢复正常的最便携和最可靠的方法。
VT100 控制代码:http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm
答案2
您可以使用以下方法快速轻松地修复此问题:!reset
答案3
如果你正在使用 iTerm,你可以按下command+d
并恢复你的 vim 会话command+w
为什么?
command+d
将分割终端窗格,神奇地恢复您原来的窗格。
command+w
将关闭您刚刚打开的拆分窗格。