3

我正在使用插件vim-surround,它将 ds( 映射到“删除周围的括号”,例如将 (Hello) 转换为 Hello。我想映射一个命令以删除函数应用程序,例如将 foo(bar) 转换为 bar。

我试过

nmap <Leader>df bdt(ds(

到单词的开头,删除到第一个(,然后删除周围的括号。但是,当我使用它时,它只删除到括号,并没有做括号本身的后续删除.我尝试在初始部分之后放置其他编辑命令,并且有效。所以

nmap <Leader>df bdt(x

按预期工作。

同样,我试着做

nmap <Leader>s ds(

这也有效!

其他不起作用的事情:

nmap <Leader>df bdt(<bar>ds(

有谁知道我怎样才能使这项工作?

4

2 回答 2

2

我会建议一个更简单的映射,如下所示。

nmap <silent> dsf ds)db

这将删除“周围”功能应用程序,因此光标需要位于括号内或括号内。

于 2012-11-20T03:59:38.770 回答
0

另一个,假设光标在括号中的某处:

nnoremap <leader>df yi(B"_df)p
  • yanki括号内的内容
  • 跳到B起点function
  • d删除黑洞寄存器中的整个函数调用
  • put 之前拉出的文本
于 2012-11-20T07:38:03.770 回答