2012-05-17 17 views
7

Esiste un comando per copiare una funzione completa? (non selezionando tramite il mouse)Vim: Funzione copia

ex: 10yy -> copia le righe 10 dalla posizione del cursore.
Non conosco il no delle linee di una funzione, ma voglio copiare l'intera funzione.

Esiste un comando per copiare l'intera funzione?

risposta

2

Se si utilizza VIM e il corpo della funzione nel linguaggio di programmazione che si è racchiuso tra parentesi graffe, è sufficiente posizionare il cursore su una delle parentesi graffe e digitare y%.

+0

Se si desidera ottenere anche la dichiarazione del metodo, è possibile che si desideri anteporre il comando a 'V', quindi diventa' V% y' – tannerli

2

I linguaggi di ricci (come Java) possono utilizzare i comandi ]m per la navigazione verso le funzioni; alcuni tipi di file definiscono anche ]] per questo. Con questo, è possibile utilizzare [mV]My (andare all'inizio della funzione, avviare la modalità visiva in linewise, andare alla fine della funzione, yank).

Molti tipi di file definiscono anche il piegamento delle funzioni. Con questo, è possibile utilizzare zCyyzO (chiudere tutte le pieghe, tirare l'intera piega sotto il cursore, aprire la piega).

22

Questo è quello che faccio in JavaScript e PHP:

va{Vy 
  1. Posizionare il cursore da qualche parte nel mio metodo,
  2. va{ visivamente selezionare il blocco del codice,
  3. V di trasformare il selezione da carattere a linea,
  4. a Yank

Se sei troppo profondo e va{ seleziona solo una parte della tua funzione puoi fare più a{ finché non selezioni ciò che vuoi.

+1

'ya {' semplifica la sequenza. Che funziona bene per qualsiasi linguaggio basato sulle parentesi. –

+0

'ya {' tira solo tra parentesi e cosa c'è dentro. È necessario un ulteriore passaggio per tirare anche la parte 'function myFunc (args)'. – romainl

+3

In effetti, ma supponiamo che la parentesi aperta si trovi sulla stessa linea di quella della firma della funzione. –

Problemi correlati