如何在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的最接近的引号对提供文本对象,并支持多行引用。 只使用iqaq它允许你操作当前围绕游标的单引号('),双引号(“)或后退引号(')的内容,位于游标前面或后面(按照偏好),换句话说,当需要达到报价时,它向前或向后跳转。

通过查看示例更容易理解(光标显示为| ):

  1. 之前: foo '1, |2, 3' bar ; 按下diqfoo '|' bar foo '|' bar
  2. 之前: foo| '1, 2, 3' bar foo| '1, 2, 3' bar ; 按下diqfoo '|' bar foo '|' bar
  3. 之前: foo '1, 2, 3' |bar ; 按下diqfoo '|' bar foo '|' bar
  4. 之前: foo '1, |2, 3' bar ; 在按下daqfoo | bar foo | bar
  5. 之前: foo| '1, 2, 3' bar foo| '1, 2, 3' bar ; 在按下daqfoo | bar foo | bar
  6. 之前: foo '1, 2, 3' |bar ; 在按下daqfoo | bar foo | bar

上面的例子是针对单引号给出的,这个插件对于double(“)和back(”)引用的工作方式完全一样。

您也可以使用任何其他操作符: ciqdiqyiqviq

请看上面链接的github页面以获取更多细节。