Vimscript运算符挂起的映射产生;尾随字符“;错误

Vimscript运算符挂起的映射产生;尾随字符“;错误,vim,Vim,我试图重现Steve Losh的《艰苦学习Vimscript》(Learn Vimscript the Hard Way)()第15章中名为“改变起点”的部分中的示例 首先,我使用以下命令启动vim: vim -u NONE foo 以确保没有加载插件。 接下来我打字 print foo(bar) 在缓冲区中,然后输入 :onoremap in( :<c-u>normal! f(vi(<cr> 最后有一个闪烁的光标。我按enter键,然后状态行显示: :<c-

我试图重现Steve Losh的《艰苦学习Vimscript》(Learn Vimscript the Hard Way)()第15章中名为“改变起点”的部分中的示例

首先,我使用以下命令启动vim:

vim -u NONE foo
以确保没有加载插件。 接下来我打字

print foo(bar)
在缓冲区中,然后输入

:onoremap in( :<c-u>normal! f(vi(<cr>
最后有一个闪烁的光标。我按enter键,然后状态行显示:

:<c-u>normal! f(vi(<cr>
E488: Trailing characters
根据这本书,预期的结果是vim将删除括号的内容,并将您置于插入模式

以下是版本信息:

VIM - Vi IMproved 8.0 (2016 Sep 12, compiled May  2 2017 03:55:34)
MacOS X (unix) version
Included patches: 1-596
Compiled by Homebrew

TL;DR:改用
vim-u默认值foo

这将使Vim保持在
'nocompatible'
模式,这是在映射中识别
代码所必需的


您描述的症状与患者的症状一致,记录如下:


在映射、缩写和菜单命令的“to”部分中,禁用对
表单中特殊键代码的识别。例如,命令
:map X
会导致
X
被映射到“
”(5个字符),而
是否确实按照键入的方式运行所有操作?当我试着这样做时,效果非常好。是
控制字符(即
^U
^M
)还是文字?我刚刚浏览了一遍,并再次复制了它。我刚刚用vim的版本信息更新了我的回复。这可能有点关系。对我来说也很有用,Vim 8.1.443。