Domanda
Ho letto in diversi posti che le funzioni del rettangolo in emacs sono molto utili.Ho letto qualcosa su di loro e non riesco a capire il perché.Voglio dire, quando vuoi eliminare un paragrafo, segni la prima riga/colonna e poi l'ultima, e in realtà è un rettangolo, giusto?Ma puoi ancora usare l'uccisione normale...
Quindi che tipo di trasformazioni faresti con loro?
Soluzione
Se hai dati in colonne in un file di testo con M-x delete-rectangle
O M-x kill-rectangle
puoi eliminare una singola colonna di dati.Allo stesso modo, M-x yank-rectangle
incollerà in una colonna di testo.
Prendiamo ad esempio il seguente testo:
1. alligator alphorn
2. baboon bugle
3. crocodile cornet
4. dog didgeridoo
5. elephant euphonium
6. fish flugelhorn
7. gopher guitar
Seleziona dalla la dell'alligatore alla g della chitarra.L'inizio e la fine della selezione delimitano due angoli opposti del rettangolo.accedere M-x kill-rectangle
e hai subito:
1. alphorn
2. bugle
3. cornet
4. didgeridoo
5. euphonium
6. flugelhorn
7. guitar
Successivamente metti il segno alla fine della riga superiore, aggiungi alcuni spazi se necessario ed entra M-x yank-rectangle
e ta-da!Hai riordinato le colonne:
1. alphorn alligator
2. bugle baboon
3. cornet crocodile
4. didgeridoo dog
5. euphonium elephant
6. flugelhorn fish
7. guitar gopher
Altri suggerimenti
Mi piace usare il rettangolo per 2 scopi principali, inserendo lo stesso testo su ogni riga o eliminando una colonna di testo (simile alla risposta di Dave Webb).
Ci sono 2 scorciatoie utili per questi, C-x r k
ucciderà un rettangolo e C-x r t
da inserire (ci sono altri comandi rettangolari con a C-x r
prefisso, ma questi sono quelli che uso).
Quindi supponiamo che tu voglia prendere del codice e formattarlo in modo da poterlo pubblicare in un post Stack Overflow...è necessario prefissare 4 spazi.Quindi, vai all'inizio della prima riga, C-SPC
per contrassegnare, quindi andare all'inizio dell'ultima riga e C-x r t <SPC> <SPC> <SPC> <SPC> <RET>
, E il gioco è fatto!Quindi puoi semplicemente copiarlo e incollarlo in Stack Overflow.Mi sono imbattuto in situazioni più complesse in cui ciò è utile, in cui in realtà hai del testo che desideri inserire su ogni riga in un punto particolare.
Quindi l'altra situazione come quella di Dave Webb, se vuoi eliminare un rettangolo, usa C-x r k
però, perché è molto più veloce ;-)
Inoltre, secondo il mio scheda di riferimento che ho stampato quando ho iniziato, puoi fare quanto segue:
C-x r r
:copia in un registroC-x r y
:strattonare un rettangoloC-x r o
:apri un rettangolo, spostando il testo a destra (qualunque cosa significhi...)C-x r c
:cancella un rettangolo (presumo che ciò significhi sostituirlo con spazi, ma dovresti provarlo per vedere)C-x r t
:prefisso con testo (come descritto sopra)C-x r k
:uccidere (come descritto sopra)
In emacs24+ c'è anche una funzione per numerare le righe:
(rectangle-number-lines START END START-AT &optional FORMAT)
Insert numbers in front of the region-rectangle.
START-AT, if non-nil, should be a number from which to begin
counting. FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count. When called interactively
with a prefix argument, prompt for START-AT and FORMAT.
È vincolato a C-xr N per impostazione predefinita.