vim中“O”命令的奇怪行为

时间:2015-01-08 04:39:25

标签: vim

当我按下O时,vim编辑器打印字符" O",并且仅在1秒后它擦除字符并运行命令(在当前行上方打开一个空行,并切换到插入模式)。

" o"命令工作正常。

为什么会这样?

PS:下面是我的.vimrc:

colorscheme default
set nocompatible ai sw=4 smarttab smartcase ignorecase showcmd noshowmatch
set guifont=Monospace\ Bold\ 11
map <BS> X
sy on

" Encoding selection - read file
set wildmenu
set wcm=<TAB>
menu Encoding.koi8-r :e ++enc=koi8-r<CR>
menu Encoding.windows-1251 :e ++enc=cp1251<CR>
menu Encoding.ibm-866 :e ++enc=cp866<CR>
menu Encoding.utf-8 :e ++enc=utf-8<CR>
map <F8> :emenu Encoding.<TAB>

" Encoding selection - save file
set wildmenu
set wcm=<Tab>
menu Encoding.Write.koi8-r :set fenc=koi8-r<CR>
menu Encoding.Write.windows-1251 :set fenc=cp1251<CR>
menu Encoding.Write.cp866 :set fenc=cp866<CR>
menu Encoding.Write.utf-8 :set fenc=utf8<CR>
map <S-F8> :emenu Encoding.Write.<TAB>

2 个答案:

答案 0 :(得分:1)

由于vim处理箭头键的方式,这是副作用。箭头键作为转义序列发送到vim,然后是O,然后是ABCD

如果您手动键入以下任何内容,您将看到vim将光标移动到相应的方向。

  • <esc>OA移动<up>
  • <esc>OB移动<down>
  • <esc>OC移动<right>
  • <esc>OD移动<left>

如果你只是继续输入效果应该可以忽略不计。


如果您处于兼容模式(获取vim -u NONE的一种方式),您只会看到ABCD每次按下其中一个箭头键时都会换行。

答案 1 :(得分:0)

尝试检查

:verbose map o

:verbose nmap o

这应该为您提供以&#34; o&#34;开头的所有相关映射。

修改当出现这种尴尬行为时,您应该检查mapnmap,因为您处于正常模式。检查imap不会有帮助,因为它只显示在插入模式下应用的映射(您不是)。