2009-03-04 12 views
227

Sto cercando di sostituire un carattere, ad esempio ;, con una nuova riga utilizzando replace-string e/o replace-regexp in Emacs.Come sostituire un personaggio con una nuova riga in Emacs?

Ho provato i seguenti comandi:

  • M-xreplace-stringRET;RET\n

    Questo sostituirà ; con 2 caratteri: \n.

  • M-xreplace-regexRET;RET\n

    Il risultato è il seguente errore (mostrato nel minibuffer):

    uso non valido di `\' nel testo di sostituzione.

Cosa c'è di sbagliato con l'utilizzo replace-string per questo compito? c'è un altro modo per farlo?

Grazie.

risposta

340

M-xreplace-stringRET;RETC-q C-j.

  • C-q per quoted-insert,

  • C-j è una nuova riga.

Cheers!

+1

C-q è davvero 'quote-insert' che cita il carattere successivo. –

+2

Credo che in realtà sia "quotato" piuttosto che "preventivo", come in "quoted-insert". Almeno così è nella versione 22.1. –

+4

Quindi, perché 'Ret' non funziona' C-j' dopo 'C-q'? – Cactus

22

Non dimenticare che puoi sempre tagliare e incollare nel minibuffer.

Quindi è sufficiente copiare un carattere di nuova riga (o qualsiasi stringa) dal buffer, quindi strattonarlo quando viene richiesto il testo sostitutivo.

+2

È davvero una buona idea per i personaggi che non conosco la chiave vincolante . – Lei

7

Più esplicitamente:

per sostituire il carattere semi virgola (;) con una nuova riga, attenersi alla seguente procedura esatta.

  1. individuare il cursore in alto a sinistra di tampone contenente il testo che si desidera modificare
  2. Tipo mx replace-string e premete Invio
  3. il mini-buffer mostrerà qualcosa di simile: Sostituire String (default^- >):
  4. Digitare il carattere che si desidera sostituire. In questo caso, ; e premi RETURN
  5. il mini-buffer visualizzerà qualcosa come: stringa; con:
  6. Ora eseguire Cq Cj
  7. Tutte le istanze di virgola saranno sostituiti una nuova riga (dalla posizione del cursore alla fine del buffer apparirà ora)

bit più ad esso che la la spiegazione originale dice.

2

Passa alla modalità testo

M-x text-mode 

blocco Evidenziare il trattino

Rientro

C+M \ 

Tornate a qualunque modalità ..

52

Ci sono quattro modi che ho trovato per mettere una newline nel minibuffer.

  1. Co

  2. Cq Cj

  3. Cq12 (12 è il valore ottale di fine riga)

  4. Cx o alla finestra principale , uccidi a newline con C-k, allora C-x o nuovo al minibuffer, tirarlo con C-y

+6

+1 per aver menzionato 'C-o'!Un colpo di chiave in meno rispetto a 'C-q C-j'. Non avevo pensato di usarlo prima. – itsjeyd

+0

Grazie per la versione 4! Utile se hai un rimbalzo C-o e C-q. –

+0

Grazie mille. Puoi spiegare perché C-o funziona e C-q C-j no? –

Problemi correlati