GNU/Linux >> Znalost Linux >  >> Linux

Otevřete Vim ze skriptu prostředí Bash

ex je verze příkazového řádku pro vi a mnohem snadněji se používá ve skriptech.

ex $yourfile <<EOEX
  :%s/$string_to_replace/$string_to_replace_it_with/g
  :x
EOEX

Ptali jste se, jak zapsat „něco“ do textového souboru přes vim a žádná odpověď to ještě nezbytně nepokryla.

Vložení textu:

ex $yourfile <<EOEX
  :i
  my text to insert
  .
  :x
EOEX

:i přejde do režimu vkládání. Všechny následující řádky jsou vloženy textem do . je vidět, jak se objevuje sám na svém vlastním řádku.

Zde je také popsáno, jak hledat a vkládat. Můžete udělat něco jako:

ex $yourfile <<EOEX
  :/my search query\zs
  :a
  my text to insert
  .
  :x
EOEX

Tím se najde první výběr, který odpovídá regulárnímu výrazu určenému :/ , umístěte kurzor na místo určené \zs a přejděte do režimu vkládání za kurzor.

Můžete přesunout \zs k dosažení různých výsledků. Například:

ex $yourfile <<EOEX
  :/start of match \zs end of match
  :a
  my text to insert 
  .
  :x
EOEX

Tím se změní první výskyt „začátek shody konec shody“ na „začátek shody můj text pro vložení konce shody“.

Chcete-li při vyhledávání mezi klíčovými slovy povolit libovolné množství mezer, použijte \_s* . Například hledání funkce, která vrací 0::/\_s*return\_s*0}


Pokud chcete vidět práci prováděnou uvnitř vim nebo gvim, můžete použít --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."

Bude to pomalé, ale udělá to, co chcete.
Nejprve otevřeme gvim, ve kterém můžeme otevřít všechny naše soubory (pro efektivitu)
S prvním řádkem gvim otevřeme soubor v dříve otevřeném gvim.
Na druhém řádku gvim odešleme příkaz do dříve otevřené instance gvim (se stále otevřeným požadovaným souborem).
Příkaz je následující:
<ESC> - opusťte jakýkoli režim, ve kterém mohl být gvim
i something to the file - přejděte do režimu vkládání a zadejte "něco do souboru"
<ESC> - opustit režim vkládání
:wq - zapište soubor a ukončete vim


Vim má několik možností:

  • -c => předat ex příkazy. Příklad:vim myfile.txt -c 'wq' vynutit ukončení posledního řádku souboru novým řádkem (pokud není binary je nějakým způsobem nastaveno skriptem)
  • -s => přehrajte skript, který byl nahrán pomocí -W . Pokud například váš soubor obsahuje ZZ a poté vim myfile.txt -s the_file_containing_ZZ udělá to samé jako předtím.

Všimněte si také, že je vyvoláno jako ex , vim se spustí v ex režimu; můžete zkusit ex my_file.txt <<< wq


Linux
  1. Bash Script:Zkontrolujte, zda je soubor textovým souborem?

  2. Získat úplnou cestu ze skriptu Bash?

  3. Jak zkontrolovat podřetězec v Shell Script Bash?

  1. Použití příkazu passwd ze skriptu shellu

  2. Jak zvýraznit Bash skripty ve Vimu?

  3. Spusťte bash skript z adresy URL

  1. Zabránění souběžnému spuštění bash skriptu

  2. atomic create soubor, pokud neexistuje z bash skriptu

  3. Může být soubor .sh malware?