Il modo più veloce per spostare il blocco di codice su una riga specifica


8

Supponi di avere il codice sulle righe 4, 5, 6. Quindi vuoi spostare questo blocco di codice sulla riga del punto iniziale 9 eliminando anche le righe 4, 5, 6.

Qual è il modo più veloce, ovvero la quantità minima di tasti premuti, per raggiungere questo obiettivo? Una funzione personalizzata sarebbe più adatta?

Risposte:


6

A partire dall'inizio della riga 4 ( ESC 4 ESC g go M-4 M-g M-gper andare lì), C-3 C-k C-2 C-n C-y(o ESC 3 C-k down down C-yse non ti piace tenere i modificatori giù) lo farà.

Se non vuoi fare l'aritmetica nella tua testa, ma seleziona visivamente le linee, allora

  • Spostati all'inizio della zona per spostarti
  • C-SPC per impostare il segno
  • Spostati verso il basso all'inizio della prima riga da mantenere
  • C-w tagliare
  • Spostati verso il basso nel punto in cui desideri inserire il testo tagliato
  • C-y incollare

Non penso che ci sia modo di accorciarlo a meno che tu non sia disposto a perdere un po 'di flessibilità (ad esempio, se spesso vuoi spostare un blocco di esattamente tre righe). È necessario fornire tre posizioni: l'inizio del blocco da spostare, la fine del blocco da spostare e la destinazione. Nelle sequenze sopra, c'è un singolo tasto in ogni posizione, che è il più basso possibile.


8

Se la distanza non è grande puoi usare il testo di spostamento :

inserisci qui la descrizione dell'immagine

In termini di tasti premuti, per me è:

  1. Seleziona la regione:

    C-SPCC-nC-nC-n

  2. Sposta regione:

    H-S-nH-S-nH-S-n

( move-text-downè vincolato a H-S-n)


È inoltre possibile fornire un argomento numerico na move-text-downe move-text-up. Questo accorcia il passaggio (2) a M-3 H-S-n.
itsjeyd

3

È possibile utilizzare la regione di espansione per contrassegnare il blocco, se si tratta di un'unità semantica, come una funzione (il sito Web del pacchetto spiega questo in modo più dettagliato). Quindi spostarlo come spiega l'altra risposta. A seconda di dove ti trovi nel blocco, un singolo tasto può contrassegnare il tutto.


Puoi approfondire su questo? Cosa intendi per blocco reale? Come un blocco funzionale?
Edgar Aroutiounian,

Sì, il termine usato nel pacchetto è "unità semantiche" che può essere parola, riga, blocco di codice, funzione, classe, file intero. Ho modificato la risposta per includere un link al pacchetto che spiega meglio questo.
rlazo,

2

Se stai usando evil-mode, in alternativa è possibile utilizzare un excomando: :4,6m9(che mOves linee 4a 6alla linea 9).


Non riesco a menzionare una caratteristica esotica come l'emulazione vi quando non ha nulla a che fare con la domanda.
Gilles 'SO- smetti di essere malvagio' il

2
Gilles: evil-modenon è esattamente oscuro - ha quasi 18.000 download su melpa. Un'altra risposta utilizzata expand-region, che è anche un pacchetto esterno. Per un sito di domande e risposte, è probabilmente utile includere diversi modi per ottenere lo stesso risultato con pacchetti diversi (anche se potrebbe essere utile elaborare alcune linee guida).
shosti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.