Vim 如何在vi中替换引号之间的文本
假设我有这行代码:Vim 如何在vi中替换引号之间的文本,vim,vi,Vim,Vi,假设我有这行代码: $query = "SELECT * FROM table"; vi/vim中是否有一个命令可以立即删除引号之间的所有内容,并将光标放在引号之间,以便我可以开始键入?使用ci“,这意味着:更改双引号内的内容 您还可以以类似的方式操纵其他文本对象,例如: ci'-单引号内的更改 ciw-在单词内部进行更改 ci(-更改括号内的内容 dit-删除HTML标记内的内容等 更多关于不同vim文本对象的信息。在引号内,您可以执行以下操作 di" 在“中读为delete,您可以在
$query = "SELECT * FROM table";
vi/vim中是否有一个命令可以立即删除引号之间的所有内容,并将光标放在引号之间,以便我可以开始键入?使用ci“
,这意味着:更改双引号内的内容
您还可以以类似的方式操纵其他文本对象,例如:
-单引号内的更改ci'
-在单词内部进行更改ciw
-更改括号内的内容ci(
-删除HTML标记内的内容等dit
更多关于不同vim文本对象的信息。在引号内,您可以执行以下操作
di"
在“中读为delete,您可以在引号之间选择,然后使用删除(
d
)、更改(c
)等
vi"
同样,您可以替换大括号、方括号、XML元素等。因此:
vi(
vi{
vit
或者简单地更改/删除,执行相应的
di“
,ci”
等。用a
替换i
将包含周围的元素(例如,您可以标记或更改括号和内容)我制作了一个插件vim textobj quotes
:
它为任何类型的最接近的引号对提供文本对象,并支持跨多行的引号。仅使用iq
或aq
它允许您对当前围绕光标的单(')、双(“)或后(`)引号的内容进行操作,这些引号位于光标前面或后面(按照优先顺序)。换句话说,当需要到达引号时,它向前或向后跳跃
通过查看示例更容易理解(光标显示为|
):
foo'1、| 2、3'条
;按diq
后:foo'条
foo |'1,2,3'条形图
;按diq
后:foo |'条形图
foo'1,2,3'| bar
;按diq
后:foo'| bar
foo'1、| 2、3'条
;按daq
后:foo'bar
foo |'1,2,3'条形图
;按daq
后:foo |条形图
foo'1,2,3'| bar
;按daq
后:foo'bar
ciq
、diq
、yiq
、viq
等
请查看上面链接的github页面以了解更多详细信息。除了Brian的答案之外,您还可以
p
(粘贴)和y
(yank)新值,因此如果您想用另一个值替换引号内的值,您可以对要复制的选择执行yi”
选择要替换的区域,然后只p
正确替换值。选择的答案仅适用于ViM,而不适用于vi。问题也不准确,因为作者没有提到光标的初始位置。如果我们假设光标位于双引号内,则对于vi,答案将是:
T"ct"
其中:
T“-在“字符”后面向后移动
c-更改命令
t“-为c命令提供结束位置,在该位置它应该停止擦除字符,换句话说,要更改的范围光标不需要位于双引号字符串内,因为命令默认为更改行中的第一个这样的字符串。谢谢,这很好!这表明我应该更仔细地阅读内容。:)似乎只使用
vim
,但不使用vi
(不确定)对我来说,这只在当前行上有效,而不在文档中的任何位置。然后什么命令会向后执行此操作?这是如果您想替换光标后面引号内的文本。@dtburges:一种方法是F“ci”
。ci'和ci“工作正常,但ci”(对我不起作用。有人知道为什么吗?