2012-05-17 10 views
7

¿Existe un comando para copiar una función completa? (No seleccionando mediante el mouse)Vim: copia de función

ex: 10yy -> copiará 10 líneas desde la posición del cursor.
No conozco el no de líneas de una función, pero quiero copiar toda la función.

¿Hay algún comando para copiar toda la función?

Respuesta

2

Si está utilizando VIM, y el cuerpo de la función en el lenguaje de programación está cerrado con llaves, puede simplemente colocar el cursor sobre uno de los aparatos y escribir y%.

+0

Si también desea obtener la declaración de método, puede prefijar su comando con una 'V', por lo que se convierte en' V% y' – tannerli

2

Los idiomas de llaves (como Java) pueden usar los comandos ]m para navegar a las funciones; algunos tipos de archivos también definen ]] para esto. Con esto, puede usar [mV]My (ir al principio de la función, iniciar el modo visual linewise, ir al final de la función, yank).

Muchos tipos de archivos también definen el plegado de funciones. Con eso, puede usar zCyyzO (cierre todos los pliegues, tire todo el pliegue debajo del cursor, ábralo).

22

Esto es lo que hago en JavaScript y PHP:

va{Vy 
  1. Coloque el cursor en algún lugar de mi método,
  2. va{ a seleccionar visualmente el bloque del código,
  3. V para convertir el selección de carácter a línea,
  4. y para tirar

Si tiene demasiada profundidad y va{ solo selecciona una parte de su función, puede hacer más a{ hasta que seleccione lo que desea.

+1

'ya {' simplifica su secuencia. Lo cual funciona bien para cualquier lenguaje basado en corchetes. –

+0

'ya {' solo tira de los corchetes y lo que hay adentro. Se necesita un paso adicional para también tirar de la parte 'function myFunc (args)'. – romainl

+3

De hecho, pero supones aquí que el corchete de apertura está en la misma línea que el de la firma de la función. –

Cuestiones relacionadas