Come spostare un'area di testo selezionata in Emacs di un certo numero di spazi?


26

Sto scrivendo codice Python, quindi spostare / spostare blocchi di linee è importante per evitare di attraversare ciascuna riga singolarmente. Come posso farlo senza un componente aggiuntivo? Esiste un tipo di comando per premere questo tasto?


3
Per risposte non specifiche di Python, consultare emacs.stackexchange.com/q/11 ed emacs.stackexchange.com/q/18 .
— legoscia,

Risposte:


40

Utilizzare il comando indent-rigidly, che è associato per C-x TABimpostazione predefinita.

È possibile specificare il numero di spazi da rientrare utilizzando un argomento prefisso , ad esempio C-5 C-x TAB.

Oppure puoi invocare il comando e quindi utilizzare le frecce sinistra / destra per regolare interattivamente il livello di rientro.


come si aggiunge un argomento prefisso?
— Vass

1
Prova ad esempio C-5 C-x TABa rientrare gli spazi della regione corrente 5.
— glucas,

fantastico, ma perché anche la prima riga non si muove? Devo afferrare l'ultima parte della linea sopra la selezione per fare in modo che l'insieme di linee che voglio spostare.
— Vass

1
Non è necessario selezionare nulla dalla riga precedente, ma si desidera selezionare dall'inizio della prima riga che si desidera rientrare. Ad esempio, C-aper spostarsi all'inizio della riga, C-SPCper iniziare a contrassegnare la regione, C-n C-nper spostarsi verso il basso di un paio di righe, C-5 C-x TABper rientrare in quelle due righe.
— glucas,

1
"usa le frecce sinistra / destra per regolare interattivamente il livello di rientro" Davvero? Grande! Non lo sapevo, e talvolta dovevo indovinare quanti spazi ho bisogno di aggiungere o rimuovere. Spero che questo possa aiutare.
— imz - Ivan Zakharyaschev,

9

Se si utilizza python-mode.el C-c >o C-c <per spostare i blocchi a sinistra o a destra


come mai la prima riga della selezione rimane impassibile se non seleziono l'ultima parte della riga sopra di essa?
— Vass

Non riesco a riprodurre questo comportamento. tutte le linee di una selezione vengono spostate. Emacs 24.4
— Lompik,

Il commento di Glucas dice che questo accadrà se non si seleziona dall'inizio della riga
— Vass

6

Il string-rectanglecomando ( C-x r t) può essere utilizzato per inserire qualsiasi testo arbitrario (spazi inclusi) in una regione selezionata.

Supponiamo che tu abbia questo blocco di testo e desideri inserire 5 spazi davanti a tutte le righe.

abc
  def
    ghi

Seleziona prima una regione "0 colonne" come mostrato di seguito (il punto si trova sul carattere "a" e il segno si trova nella stessa colonna nella riga contenente "ghi":

▮bc
  def
▯   ghi

Ora usando string-rectangle, inserisci il testo che vuoi inserire nella regione selezionata. In questo esempio, inseriremo 5 spazi su tutte le righe includendo e tra il punto e il segno.

C-x r t M-5 SPC RET

Ciò fornirà il testo indentato con forza inferiore.

     abc
       def
         ghi

4

C'è C-x TAB(associato a indent-rigidly). Dagli un argomento prefisso per indicare quanti spazi vuoi indentare, il negativo rimuove quel numero di spazi.


0

Ho scoperto che premendo Alt-4 e poi SPC, ho ottenuto il risultato desiderato. Non sono sicuro che sia il modo migliore, ma funziona anche.

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.