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.