我已经使用自制软件安装了最新的vim,并且还从谷歌代码主页安装了mac-vim。 在mac-vim中一切正常。但是当我在mac中的terminal.app中运行vim并进入插入模式时,我会得到箭头键的A B C D,这非常烦人。
我用Google搜索并尝试了所有解决方案,但没有任何对我有用!
当我使用vim -u NONE -U NONE -N
运行vim时,它会变得有意义,然后箭头键在插入模式下开始正常运行。
我的vimrc文件是janus (from carlhuda)
的克隆你在终端有同样的问题吗?有没有办法在terminal.app中修复它?
答案 0 :(得分:44)
只需在远程计算机的主目录中创建一个空的" .vimrc文件即可。它开始对我很好。
touch ~/.vimrc
答案 1 :(得分:20)
您需要在vim中不设置兼容模式 在正常模式下尝试以下命令
:set nocompatible
答案 2 :(得分:11)
这对我有用:
map ^[[A <up>
map ^[[B <down>
map ^[[C <right>
map ^[[D <left>
要为每个箭头键输入序列,您需要按 ctrl - v ,然后按箭头键。
例如,键入第一行:
m , a , p , space , ctrl - v < / kbd>,←, space ,&lt; , u , p , &GT;
这也可行:
set t_ku=^[[A
set t_kd=^[[B
set t_kr=^[[C
set t_kl=^[[D
答案 3 :(得分:9)
我在MacBook Pro上使用OSx El Captain(版本10.11.1),在用Homebrew更新我的Vim之后遇到了同样的问题。
我的Vim版本是7.4.1063。
我遇到了终端应用程序以及iTerm应用程序(构建2.1.4)的问题。
为解决这个问题,我按照@devsathish和@Kailash之前的答案中的一些说明进行操作。我遵循的步骤是:
1 - 使用touch ~/.vimrc
创建.vimrc文件
2 - 添加以下内容:
set nocompatible
set backspace=indent,eol,start
现在箭头键和删除/退格键按预期工作。我没有按照之前的一些答案中的建议更改我的$TERM
env变量。
我希望这可以帮助其他人解决同样的问题。
答案 4 :(得分:7)
我将iTerm2与spf13-vim一起使用,今天遇到同样的问题。
它是由删除插件vim-autoclose引起的。 This solution fixed it.
只需在.vimrc中添加以下行
即可if &term[:4] == "xterm" || &term[:5] == 'screen' || &term[:3] == 'rxvt'
inoremap <silent> <C-[>OC <RIGHT>
endif
答案 5 :(得分:6)
这通常是由错误的$ TERM环境变量引起的。不确定您的系统支持哪些,但您可以尝试使用“linux”或“vt320”:
导出TERM = linux
答案 6 :(得分:4)
为了确保我的终端在Show Leopard中与Vim 7.3配合使用,我做了以下工作:
export PATH=/usr/local/bin:$PATH
export TERM=linux
添加到我的.bashrc
文件中。.vimrc
文件(以前链接在这里,链接已经死了。)一旦完成,一切都应该有效。但是,我经历过一些文字似乎没有被移除,就像它受到保护一样,直到我dd
或x
。有没有人经历类似的事情?另外,请在上面的小指南上分享评论。
答案 7 :(得分:3)
以上都不适合我。使用vim -u NONE -U NONE -N
在空白状态下运行vim使其工作正常,并且由于我没有安装任何插件,我知道问题出在我的vimrc中。所以我开始评论它的部分,一时间问题就消失了。
罪魁祸首是这条线: inoremap
尽管在一个写得很好的课程(http://learnvimscriptthehardway.stevelosh.com/chapters/10.html)中推荐它,但它打破了Mac OS X 10.10上的箭头键。基本上,你不应该覆盖esc,正如另一个SO答案所解释的那样:How to disable Esc and cursor keys in vim
答案 8 :(得分:2)
这对我有用(基于上面@Phoenix的初步解决方案)
imap ^[OA <ESC>kli
imap ^[OB <ESC>jli
imap ^[OC <ESC>lli
imap ^[OD <ESC>hli
每个
^ [
键入序列按ctrl-v,然后按ESC
答案 9 :(得分:2)
我在.vimrc文件中使用了以下代码,它解决了箭头键的问题。
...
...
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
...
...
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse=a
endif
...
...
我已发布完整的.vimrc
文件Here。希望它有所帮助!
答案 10 :(得分:1)
我和另一个插件有类似的问题。我通过在脚本本身硬编码这些替代映射来解决它,每对的第一行是有问题的,第二行是修复:
VIM::command "#{map} <Right> :call <SID>#{prefix}KeyPressed(9)<CR>"
VIM::command "#{map} ^[OC :call <SID>#{prefix}KeyPressed(9)<CR>"
VIM::command "#{map} <Left> :call <SID>#{prefix}KeyPressed(23)<CR>"
VIM::command "#{map} ^[OD :call <SID>#{prefix}KeyPressed(23)<CR>"
VIM::command "#{map} <Down> :call <SID>#{prefix}KeyPressed(14)<CR>"
VIM::command "#{map} ^[OB :call <SID>#{prefix}KeyPressed(14)<CR>"
VIM::command "#{map} <Up> :call <SID>#{prefix}KeyPressed(16)<CR>"
VIM::command "#{map} ^[OA :call <SID>#{prefix}KeyPressed(16)<CR>"
^[
是通过点击<C-v><Esc>
获得的。
也许你可以尝试类似的东西:
map <Right> ^[OC
答案 11 :(得分:1)
我通过从set noesckeys
移除~/.vimrc
答案 12 :(得分:0)
我也遇到过这个问题。它有多种原因,但其中一个原因是vim使用vi而不是默认的vim行为。令人惊讶的是,这可以通过vimrc文件的位置触发。
例如,如果从主目录中删除.vimrc并将内容移动到系统范围的vimrc文件,则vim将开始使用vi默认值。使用Mac终端,这将在插入模式下从箭头给你ABCD。将“set nocompatible”添加到系统范围的vimrc,这将强制vim使用vim默认值,箭头将再次起作用。