我正在尝试加载准系统vim。所以我定义了~/.slimvimrc
,其中包含以下内容
syntax on
map q :q <cr>
然后我使用vim -u ~/.slimvimrc
加载vim。当我按q
时,由于上面的映射,我希望vim关闭。然而,vim只是坐着#39;在命令行上打印q<CR>
并等待输入。
但是,如果我将nocp
设置添加到上述vimrc
:
syntax on
set nocp
map q :q <cr>
映射工作正常。我查看了nocp
的文档,但无法找到它与<CR>
的关系。你能指出我正确的地方吗?
答案 0 :(得分:0)
您的映射无法在“兼容模式”下运行,因为<
无法识别为启动密钥代码。
您的~/.slimvimrc
应如下所示:
set nocompatible
syntax on
nnoremap q :q<CR>
请注意nnoremap
的特殊性:
n
表示“正常模式”,nore
表示“非递归”,以及:q
和<CR>
之间删除的空格。
无论如何,q<char>
用于在注册<char>
中开始录制。这个功能太棒了!用自定义映射覆盖它并不是一个好主意。
此外,您可以使用-N
参数调用Vim来强制'nocompatible'
:
$ vim -N -u ~/.slimvimrc
答案 1 :(得分:0)
原因是在vi兼容模式下,Vim不解析像<CR>
这样的特殊键;这由'cpoptions'
设置控制,特别是:help cpo-k
和:help cpo-<
。
为什么Vim处于vi兼容模式?通常,当找到'nocompatible'
时,Vim会设置~/.vimrc
,但您使用-u
会将其关闭。来自:help 'compatible'
:
当Vim启动时找到vimrc或gvimrc文件时, 此选项已关闭,所有选项均未关闭 modified将设置为Vim默认值。实际上,这意味着 当存在vimrc或gvimrc文件时,Vim将使用Vim 默认值,否则它将使用Vi默认值。 (注意:这不是 发生表示系统范围的vimrc或gvimrc文件,表示给定的文件 使用-u参数)。
解决方案是在set nocompatible
的顶部明确~/.slimvimrc
,或在-N
之外传递-u
。