2011-11-23 5 views
7

Últimamente he estado y anking y p emitiendo una gran cantidad de código que necesita ser alterado un poco (generalmente una simple sustitución). Puedo seleccionarlo manualmente después de pegarlo, o para bloques más largos, supongo que podría mirar el número de líneas pegadas (20 new lines) y usar 20:s..., pero dado que es vim, parece que debería haber una manera más fácil/más rápida de hacer esto.Vim alterar el texto como o inmediatamente después de haberlo puesto

¿Hay alguna manera de seleccionar o ejecutar una sustitución en el texto como está siendo p ut?

Respuesta

8

Inmediatamente después de la ejecución de la p, los [ y ] marcas se refiere a los números de inicio y final de línea de la región de pegado (se aplica durante y también). Consulte la ayuda para '[ y '] para obtener una explicación.

Por lo tanto, puede utilizar estas marcas para formar el rango en el que trabajar :s, como :'[,']s///. Esto funcionará en la región que acabamos de tirar o pegar. Claro, no es corto, pero si te importa puedes mapearlo. Tal vez algo así como nnoremap <Leader>p p:'[,']s/.

+1

Perfecto, gracias. Otro ejemplo de cómo todo lo que puedes imaginar, vim puede hacer. – Kevin

3

Chris Morgan ya ha publicado la mejor solución. Pero también puedes hacer algún tipo de manipulación directamente sobre el texto en el registro. El registro por defecto para el tirón es ", por lo que puede hacer algo como:

:let @" = substitute(@",'someword', 'somedifferentword','g') 

Luego pega el siguiente texto registro alterado. No es tan fácil para la manipulación relacionada con el contexto de línea en el texto de registro de varias líneas, ya que el texto en el registro es una sola cadena con un patrón de inicio (^) y un extremo ($). Pero aún puede ser útil.

Sólo pensé en tirarlo, ya que esto es algo que a veces hago.

+0

También es bueno saberlo, gracias. – Kevin

Cuestiones relacionadas