Domanda

Dire di avere una linea in un emacs buffer che assomiglia a questo:

foo -option1 value1 -option2 value2 -option3 value3 \
    -option4 value4 ...

Voglio assomigliare a questo:

foo -option1 value1 \
    -option2 value2 \
    -option3 value3 \
    -option4 value4 \
    ...

Voglio che ogni opzione/valore di coppia su una riga separata.Voglio anche quelle successive linee rientrato in modo appropriato secondo modalità piuttosto che aggiungere una quantità fissa di spazio.Io preferirei che il codice sul blocco corrente, fermandosi alla prima non vuoti la linea o linea che non contiene un'opzione/valore di coppia anche se ho potuto accontentarsi di lavorare in una regione selezionata.

Qualcuno sa di un elisp funzione per fare questo?

È stato utile?

Soluzione

Nessuno aveva quello che cercavo, così ho deciso di rispolverare il mio elisp manuale e farlo io.Questo sembra funzionare abbastanza bene, anche se l'output non è proprio quello che ho chiesto.In questa versione, la prima opzione va su una riga, invece di restare in prima linea come la mia domanda originale.

Altri suggerimenti

In questo caso, vorrei utilizzare una macro.È possibile avviare la registrazione di una macro con C-x (e interrompere la registrazione con C-x ).Quando si desidera riprodurre la macro di tipo C-x e.

In questo caso, vorrei tipo C-a C-x C-s v a l u e C-f C-f \ RET SPC SPC SPC SPC C-x )

Che vorresti registrare una macro che esegue la ricerca di "valore", si sposta in avanti di 2, inserisce una barra e a capo, e, infine, gli spazi della nuova linea oltre alla line up.Poi si potrebbe ripetere questa macro un paio di volte.

EDIT:Ho appena realizzato, il testo letterale non può essere facile da individuare come "valore1".Si potrebbe anche cercare spazi e ciclo attraverso i colpi.Per esempio, colpire, C-s un paio di volte dopo la prima partita a saltare alcune partite.

Nota:Dato che il tuo esempio è "ad hoc" per questa soluzione sarà troppo.Spesso si utilizzano le macro quando avete bisogno di una soluzione ad-hoc.Un modo per rendere la macro applicare in modo più coerente è quello di mettere l'originale della dichiarazione di tutti su una linea (può essere fatto anche da una macro o manualmente).

EDIT:Grazie per il commento ( rispetto a C-(, hai ragione errore mio!

Personalmente, faccio le cose come questo tutto il tempo.

Ma non posso scrivere una funzione per farlo a meno che non sarò io a farlo ogni giorno per un anno.

Si può facilmente farlo con query-sostituire, come questo:

m-x (query-sostituire "-opzione" "^Q^J -opzione")

Io dico ^Q^J che è quello che ti tipo di citare un "a capo" e di mettere in la stringa.

Poi basta premere " y " per le stringhe da sostituire, e 'n' per ignorare la strana angolo casi ci si aspetterebbe di trovare.

Un altro cavallo di battaglia: la funzione di query-sostituire-regexp che può fare sostituzione di espressioni regolari.

e anche grep-query-sostituire, per l'esecuzione di query-sostituire analizzando l'output di un comando grep.Questo è utile perché si può cercare per "pippo" in 100 file, quindi eseguire la query-sostituire ogni occorrenza saltando da un file all'altro.

La modalità può sostenere questo già.In modalità C e Makefile modalità, almeno, M-q (fill-comma) e inserire le continuazioni di riga nel riempimento della colonna e avvolgere le tue linee.

Che modalità stai modificando questo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top