Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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中创建一个新的op pending命令吗?_Vim - Fatal编程技术网

我们可以在Vim中创建一个新的op pending命令吗?

我们可以在Vim中创建一个新的op pending命令吗?,vim,Vim,有人知道是否可以创建一个新的op挂起命令吗 e、 g.我想用,cf()替换一个序列,例如vf(rw。具体来说,这里的想法是“清除”从光标位置到下一个大括号(包括下一个大括号)的文本,然后将光标放在下一个单词的开头 我可能只是在帮助文件中遗漏了一些东西(或者我的Google fu今天关闭了),所以如果能给我一个指向正确位置的指针,我将不胜感激。我想这就是你要找的。你想使用:set opfunc和g。文档非常好,:h g nnoremap <silent> ,c :set opfunc=

有人知道是否可以创建一个新的op挂起命令吗

e、 g.我想用
,cf(
)替换一个序列,例如
vf(rw
。具体来说,这里的想法是“清除”从光标位置到下一个大括号(包括下一个大括号)的文本,然后将光标放在下一个单词的开头


我可能只是在帮助文件中遗漏了一些东西(或者我的Google fu今天关闭了),所以如果能给我一个指向正确位置的指针,我将不胜感激。

我想这就是你要找的。

你想使用
:set opfunc
g
。文档非常好,
:h g

nnoremap <silent> ,c :set opfunc=Clearing<cr>g@
vnoremap <silent> ,c :<c-u>set opfunc=Clearing<cr>g@

function! Clearing(type, ...)
  let sel_save = &selection
  let &selection = "inclusive"
  let reg_save = @@

  if a:0  " Invoked from Visual mode, use '< and '> marks.
    silent exe "normal! `<" . a:type . "`>r "
  elseif a:type == 'line'
    silent exe "normal! '[V']r "
  elseif a:type == 'block'
    silent exe "normal! `[\<C-V>`]r "
  else
    silent exe "normal! `[v`]r "
  endif
  norm! `]w

  let &selection = sel_save
  let @@ = reg_save
endfunction
nnoremap,c:set opfunc=Clearingg@
vnoremap,c:set opfunc=Clearingg@
功能!清除(类型,…)
让选择保存=&选择
让&selection=“包含”
让注册表保存=@@
如果从可视模式调用:0”,请使用“<和”>标记。
静默exe“正常!`r”
elseif a:type=='line'
静默exe“正常!”[V']r
elseif a:type=='block'
静默exe“正常!`[\`]r”
其他的
静默exe“正常!`[v`]r”
恩迪夫
诺姆
让&selection=sel\u保存
让@@@reg\u保存
端功能

Hmm,什么是悬而未决的部分,运动?只是为了确认,如果使用
,cW
它将清除到下一个单词,然后将光标定位到下一个单词,对吗?是的,我/刚刚/发现…duh!:)非常高兴帮助你,Derek。我从Vim开始使用你的屏幕广播:-)顺便说一句,刚刚用一个特定的解决方案更新了答案。@peter的下面是一个更正确的解决方案,我认为我们应该让人们看看。它非常接近Vim帮助中的信息,我们都知道这非常棒…我就是找不到:)@Derek:Ouch,刚刚注意到peter发布了它。我应该刷新Stack Ov中的页面erflow更频繁;只是试图提供较小的可能解决方案…Peter应该得到这个正确的复选标记!我不同意。我们应该将人们指向标准点-Vim帮助!并不是说Peter的帮助没有得到感谢:)干杯。我太盲目了,看不到帮助。@Derek:很高兴帮助。谢谢你的屏幕广播。