在OSX上运行屏幕时,command + r会在所有屏幕上弄乱vim中的箭头键


15

您如何放松呢?因为您总是不停地按Command r来重新加载浏览器,而且您经常在终端中。

由于我还没有弄清楚如何重新启用箭头键,因此我目前杀死了所有屏幕并重新启动屏幕,这很痛苦。

Answers:


28

作为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 [ AEsc O A。为此发出的VT100控制代码是Esc [ ? 1 h。Command + R发送的terminal reset命令将光标键重置为默认值。

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

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


另一个问题可能是终端类型混淆了vim,请参阅在tmux中运行时vim中的按键
kynan 2012年

感谢您的解决方案!作为Web开发人员,这一直困扰着我。在浏览器中,您经常按下cmd-r来刷新屏幕,偶尔我一定是偶然在vim中按下了cmd-r。我直到现在才弄清楚为什么我的箭头键被擦掉了。并且为您hjkl纯粹在那里,我不使用hjkl的主要原因是因为它们不可用于插入模式下的光标移动。为我解决这个问题,我会重新考虑。
修订

6

您可以使用以下方法快速轻松地解决此问题 :!reset


1

如果您使用的是iTerm,则可以通过按command+d和返回vim会话。command+w

为什么?

command+d 将拆分终端窗格,神奇地还原您来自的窗格。

command+w 现在将关闭您刚刚打开的拆分窗格。


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.