GNU/Linux >> Linux Esercitazione >  >> Linux

Apri Vim dall'interno di uno script di shell Bash

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 che binary è impostato in qualche modo da uno script)
  • -s => riproduci uno scriptout che è stato registrato con -W . Ad esempio, se il tuo file contiene ZZ , quindi vim 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


Linux
  1. Script Bash per rimuovere il file più vecchio da una cartella?

  2. Come creare un file temporaneo nello script della shell?

  3. Ottieni il percorso completo da Bash Script?

  4. Utilizzando il comando passwd dall'interno di uno script di shell

  5. Come evidenziare gli script Bash in Vim?

Come accedere alla shell o eseguire comandi esterni da Vim

35 Esempi di script Bash

Come includere un file in uno script di shell bash

Ottieni una riga specifica dal file di testo usando solo lo script della shell

Un file .sh può essere un malware?

Script Bash per rimuovere il file più vecchio da una cartella