如何在vi中用引号replace文本
说我有这样的代码行:
$query = "SELECT * FROM table";
在vi / vim中有一个命令可以立即删除引号之间的所有内容,并将光标放在它们之间,这样我就可以开始input了?
使用ci"
,这意味着:改变双引号内的内容。
您也可以用类似的方式操作其他文本对象,例如:
-
ci'
– 在单引号内改变 -
ciw
– 在一个词里面改变 -
ci(
– 括号内的变化 -
dit
– 在HTML标签内删除等
更多关于这里不同的vim文本对象。
您可以在引号之间进行select,然后使用删除( d
),更改( c
)等
vi"
同样,你可以用大括号,括号,XML元素等代替:
vi( vi{ vit
或简单地改变/删除,做相应的di"
, ci"
等。用a
代替i
将包含周围的元素(例如,标记或改变括号和内容)
从里面已经可以做报价
di"
把它看作删除里面的“
我做了一个插件vim-textobj-quotes
: https : //github.com/beloglazov/vim-textobj-quotes
它为任何types的最接近的引号对提供文本对象,并支持多行引用。 只使用iq
或aq
它允许你操作当前围绕游标的单引号('),双引号(“)或后退引号(')的内容,位于游标前面或后面(按照偏好),换句话说,当需要达到报价时,它向前或向后跳转。
通过查看示例更容易理解(光标显示为|
):
- 之前:
foo '1, |2, 3' bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo| '1, 2, 3' bar
foo| '1, 2, 3' bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo '1, 2, 3' |bar
; 按下diq
:foo '|' bar
foo '|' bar
- 之前:
foo '1, |2, 3' bar
; 在按下daq
:foo | bar
foo | bar
- 之前:
foo| '1, 2, 3' bar
foo| '1, 2, 3' bar
; 在按下daq
:foo | bar
foo | bar
- 之前:
foo '1, 2, 3' |bar
; 在按下daq
:foo | bar
foo | bar
上面的例子是针对单引号给出的,这个插件对于double(“)和back(”)引用的工作方式完全一样。
您也可以使用任何其他操作符: ciq
, diq
, yiq
, viq
等
请看上面链接的github页面以获取更多细节。