我在vim中经常使用a"运动;例如重构一段代码以用变量名替换硬编码参数时使用ca"。这种方法的问题在于,如果没有尾随空白,则a"包含前导空白:


包括任何尾随空白,除非没有尾随空白,否则包括前导空白。 br />

因此,当我像这样编辑函数调用时:

是因为replacedArg删除了它。 />
注意事项:




ca"会执行我想要的操作,只要字符串不包含任何转义的引号,但要求我将光标放在字符串的开头。我想在字符串中的任何地方都可以使用某些东西,而ca"的输入方式很尴尬。至少要进行四次额外的击键(cf")并破坏我的注意力。因此,替换命令的长度并不重要,只要它仅删除给定字符之间的文本,然后进入插入模式即可。


评论

可以使用F“代替使用?” 在行上向后搜索引号。 F与f相同,但向左搜索。下面的答案对于您的问题看起来更好,但是F本身就是一个有用的命令。

#1 楼

从https://superuser.com/questions/537453/vim-copy-quoted-string-without-whitespace:使用2i"而不是a"。另请参阅:help i'

评论


奇迹般有效!我选择接受这个答案,是因为它可以在不依赖插件的情况下与普通vim一起使用。

–l4mpi
17年4月4日在13:54

#2 楼

在Wellle的target.vim插件中有。要引用相关部分(在“ A Quote”部分中):
a' a" a



选择报价。


这会覆盖Vim的默认文本对象以支持查找。


与Vim的引用文本对象不同,它不包含周围的空格。 />

评论


看起来此插件会覆盖“”,并使用“ A”表示原始行为?

–马丁·图尔诺伊(Martin Tournoij)
2015年7月2日,12:53



...同时,我相信,也允许寻求“向左”

– VanLaser
15年7月2日在12:56

#3 楼

或者,您可以使用参数/参数文本对象。现在Vim没有本机参数文本对象,但是有一些插件可以执行:



argumentative.vim(我写了这个)
.vim
vim-angry
targets.vim
argtextobj.vim
parameter_objects.vim
可能更多


我个人使用我自己的插件,arativeative.vim,但是我听说过sideways.vim和targets.vim都很好。