如果我有文本:
var x = "Hello my name is Jim and I like ice-cream"
字符串
用v+i+就很简单了。
但是如果我的文本是:
var x = "Hello my name is "Jim" and I like ice-cream"
型
当我使用v+i+”时,Vim只会突出显示Hello my name is
。这是预期的行为。
如何选择完整句子Hello my name is "Jim" and I like ice-cream
中的所有内容?
3条答案
按热度按时间rta7y2nd1#
如何选择完整句子
Hello my name is "Jim" and I like ice-cream
中的所有内容?我会分三步来做:
1.诅咒同事(不可能是我,对吧?)忘记转义
Jim
周围的引号(以及各种各样的链接器和编译器等等,让那些垃圾通过)。1.添加缺少的反斜杠。
1.最后是
vi"
。基本原理:直引号不会嵌套,所以你使用的编程语言和Vim都不知道第二个
"
不会关闭第一个"
开始的字符串。“正确”字符串(YMMV)的示例:
字符串
ybzsozfc2#
您仍然可以使用
f
和t
分别跳转到包含或排除字符。在您的用例中,将光标定位在第一个引号上(如果还没有,请使用T"
或^f"
移动它),然后执行v3t"
以直观地选择外部引号中的所有内容。如果你不喜欢计数,你可以用
vt"lt"lt"lt"
或类似的方法来递增。参见
:help t
和:help f
。由于视觉模式本身不会编辑任何内容,因此可能存在非视觉替代方案。如果目标是更改或删除外部引号中的文本,您可以
:substitute
它并利用*
的贪婪性,如:字符串
如果您的目标是将文本粘贴到其他地方的引号中,我会尝试将整行内容拉出来并粘贴,然后在粘贴后删除引号和其他内容。
brgchamk3#
正如您所发现的,
vi"
不起作用。选择从第一个
"
到最后一个"
左边一个字符的所有内容,与光标在行上的位置无关。最好不计算任何内容。然后用
0f"lv$F"h
做同样的事情。这会将光标定位在行首,找到第一个
"
,向右移动一个,可视地选择到行尾,将选择范围缩小到最右边的"
,然后向左删除另一个字符。