说我有这行代码:
$query = "SELECT * FROM table";
Run Code Online (Sandbox Code Playgroud)
在vi/vim中是否有一个命令可以立即删除引号之间的所有内容并将光标放在它们之间以便我可以开始输入?
Bri*_*new 22
您可以在引号之间进行选择,然后使用删除(d),更改(c)等
vi"
Run Code Online (Sandbox Code Playgroud)
同样,您可以替换大括号,括号,XML元素等,从而:
vi(
vi{
vit
Run Code Online (Sandbox Code Playgroud)
或简单地改变/删除,执行对应di",ci"等等代a用于i将包围周围元件(这样就标记或改变支架和内容,例如)
除了布莱恩的答案之外,您还可以p(粘贴)和y(猛拉)新值,因此如果您想将引号内的值替换为另一个值,您可以yi"在要复制的选择上执行操作,vi"以选择区域您想要替换的内容,然后p正确替换该值。
我做了一个插件vim-textobj-quotes:https : //github.com/beloglazov/vim-textobj-quotes
它为任何类型的最接近的引号对提供文本对象,并支持跨越多行的引号。仅使用iq或使用aq它,您可以对当前围绕光标的单引号('),双引号(“)或反引号(`)的内容进行操作,它们位于光标的前面或后面(按优先顺序排列)换句话说,当需要到达引号时,它会向前或向后跳转。
通过查看示例更容易理解(光标显示为|):
foo '1, |2, 3' bar; 按下后diq:foo '|' barfoo| '1, 2, 3' bar; 按下后diq:foo '|' barfoo '1, 2, 3' |bar; 按下后diq:foo '|' barfoo '1, |2, 3' bar; 按下后daq:foo | barfoo| '1, 2, 3' bar; 按下后daq:foo | barfoo '1, 2, 3' |bar; 按下后daq:foo | bar上面的示例给出了单引号,该插件对双引号(“)和反引号(`)的使用方式完全相同。
您也可以使用任何其他运营商:ciq,diq,yiq,viq,等。
请查看上面链接的github页面以获取更多详细信息。