Vim映射删除括号内的文本

Vim映射删除括号内的文本,vim,Vim,我创建了一个映射来删除括号内的文本,即使光标在括号外。这是地图: nnoremap di( f(,di( 我用以下代码测试它: int main(int argc,char**argv){ 仅当光标位于()之前时,地图才起作用。如果我将光标放在(之后,则不会删除任何内容。为什么地图不起作用 请注意,请尝试f(,di)(而不定义任何映射,它可以工作(无论光标的初始位置如何,它都会删除括号内的文本)。仅当我映射到di时(它不起作用。我在上发现了一个类似的问题。由于:help map error中

我创建了一个映射来删除括号内的文本,即使光标在括号外。这是地图:

nnoremap di( f(,di(
我用以下代码测试它:

int main(int argc,char**argv){
仅当光标位于
)之前时,地图才起作用。如果我将光标放在
之后,则不会删除任何内容。为什么地图不起作用


请注意,请尝试
f(,di)(
而不定义任何映射,它可以工作(无论光标的初始位置如何,它都会删除括号内的文本)。仅当我映射到
di时(
它不起作用。

我在上发现了一个类似的问题。由于
:help map error
中记录的行为,映射不起作用。解决方案是使用
:silent!
防止映射因错误而中止。映射的工作版本是:

nnoremap <silent> di( :silent! normal! f(,di(<cr>
nnoremap di(:静默!正常!f(,di(

如果您键入
f(,di)(
而没有映射,它会工作吗?如果我键入
f(,di)(
而没有映射,它会工作(它会删除括号内的文本,不管光标的初始位置如何)。但是当我将它映射到
di(