2010-07-10 23 views

Respuesta

56

En vim, puede hacerlo

:%s/^\(.*\)$/"\1"/ 
  • s/regex/replace/ es comando vim para la búsqueda n reemplazar.
  • % hace que se aplica en todo el archivo
  • ^ y $ denota inicio y final de la línea, respectivamente.
  • (.*) captura todo en el medio. ( y ) necesita ser escapado en vim regexes.
  • \1 pone el contenido capturado entre dos citas.
+0

Gracias ... eso funcionó como una brisa! y gracias de nuevo por la muy buena explicación. – Myth

+4

@Myth Agregue una 'c' al final para que aparezca en cada línea: puede presionar y/n para reemplazar u omitir la línea':% s/^ \ (. * \) $/"\ 1"/c' – Amarghosh

+0

Eso es muy útil ... ¿me puede indicar algunos recursos buenos para aprender regx? Perdón por la diversión del tema principal. – Myth

2

mejor util sería sed (especialmente si necesita guión que)

cat foo.txt | sed s/^\(.*\)$/"\1"/g 
43

más simple:

%s/.*/"&"

Explicación: Por defecto, un patrón se interpreta como el mayor posible coincidencia, por lo que .* se interpreta como toda la línea, sin necesidad de ^ y $. Y si bien \( ... \) puede ser útil para seleccionar una parte de un patrón, no es necesario para todo el patrón, que se representa por & en la sustitución . Y el final / en una búsqueda o sustitución no es necesario a menos que algo más siga; aunque dejarlo fuera podría considerarse pereza. (Si es así, soy flojo.)

+3

Me gusta más que la marca real anwer, porque es simple y yo también soy perezoso :), ¿qué le parece dejar un comentario después de 5 años? – ahsant

+0

No es lo suficientemente flojo como para conocer los detalles de la expresión regular, muy agradecido de tomarse el tiempo para explicar este método . – shdobxr

3

Las dos respuestas que sugieren %s son perfectas, y espero que aprendas a amar %s y lo uses a menudo. Pero si desea rodear con frecuencia otros bloques de texto, se debe a usted mismo el surround.vim, que le permite hacer lo que usted solicitó con las siguientes cuatro teclas: yss" y otras otras útiles objetivos envolventes integrados. Por ejemplo, para rodear la palabra actual con comillas dobles: csw", y para cambiar las comillas simples entre comillas dobles: cs'".

surround.vim es uno de mis plugins de vim favoritos, y lo uso a diario.

+0

'yss" 'es en realidad cinco teclas, si cuenta el para la comilla doble. ;-) Todavía es mucho más rápido que escribir una expresión regular. –

Cuestiones relacionadas