Vim 如何将命令映射到多个编辑
我正在使用插件,它将ds映射为“删除周围的括号”,例如将(Hello)转换为Hello。我想映射一个命令来删除函数应用程序,例如将foo(bar)转换为bar 我试过了Vim 如何将命令映射到多个编辑,vim,Vim,我正在使用插件,它将ds映射为“删除周围的括号”,例如将(Hello)转换为Hello。我想映射一个命令来删除函数应用程序,例如将foo(bar)转换为bar 我试过了 nmap <Leader>df bdt(ds( nmap-df-bdt(ds( 要转到单词的开头,请删除第一个(,然后删除周围的括号。但是,当我使用它时,它只删除括号,而不删除括号本身。我尝试在最初的部分之后放置其他编辑命令,这是有效的。所以 nmap <Leader>df bdt(x nmap-d
nmap <Leader>df bdt(ds(
nmap-df-bdt(ds(
要转到单词的开头,请删除第一个(,然后删除周围的括号。但是,当我使用它时,它只删除括号,而不删除括号本身。我尝试在最初的部分之后放置其他编辑命令,这是有效的。所以
nmap <Leader>df bdt(x
nmap-df-bdt(x
一切正常
同样地,我也试着去做
nmap <Leader>s ds(
nmap-s-ds(
这也行
其他不起作用的事情:
nmap <Leader>df bdt(<bar>ds(
nmap-df-bdt(ds(
有人知道我是如何做到这一点的吗?我建议使用一种更简单的映射,如下所示
nmap <silent> dsf ds)db
nmap-dsf-ds)db
这将删除“环绕”函数应用程序,因此光标需要位于括号内或括号内。另一个,假设光标位于括号中的某个位置:
nnoremap <leader>df yi(B"_df)p
nnoremap-df-yi(B”\u-df)p
ank什么是y
n括号内i
- 跳转到
开始执行B
功能
在黑洞寄存器中删除整个函数调用d
ut先前拖动的文本p
bdt(ds)
使其工作。但不太清楚为什么。b
移回函数的开头,因此在foo(bar)
中的f
将使(
光标在上(
和ds)
将删除周围的括号。我们两个映射之间的主要区别在于映射光标必须位于函数名或(
)上。