%键是vim的最佳功能之一:它可让您从{
跳到}
,[
到]
, 等等。
但是,默认情况下它不能使用引号:"
或'
,可能是因为开始和结束引号是相同的字符,使实现更加困难。
想一想这个问题,我确信它应该通过计算前面引号的数量是奇数还是偶数并相应地跳到上一个或下一个引号来实现。
在我尝试自己实施之前,我想知道某人是否已经拥有它?
答案 0 :(得分:75)
根据您需要的原因,可能有更好的方法来完成您正在寻找的东西。例如,如果您有以下代码:
foo(bar, "baz quux")
^
并且您的光标恰好位于^
,并且您希望使用其他内容替换引号内的所有内容,请使用ci"
。这使用Vim "text objects"更改(c
)引号(i
)内的所有内容("
),并将您置于插入模式,如下所示:
foo(bar, "")
^
然后您可以开始输入替换文本。还有许多其他文本对象对这种快捷方式非常有用。每周学习(并使用)一个新的Vim命令,您很快就会成为专家!
答案 1 :(得分:31)
Greg的回答非常有用,但我也喜欢'f'和'F'命令,它们将光标向前和向后移动到命令后按下的字符。
所以按f“移动到下一个”字符,然后按F“移动到前一个字符。
答案 2 :(得分:9)
我想扩展Greg's answer,并介绍surround.vim插件。
假设您想修改"
个字符,而不是编辑引号的内容。假设您想要从双引号更改为单引号。
foo(bar, "baz quux")
^
环绕声插件允许您将其更改为
foo(bar, 'baz quux')
^
只需执行以下命令:cs"'
(其内容为:“将周围的双引号更改为单引号”)。
您也可以通过运行以下来删除引号:ds"
(其中包含:“删除周围的双引号)。
答案 3 :(得分:6)
我知道这个问题已经过时但是这是一个使用%来匹配相应双引号的插件:
答案 4 :(得分:3)
我发现这种技术对于转到一个很长的带引号的字符串的开头/结尾非常有用。
vi"
或vi'
o
这实际上将光标放在开始/结束引号字符旁边,但仍然感觉非常有帮助。
在这里添加Stefan的优秀评论,对于可能会错过评论的人来说,这是一个更好的选择。
如果你使用va" (和va')然后它实际上也会在视觉上选择引号本身。
- Stefan van den Akker