Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何将命令映射到多个编辑_Vim - Fatal编程技术网

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

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

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

我试过了

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
  • y
    ank什么是
    i
    n括号内
  • 跳转到
    B
    开始执行
    功能
  • d
    在黑洞寄存器中删除整个函数调用
  • p
    ut先前拖动的文本

谢谢,这是一个有用的映射,我可以报告,将我的另一个映射更改为
bdt(ds)
使其工作。但不太清楚为什么。
b
移回函数的开头,因此在
foo(bar)
中的
f
将使
光标在
上(
ds)
将删除周围的括号。我们两个映射之间的主要区别在于映射光标必须位于函数名或
)上。