Vim中的CTRL-K产生意外结果

时间:2012-01-04 14:22:20

标签: vim

您好我正在尝试通过将 ctrl k 映射到 ctrl + w ,k所以我可以按 ctrl + k 切换到我正在工作的那个上方的分割窗口(我正在为h,j和l但也只是k导致了这个问题。)

我已将此添加到我的.vimrc

noremap <silent> <c-k> <C-W>k                                                                                                                
noremap <silent> <c-j> <C-W>j                                                                                                      
noremap <silent> <c-h> <C-W>h                                                                                                      
noremap <silent> <c-l> <C-W>l

但是,如果按 ctrl + k ,那么会发生奇怪的事情。它会根据我在文档中的位置而改变。

  • 如果我位于文档的顶部,在我的光标下面有许多行,光标会向下跳几行和一列到一个完全不同的位置。
  • 如果我在文档的底部,它会从光标向前创建大量空格。

我已经测试并删除上述行导致症状停止发生。我真的很困惑发生了什么!

一些信息:我正在通过命令行使用macvim附带的vim二进制文件。

非常感谢任何帮助!

谢谢!

3 个答案:

答案 0 :(得分:4)

我无法解释第二个问题,但是如果你直接从vimrc粘贴了所有东西,那么你就有很多不能存在的尾随空格。它可以解释第一个问题。尝试运行

:%sm/\s\+$

然后保存并查看问题是否消失。如果是这样,请使用

:set list listchars=trail:-

能够看到尾随空格,这样您就不会再遇到这个问题了。

答案 1 :(得分:2)

可能<C-k>已映射到其他内容。试试:verbose map <C-k>

答案 2 :(得分:0)

也许您的映射是在视觉或操作员映射中触发的,其中<c-w>k具有不同的含义。

你可以试试这个:

nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-H> <C-W>h
nnoremap <C-L> <C-W>l

,仅在正常模式下触发。