Fonte di informazione: 1
Per gli utenti di emacs pro:
- Chiama dired per elencare i file in dir o chiama find-dired se hai bisogno di tutte le sottodirectory.
- Contrassegna i file desiderati. Puoi contrassegnare con regex digitando 【% m】.
- Digitare Q per chiamare dired-do-query-replace-regexp.
- Digita find regex e sostituisci la stringa. 〔☛ pattern regex elisp comune〕
- Per ogni occorrenza, digitare y per sostituire, n per saltare. Digita 【Ctrl + g】 per interrompere l'intera operazione.
- Genere ! per sostituire tutte le occorrenze nel file corrente senza chiedere, N per saltare tutte le possibili sostituzioni per il resto del file corrente. (N è solo emacs 23)
- Per eseguire la sostituzione su tutti i file senza ulteriore richiesta, digitare Y. (solo Emacs 23)
- Chiama ibuffer per elencare tutti i file aperti. Digitare 【* u】 per contrassegnare tutti i file non salvati, digitare S per salvare tutti i file contrassegnati, digitare D per chiuderli tutti.
Guida dettagliata per i principianti di Emacs
Seleziona file di destinazione
Avviare emacs digitando "emacs" nel prompt dell'interfaccia della riga di comando. (Oppure, fai doppio clic sull'icona Emacs se ti trovi in un ambiente di interfaccia utente grafica)
Selezione dei file in una directory
Per prima cosa devi selezionare i file che vuoi sostituire. Utilizzare il menu grafico 〖File ▸ Apri directory〗. Emacs ti chiederà un percorso di directory. Digita il percorso della directory, quindi premi Invio.
Ora, ti verrà mostrato l'elenco dei file e ora devi contrassegnare i file su cui vuoi che Regex trovi / sostituisca per funzionare. Si contrassegna un file spostando il cursore sul file desiderato, quindi premere m. Deselezionalo premendo u. (Per elencare le sottodirectory, spostare il cursore sulla directory e premere i. Il contenuto della sottodirectory verrà elencato in fondo.) Per contrassegnare tutti i file con una regex, digitare 【% m】, quindi digitare il modello regex. Ad esempio, se si desidera contrassegnare tutti i file HTML, digitare 【% m】 quindi .html $. (Puoi trovare un elenco dei comandi mark nel menu grafico "Mark" (questo menu appare quando sei in modalità diretta).)
Selezione dei file in una directory e in tutte le sue sottodirectory
Se vuoi trovare / sostituire i file all'interno di una directory, incluse centinaia di sottodirectory, ecco un metodo per selezionare tutti questi file.
Chiama find-dired. (si chiama un comando premendo 【Alt + x】) Quindi, digitare un nome di directory, ⁖ / Users / mary / myfiles
Nota: se si utilizza emacs su un terminale di testo non grafico unix e se 【Alt + x】 non funziona, il tratto di tasto equivalente è 【Esc x】.
Emacs ti chiederà con il prompt "Esegui trova (con args):". Se è necessario eseguire la sostituzione su tutti i file HTML, digitare -name "* html". Se non ti interessa che tipo di file, ma semplicemente tutti i file in quella directory, allora dai "-type f".
Ora, segna i file come descritto sopra.
Trova / Sostituisci interattivo
Ora sei pronto per sostituire la ricerca interattiva. Per semplicità, diciamo che vuoi solo sostituire la parola "veloce" con "super". Ora chiama dired-do-query-replace-regexp. Ti verrà richiesta la stringa regex e la stringa di sostituzione. Digitare "veloce", inserire, quindi "super".
Ora, emacs utilizzerà il tuo modello e controllerà i file, si fermerà e ti mostrerà ogni volta che si verifica una corrispondenza. Quando ciò accade, ti verrà richiesto emacs e potrai scegliere se apportare la modifica o saltare la modifica. Per apportare la modifica, digitare y. Per saltare, digitare n. Se vuoi semplicemente che emacs continui e apporti tutte queste modifiche al file corrente, digita!.
Se vuoi annullare l'intera operazione senza salvare le modifiche apportate, digita 【Ctrl + g】, quindi esci da emacs usando il menu 〖File ▸ Esci da Emacs〗.
Salvataggio dei file modificati
Ora, dopo aver superato la prova precedente, c'è ancora un altro passo che devi fare e che sta salvando i file modificati.
Se stai utilizzando emacs versione 22 o successive, chiama ibuffer per accedere a una modalità di elenco buffer, quindi digita 【* u】 per contrassegnare tutti i file non salvati, quindi digita S per salvarli tutti. (sono i turni)
Se stai usando una versione 21 di emacs, puoi farlo: chiama i buffer della lista, quindi sposta il cursore sul file che vuoi salvare e digita s. Contrassegnerà il file per successive azioni di salvataggio. Digita u per deselezionare. Al termine, digitare x per eseguire il salvataggio di tutti i file contrassegnati per il salvataggio. (in emacs, il file aperto si chiama "buffer". Ignora le altre cose lì.)
In alternativa alle opzioni precedenti, puoi anche chiamare save-some-buffers 【Ctrl + xs】. Quindi emacs visualizzerà ogni file non salvato e chiederà se lo si desidera salvare.
Nota: regex di emacs non è lo stesso di Perl o Python, ma simile. Per un riepilogo e schemi comuni, vedi: Emacs Regex.