箭头键自发停止在Vim中工作


25

我最近从OS X 10.6(我认为)升级到10.9。从那时起,似乎在进行编辑时vim,箭头键将“自发地”停止工作。

一次,我无奈地“捣碎”了其中一个箭头键,并最终看到“ E388无法找到定义”错误。我经历过的所有其他时间,已经使用了一段时间的箭头突然开始对我叮叮当当

退出并重新打开可以暂时解决问题。但是,我想阻止它!

有人知道这可能是什么吗?以及如何解决?


好像我的默认值vimrc在更新过程中被修改了。如果我的记忆正确,那以前是一个很大的文件。现在,它只包含以下内容:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

我不知道这些选项还能做什么。我会仔细研究-但是,希望这里的人比我能用Google搜索和阅读的知识更快。


我也刚刚意识到,这里有一个以苹果为中心的论坛,这个问题可能更适合。因此,如果这比OS X更可能是OS X的条件vim,则也许mod可以为我迁移此条件。
svidgen

2
让我想起了在大学里“ Prime”大型机上工作的经历。教授教你不要使用方向键vi。始终使用hjkl。那就是“箭头”键过去在古老硬件上的位置。
Red Cricket

好的...但是,方向键应该起作用。无论您的教授是否认为我应该使用它们。而且我有时发现它们很方便。因此,期待看到解决方案。
svidgen 2014年

1
将密钥文字插入缓冲区时会发生什么?进入插入模式,然后按Ctrl + v,然后按箭头键。Mac上的Vim将向上箭头键显示为^[OA,将向下箭头显示为^[OB,将右侧箭头显示为,将^[OC左侧箭头显示为^[OD。在问题出现之前和之后进行检查
Nathan Wallace 2014年

@NathanWallace不确定我如何忽略了您的问题。接下来,当我在Mac上时,我会尝试一下。
svidgen

Answers:


24

James Hodgkinson的博客中找到以下命令,该命令对我有用。注意它将刷新vim屏幕。

:!reset

不知道我如何忽略了这个答案,但是看起来很有希望!
svidgen

实际上...按本文中所述按Ctrl + R可以完全与我在上面对Nathan的答复中指出的错误箭头键映射保持一致。在这种情况下,使用reset命令即可解决该问题。而且 ..我无法以其他任何方式可靠地重现该问题,因此,这绝对是最有用的答案!
svidgen

11

我也几次遇到这个问题。我碰巧在通过SSH登录到的另一台计算机上运行GNU屏幕。为了解决该问题,我卸下了屏幕(Ctrl- a d),退出了计算机,重新登录,然后使用重新连接screen -x。只需卸下并重新连接屏幕,它就可以在不注销机器的情况下工作。我不记得了。


关闭我的屏幕会话并重新启动它对我来说已经解决了。
2015年

1
那是我的问题。不知何故screen进入了funk状态(通过ssh连接)。关闭该终端,然后再次ssh,screen -rd完成了窍门。谢谢!
皮埃尔·D

@PierreD是的,我也已经遇到过几次这个问题-在一次screen会议上,Detach&Reattach也解决了这个问题,谢谢!
stdcerr

6

在路径中/usr/share/vim/我找到了.vimrc文件...在那儿添加了一行

set term=ansi 

它为我工作。现在,箭头键在Vim编辑器中可以正常工作。


2
这也为我修复了该问题,因为最新的Windows 10 WSL / Ubuntu更新破坏了它。
灰狐

3

这听起来很像您的问题。本文的标题为:Vim中的光标键:您Mac'ing Me Crazy!

摘抄

Vim在许多情况下很有用,尤其是对于快速编辑(尤其是作为root用户)以及在远程服务器上编辑文件。在使用Mac Book Pro的9个月中,我遇到的一个烦恼是Vim中的光标键在插入或命令模式下都发出响声,而不是换行。通过MacPorts升级到版本7可获得相同的结果。将我的TERM从rxvt切换到VT220后,光标键起作用了!缺点是语法高亮停止工作。

幸运的是,在我的Google搜索参数中添加了VT220,从而在Vim文档中找到了对vt100-cursor-keys的引用。将以下代码添加到您的.vimrc文件中以解决此问题:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

在同一篇文章中,还建议将OSX 设置$TERMlinux

摘抄

更好的解决方案是将TERM的默认值更改为linux或dtterm,因为TERM值将在远程服务器上获取。在这个时代,我敢打赌大多数服务器都支持这两种终端类型。


嗯...我现在更加困惑。我以为我有全局/默认.vimrc文件。这些将在OS X更新期间被移动或删除吗?
svidgen 2014年

@svidgen-不,我认为这不会改变,但是这个问题听起来与您非常相似,而且修复程序很容易尝试,因此我想与您分享。顺带一提$TERM,你本来可以改变的。
slm

小孩子,这绝对是这里最相关的答案。+1。不幸的是,由于我无法始终如一地重现该问题,因此不确定是否可以解决此问题。
svidgen 2014年

应用此修复程序后,再次发生此问题。仍然是一个相关的答案,保留+1。但是,如果您有兴趣提供其他答案,请参阅上面的评论。
svidgen 2014年

0

恭喜您更新。我在周末做了自己的更新,并且一直在处理自己的一些奇怪的键盘问题。

这是我需要做的几件事:

  • 删除旧的Logitech游戏软件并升级。在执行此操作之前,我在使用方括号和花括号时遇到问题。特殊键通常在VIM上下文中发送esc- [序列,因此这可能是相关的。
  • 进入系统偏好设置:安全性和隐私权:隐私权:可访问性,并启用几个应用程序(synergy_server和Logitech游戏软件)。在进行此更改之前,我无法协同控制其他计算机或在G11上使用宏。我怀疑这对您来说是直接的联系,但是“辅助功能”选项是新的,可能会应用于您的其他一些应用程序。

0

如果您正在.sql使用vim(不提及)中的文件进行操作,则可以为您提供帮助。前几天我刚处理过。

在文件中 ~/.vimrc

let g:omni_sql_no_default_maps = 1

这个特殊的问题在这里讨论

如果您在使用.sql文件时没有遇到此问题,vim那么我表示歉意,我唯一的想法是在vim发生问题时验证其中的映射。

:map Ctrl V → 当您失去使用箭头的能力时,请执行该命令并查看映射是否消失。如果确实如此,这将为您提供一个开始挖掘的地方。


0

我在SSH会话中遇到了这个问题,并通过注销然后重新登录来解决了该问题:

exit
ssh ...

感谢您的参与。尽管如此,所选答案始终对我有用。你试过了吗?
svidgen

是的,公认的解决方案在Ubuntu 18上不起作用。我什至卸载并重新安装了vim(在同一ssh会话中),没有骰子。仅注销然后重新登录才能恢复箭头功能。
duhaime '18 -10-19

0

我有这个问题,当我使用Windows中的“系统环境变量”,设置TERMxterm-256colorvim当我再次删除变量时,问题消失了(我恢复了正常)。

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.