Risposte:
È possibile aggiungere un prefisso con M-x string-rectangle
cui è associato C-x r t
. Questo fa parte di una serie di comandi che opera su selezioni rettangolari ; questo inserisce il testo in ogni riga del rettangolo.
Inizia impostando il segno all'inizio della prima riga e sposta il cursore sul primo carattere dell'ultima riga che desideri aggiungere:
*Hello
There
▮I am some code
Quindi utilizzare C-x r t
, immettere il prefisso ( I said
) e premere RET
. Questo aggiunge il testo ad ogni riga nel rettangolo:
I said Hello
I said There
I said I am some code
Se non allinea il cursore sulla stessa colonna del segno, sovrascriverà quella parte del rettangolo:
*Hello
There
I am▮ some code
con lo stesso comando risulta:
I said o
I said e
I said some code
M-x string-insert-rectangle
. È molto simile, ma si string-insert-rectangle
inserisce all'inizio di ogni riga della selezione, mentre string-rectangle
sostituisce , quindi con quest'ultima devi essere più preciso sulla tua selezione se non vuoi sovrascrivere nulla.
È possibile utilizzare la modalità a cursori multipli , per posizionare un cursore su ogni riga. Quindi, qualsiasi testo digitato verrà inserito su ciascuna riga.
Cominceresti con il punto all'inizio del pezzo di codice:
▮Hello
There
I am some code
Quindi colpisci C->due volte. (Questa è l'associazione di tasti suggerita; devi configurarla tu stesso.) Questo crea due cursori extra sulle seguenti due righe:
▮Hello
▮There
▮I am some code
Quindi digitare I said
. Il testo verrà aggiunto su ogni riga:
I said ▮Hello
I said ▮There
I said ▮I am some code
Infine, premi RETper uscire dalla modalità cursori multipli e lasciare il punto sull'ultimo cursore:
I said Hello
I said There
I said ▮I am some code
Ecco un video che mostra come funziona.
Un'altra opzione è quella di utilizzare le macro, che possono gestire più attività rispetto alle selezioni rettangolari o ai cursori multipli, anche se è un po 'più complicato per questo caso specifico.
Posiziona il cursore all'inizio della prima riga e premi F3per iniziare la registrazione, inserisci il testo, sposta il cursore all'inizio della riga successiva e premi F4per interrompere la registrazione. Ora premi di F4nuovo per ripetere la macro, C-2 F4per ripeterla due volte o C-0 F4per ripeterla fino a quando non viene rilevato un errore (ad esempio la fine delle righe).
Potresti installare il male e farlo in qualsiasi numero di modi simili a vi - Preferisco la selezione del blocco visivo usando Ctrl+ Vper contrassegnare ogni riga e quindi Shift+ Iper inserire e quindi digitare il testo che vuoi inserire e infine ESCpremere per uscire dalla modalità di inserimento e il il testo verrà anteposto a ciascuna riga. Questo è molto simile alle selezioni di rettangoli di emacs, ma alcune sequenze di tasti in meno.
Questo è molto simile alla risposta di Artagnon, ma replace-regexp
non è vincolato a nessuna chiave.
Quindi, in realtà uso query-replace-regexp
quale è associato per impostazione predefinita a, C-M-%
quindi sostituisco ^
con il prefisso indicato I said
e quindi digito !
per sostituire tutto senza più richiedere.
Se hai cua-mode
abilitato, quindi:
I said
come testo da inserirePreferisco il cua-mode
modo di lavorare, rispetto al rettangolo standard Emacs in cui l'equivalente sarebbe:
I said
RET per inserire del testoIl cua-mode
salva due pressioni dei tasti rispetto al rettangolo di standard di Emacs.
Ma per me, l'ulteriore vantaggio di cua-mode è che posso aggiungere testo al rettangolo (io personalmente non so come aggiungere testo con il rettangolo Emacs standard). Con cua-mode, è un RETsolo tasto premuto, inserito prima del I said
.