Vim in modalità Ex è utile quando:
- Hai bisogno di modificare (più) file in modo non interattivo (come parte dello script).
- La tua connessione è molto lenta o lo schermo non viene aggiornato dopo le tue azioni.
- Mappature e abbreviazioni sono disabilitate.
- Tasti comuni come Escapeo Controlnon funzionano correttamente.
Fondamentalmente vi
è la modalità visiva per ex
cui Vim Ex Mode è solo emulazione di ex
(eseguono ancora lo stesso codice), quindi è possibile arrivare alla modalità di comando ex
da vi e viceversa. Esistono in realtà due modalità: la modalità Ex ( vim -e
) e la modalità Ex migliorata che consente comandi più avanzati rispetto alla modalità Ex compatibile ( vim -E
). Vedi: Qual è la differenza tra la modalità Ex e la modalità Ex migliorata?
Ex è la radice di una famiglia di editori: edit
, ex
e vi
. Ex è un super-set di ed
, con l'estensione più notevole è una funzione di modifica del display. ex (1)
La modifica dei file in modo non interattivo è l'uso più comune e le persone lo usano in modo simile in quanto sed
e awk
, tuttavia sono più orientati al flusso - leggono solo il file in avanti dall'inizio alla fine (non sono progettati per funzionare con più righe ) mentre vim
è orientato al buffer: puoi spostarti avanti e indietro nel file come preferisci, il che lo rende così potente.
Fondamentalmente:
sed
è un S tream ED itor, non un editor di file.
Tuttavia, la gente sembra abusarne per aver provato a modificare i file e la verità è che non modifica i file. In secondo luogo, le sue opzioni come sul posto ( -i
) sono estensioni di FreeBSD non standard e potrebbero non essere disponibili su altri sistemi operativi. Quindi, se si desidera evitare codice non portabile, sovraccarico I / O e effetti collaterali dannosi (come la distruzione di collegamenti simbolici), è necessario utilizzare ex
l'editor di comandi UNIX standard (insieme a ed
) BashFAQ .
Altre cose che trovo utili in modalità Ex sono usarlo come un parco giochi (simile alla python
console) in cui è possibile eseguire molti comandi di seguito, lavorare / eseguire il debug di espressioni regolari, controllare la configurazione di VIM, eseguire comandi esterni o lavorare con i registri, ecc. .
Per esempio:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
che è più semplice in modalità Ex che in modalità normale (dove puoi vedere solo l'ultimo comando).
Usi pratici
Ho i seguenti alias nel mio .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Nota: l'utilizzo bufdo
non è un ex
metodo conforme a POSIX (come da manuale ), quindi è possibile prendere in considerazione l'utilizzo con find
. La !
viene utilizzato per forzare la commutazione dei buffer senza salvare (altrimenti avviso viene generato).
Il primo che sto usando per tagliare gli spazi finali in tutti i miei file sorgente, ad esempio:
trim **/*.php
Il secondo converte tutte le schede in spazi (ricorsivamente), ad esempio:
retab **/*.php
Per me usare retab
è abbastanza, ma ci sono alcuni aspetti negativi descritti qui . Aggiungi extra -V
per una maggiore verbosità.
Si noti che gli esempi di cui sopra utilizzando zsh / bash4 globbing ( **
), in modo da assicurarsi che la shell lo supporta ed è abilitato.
Per esempi più pratici (come l'analisi dei file html), controlla:
Ulteriori informazioni sulla modalità Ex su:
Q
eq:
sono abbastanza diversi. Ti riferisci solo aQ
giusto?