如何将命令映射到多个编辑

时间:2012-11-20 01:46:50

标签: vim

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

我试过

nmap <Leader>df bdt(ds(

转到单词的开头,删除第一个(然后删除周围的括号。但是,当我使用它时,它只删除括号,并且不会删除括号本身。我已经尝试在初始部分之后放置其他编辑命令,这样就可以了。所以

nmap <Leader>df bdt(x

按预期工作。

同样,我试着做了

nmap <Leader>s ds(

这也有效!

其他不起作用的事情:

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

有谁知道如何才能使这项工作?

2 个答案:

答案 0 :(得分:2)

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

nmap <silent> dsf ds)db

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

答案 1 :(得分:0)

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

nnoremap <leader>df yi(B"_df)p
  • y ank i nside the parentheses
  • 跳转至B
  • function
  • d选择黑洞注册中的整个函数调用
  • p使用之前已被删除的文字