我在Windows 8(64位)上使用Cygwin 1.7.22(32位).在Cygwin中,我使用的是Vim 7.3.1152,这是默认版本.
看起来像bug的行为:
当我按下I进入插入模式时,它没有-- INSERT --在左下角说.事实上,它没有说什么.但它确实表现正常.
当我Backspace在插入模式下删除字母时,字母不会消失,但光标会向左移动.
当我在插入模式下使用箭头键时,它输入字母A,B,C和D,而不是移动光标.箭头键在插入模式之外正常工作.
如何让Vim像我期望的那样表现?
FDi*_*off 23
创建一个~/.vimrc包含以下内容的文件,将vim置于nocompatible模式(实际上仅存在该文件就足够了.)
set nocompatible
Run Code Online (Sandbox Code Playgroud)
您所看到的行为是vi习惯的行为方式.这些都不是错误.
看一眼 :h nocompatible
在vim兼容模式下,尝试尽可能地模拟vi.
--insert-- 不是vi的一部分,所以它不以兼容模式显示.^[逃避吧.^[OA在我的电脑上它可能与你的相似.vim将此视为转义(返回正常模式),O(在当前模式上方添加一行)和A,即您在屏幕上看到的A. 这只是意味着兼容模式下的vim不能正确解释转义字符.很可能因为vi没有解释它们(也没有设计使用它们).set nocompatible 解决问题1和3.
我认为set backspace=indent,eol,start应该解决问题2.
这是几个月前提出的问题,但我正在回答其他遇到此问题的人以供将来参考。
我只是被这个问题咬了一口。这篇文章和本论坛的其他文章(更不用说其他论坛的文章)中列出的所有建议都不起作用,至少对我们中的一些人来说是这样。我终于弄清楚了真正的问题。
cygwin 上的 vim,无论出于何种原因(至少对我来说是这种情况)不使用您放在目录中的 .vimrc。假设您将示例复制到您的工作目录,或者从网上复制一些 .vimrc。或者,您可能从头开始创建一个新的,然后将这里和其他地方的好人推荐的所有设置都放在一起(设置退格键 = blahblah,设置不兼容,设置这个,设置那个)。它不起作用。为什么?因为无论出于何种原因(至少在我的情况下)vim 都没有查看您刚刚创建的 .vimrc。
解决方案是强制 vim 使用特定的 .vimrc,方法是在命令行上传入 -u,如下所示:
vim -u [/INSERT/PATH/TO/.vimrc]
Run Code Online (Sandbox Code Playgroud)
出于对所有神圣事物的热爱,请勿逐字输入方括号或“/INSERT/PATH/TO/.vimrc”字样。请用你的大脑。
无论如何,这解决了我的问题,我能够使用默认示例 .vimrc 并在插入模式下获得正确的删除和退格行为,更不用说其他好东西了。
您可能希望在 .bashrc 中为 vim 命令添加别名,如下所示:
alias vim='vim -u [/INSERT/PATH/TO/.vimrc]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6867 次 |
| 最近记录: |