2012-07-24 17 views
82

Decir que tengo esta línea de código:Como reemplazar el texto entre comillas en vi

$query = "SELECT * FROM table"; 

¿Hay un comando en el vi/vim que puede eliminar al instante todo lo que entre comillas y posicionar el cursor entre ellos de modo que pueda empezar a escribir?

Respuesta

127

Use ci", lo que significa: cambie lo que está dentro de las comillas dobles.

También puede manipular otros objetos de texto de una manera similar, por ejemplo:

  • ci' - el cambio dentro de las comillas simples
  • ciw - cambio dentro de una palabra
  • ci( - cambiar dentro de paréntesis,
  • dit - eliminar dentro de una etiqueta HTML, etc.

Más sobre los diferentes objetos de texto vim here.

+4

y un puntero a ':.. motion.txt' ayuda para una buena medida – romainl

+0

Parece que solo funciona con 'vim', pero NO' vi'. (No estoy seguro) –

+0

Para mí esto solo funciona en la línea actual, no en ninguna parte del documento. –

3

Desde ya dentro de las comillas que puede hacer

di" 

leerlo como eliminar el interior "

+5

No es necesario que el cursor esté dentro de la secuencia de comillas dobles, ya que el comando cambia por defecto la primera de tales cadenas en línea –

+1

Gracias, es muy bueno saberlo. Solo sirve para mostrar que debería leer las cosas con más cuidado :) –

19

Puede seleccionar entre comillas y luego borrar (d), cambio (c) etc., utilizando

vi" 

De forma similar, puede sustituir llaves, soportes, elementos XML, etc. por lo tanto:

vi(
vi{ 
vit 

o simplemente para cambiar/borrar, hacer lo que corresponde di", ci" etc. Sustituyendo a para i se abarca los elementos que lo rodean (por lo que marca o cambiar los soportes y contenidos, por ejemplo)

3

I ha hecho un complemento vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

Proporciona objetos de texto para los pares más cercanos de citas de cualquier tipo y admite citas que abarcan varias líneas. Usando solo iq o aq le permite operar en el contenido de comillas simples ('), dobles (") o atrás (`) que actualmente rodean el cursor, están delante del cursor o detrás (en el orden de preferencia). En otras palabras, salta hacia delante o hacia atrás cuando es necesario para alcanzar las comillas.

Es más fácil de entender para mirar ejemplos (el cursor se muestra con |):

  1. Antes: foo '1, |2, 3' bar; después de presionar diq: foo '|' bar
  2. Antes: foo| '1, 2, 3' bar; después de presionar diq: foo '|' bar
  3. Antes: foo '1, 2, 3' |bar; después de presionar diq: foo '|' bar
  4. Antes: foo '1, |2, 3' bar; después de presionar daq: foo | bar
  5. Antes: foo| '1, 2, 3' bar; después de presionar daq: foo | bar
  6. Antes: foo '1, 2, 3' |bar; después de pulsar daq: foo | bar

Los ejemplos anteriores se dan para comillas simples, el plugin funciona exactamente de la misma manera para (`) entre comillas dobles (") y de vuelta

También se puede utilizar cualquier otro operador. : ciq, diq, yiq, viq, etc.

por favor, echar un vistazo a la página de gitHub vinculado anteriormente para más detalles

+1

genial, útil +1 – Nikola

Cuestiones relacionadas