ex
è la versione della riga di comando per vi
e molto più facile da usare negli script.
ex $yourfile <<EOEX
:%s/$string_to_replace/$string_to_replace_it_with/g
:x
EOEX
Hai chiesto come scrivere "qualcosa" in un file di testo tramite vim e nessuna risposta lo ha ancora necessariamente coperto.
Per inserire testo:
ex $yourfile <<EOEX
:i
my text to insert
.
:x
EOEX
:i
entra in modalità inserimento. Tutte le righe seguenti sono testo inserito fino a .
viene visto apparire da solo sulla propria riga.
Ecco come cercare e inserire pure. Puoi fare qualcosa come:
ex $yourfile <<EOEX
:/my search query\zs
:a
my text to insert
.
:x
EOEX
Questo troverà la prima selezione che corrisponde alla regex specificata da :/
, posiziona il cursore nella posizione specificata da \zs
e accedere alla modalità di inserimento dopo il cursore.
Puoi spostare \zs
per ottenere risultati diversi. Ad esempio:
ex $yourfile <<EOEX
:/start of match \zs end of match
:a
my text to insert
.
:x
EOEX
Questo cambierà la prima occorrenza di "inizio corrispondenza fine corrispondenza" in "inizio corrispondenza il mio testo per inserire la fine della corrispondenza".
Se vuoi consentire qualsiasi quantità di spazio bianco nelle tue ricerche tra le parole chiave, usa \_s*
. Ad esempio, cercando una funzione che restituisca 0::/\_s*return\_s*0}
Se vuoi vedere il lavoro svolto all'interno di vim o gvim puoi usare --remote-send
gvim --servername SHELL_DRIVER
bashpromt# cat mybash.sh
#!/bin/bash
echo "about to open $1"
gvim --servername SHELL_DRIVER $1 #I need to use vim application to open a file
#now write something into file.txt and close it
gvim --servername SHELL_DRIVER --remote-send '<ESC>i something to the file<ESC>:wq<CR>'
echo "done."
Questo sarà lento ma farà quello che vuoi.
Per prima cosa apriamo un gvim in cui possiamo aprire tutti i nostri file (per efficienza)
Con la prima riga gvim apriamo il file nel gvim precedentemente aperto.
Sulla seconda riga gvim inviamo un comando all'istanza di gvim precedentemente aperta (con il file desiderato ancora aperto).
Il comando è il seguente:
<ESC>
- uscire da qualsiasi modalità in cui potrebbe essere stato gvim
i something to the file
- vai in modalità inserimento e digita "qualcosa nel file"
<ESC>
- uscire dalla modalità di inserimento
:wq
- scrivi il file ed esci da vim
Vim ha diverse opzioni:
-c
=> passa i comandi ex. Esempio:vim myfile.txt -c 'wq'
per forzare la fine riga dell'ultima riga di un file (a meno chebinary
è impostato in qualche modo da uno script)-s
=> riproduci uno scriptout che è stato registrato con-W
. Ad esempio, se il tuo file contieneZZ
, quindivim myfile.txt -s the_file_containing_ZZ
farà lo stesso di prima.
Si noti inoltre che, invocato come ex
, vim partirà in modalità ex; puoi provare ex my_file.txt <<< wq