如何使用VIM删除包含空格字符的单词组,但是在编写脚本时是否需要访问标准分组?具体来说,当您将光标放在以下文本的某些部分上时,如何从下面删除help="initialize, lines, h2, derivs, tt, history",
。也许需要创建特定的映射。但另一方面,如果您使用VIM编辑脚本程序,想要访问这样的文本似乎很自然。
parser = argparse.ArgumentParser()
parser.add_argument("task", help="initialize, lines, h2, derivs, tt, history", default='yes')
答案 0 :(得分:1)
如果您在要删除的"
内,我会使用:
d 我 “ d 我 w ^
如果你高于help=
,我会使用类似的东西:
d / d 电子 ˚F 输入
删除所有内容,直到遇到default
,然后是几个 x 和左移动,以删除剩余的字符。
我真的不认为需要新的映射,但您的体验可能会有所不同。
答案 1 :(得分:1)
Vim内置了各种文本对象,例如da"
删除引用的文字(包括引号; di"
保留引号)。有关详细信息,请参阅:help text-objects
。
有一些插件,例如textobj-user - Support for user-defined text objects和我自己的CountJump plugin,可以轻松定义自己的“特殊”文本对象。此外,您会在vim.org上找到许多此类文字对象。根据您的示例,argtextobj.vim - Text-object like motion for arguments可能正是您所需要的。
答案 2 :(得分:1)
从Vim的角度来看,根据其设计目标,有意义的是提供小而通用的元素和一些规则来组合它们以实现更高级别的任务。我会说,它有很多文本对象和动作,但我们总是必须重复特定于域的任务,这正是Vim的可扩展性发挥作用的地方。用户和插件作者填补了自定义映射/对象/函数和插件的空白。
例如,记录一个宏并将其映射以供以后重用是相当容易的。或者创建一个快速而又脏的自定义文本对象...
以下代码段应与您的样本一起使用。
xnoremap aa /\v["'][,)]/e<CR>o?\v\s+\w+\=<CR>
onoremap aa :normal vaa<CR>
有了它,您可以在 参数中的任何位置执行daa
,caa
,yaa
和vaa
。
显然,这个解决方案是非常具体的,并且使它更通用,肯定会有更多的想法,但已经有相对聪明的解决方案,如Ingo的回答。