Digamos que tengo esta línea de código:
$query = "SELECT * FROM table";
¿Hay un comando en vi / vim que pueda eliminar instantáneamente todo entre comillas y colocar el cursor entre ellas para que pueda comenzar a escribir?
Use ci"
, lo que significa: cambiar lo que hay dentro de las comillas dobles.
También puede manipular otros objetos de texto de manera similar, por ejemplo:
ci'
- cambiar dentro de las comillas simplesciw
- cambiar dentro de una palabra ci(
- cambiar entre paréntesisdit
- eliminar dentro de una etiqueta HTML, etc.Más sobre diferentes objetos de texto vim aquí .
vim
, pero NOvi
. (No estoy seguro)F"ci"
.Puede seleccionar entre comillas y luego borrar (
d
), cambiar (c
) etc. usandoDel mismo modo, puede sustituir llaves, corchetes, elementos XML, etc. así:
o simplemente cambiar / eliminar, hacer lo correspondiente
di"
,ci"
etc. Sustituira
pori
abarcará los elementos circundantes (por lo que marca o cambia los corchetes y el contenido, por ejemplo)fuente
Hice un complemento
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesProporciona objetos de texto para los pares más cercanos de citas de cualquier tipo y admite citas que abarcan varias líneas. Usar solo
iq
oaq
le permite operar en el contenido de comillas simples ('), dobles (") o posteriores (`) que actualmente rodean el cursor, están delante del cursor o detrás (en ese orden de preferencia) En otras palabras, salta hacia adelante o hacia atrás cuando es necesario para llegar a las comillas.Es más fácil de entender mirando ejemplos (el cursor se muestra con
|
):foo '1, |2, 3' bar
:; después de presionardiq
:foo '|' bar
foo| '1, 2, 3' bar
:; después de presionardiq
:foo '|' bar
foo '1, 2, 3' |bar
:; después de presionardiq
:foo '|' bar
foo '1, |2, 3' bar
:; después de presionardaq
:foo | bar
foo| '1, 2, 3' bar
:; después de presionardaq
:foo | bar
foo '1, 2, 3' |bar
:; después de presionardaq
:foo | bar
Los ejemplos anteriores se dan para comillas simples, el complemento funciona exactamente de la misma manera para comillas dobles (") y traseras (`).
También se puede utilizar cualquier otro operador:
ciq
,diq
,yiq
,viq
, etc.Por favor, eche un vistazo a la página de github vinculada arriba para obtener más detalles.
fuente
Desde ya dentro de las comillas puedes hacer
Léelo como borrar dentro "
fuente
Además de la respuesta de Brian, también puede
p
(pegar) yy
(tirar) el nuevo valor, por lo que si desea reemplazar el valor entre comillas con otro valor, puede haceryi"
en la selección que desea copiar,vi"
para seleccionar el área que desea reemplazar y luego simplementep
reemplazar correctamente el valor.fuente
La respuesta elegida es adecuada SOLO para ViM pero NO para vi. La pregunta también es inexacta porque el autor no mencionó cuál es la posición inicial del cursor. Si asumimos que el cursor está dentro de las comillas dobles, entonces para vi la respuesta será:
Dónde:
T ": retrocede justo después del carácter"
c - comando de cambio
t ": proporciona la posición final para el comando c, donde debería dejar de borrar caracteres, en otras palabras, el rango para cambiar
fuente