GNU/Linux >> Tutoriales Linux >  >> Linux

Abra Vim desde dentro de un script de shell Bash

ex es la versión de línea de comandos para vi y mucho más fácil de usar en secuencias de comandos.

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

Preguntó cómo escribir "algo" en un archivo de texto a través de vim y ninguna respuesta necesariamente ha cubierto eso todavía.

Para insertar texto:

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

:i entra en el modo de inserción. Todas las líneas siguientes son texto insertado hasta . se ve aparecer solo en su propia línea.

Aquí es cómo buscar e insertar también. Puedes hacer algo como:

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

Esto encontrará la primera selección que coincida con la expresión regular especificada por :/ , coloque el cursor en la ubicación especificada por \zs y acceda al modo de inserción después del cursor.

Puedes mover \zs para lograr diferentes resultados. Por ejemplo:

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

Esto cambiará la primera aparición de "inicio de coincidencia final de coincidencia" a "inicio de coincidencia mi texto para insertar final de coincidencia".

Si desea permitir cualquier cantidad de espacios en blanco en sus búsquedas entre palabras clave, use \_s* . Por ejemplo, buscando una función que devuelva 0::/\_s*return\_s*0}


Si desea ver el trabajo que se realiza dentro de vim o gvim, puede usar --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."

Esto será lento pero hará lo que quieras.
Primero abrimos un gvim en el que podemos abrir todos nuestros archivos (por eficiencia)
Con la primera línea de gvim abrimos el archivo en el gvim previamente abierto.
En la segunda línea de gvim, enviamos un comando a la instancia de gvim previamente abierta (con el archivo deseado aún abierto).
El comando es el siguiente:
<ESC> - salir de cualquier modo en el que gvim pueda haber estado
i something to the file - vaya al modo de inserción y escriba "algo en el archivo"
<ESC> - salir del modo de inserción
:wq - escribir el archivo y salir de vim


Vim tiene varias opciones:

  • -c => pasar comandos ex. Ejemplo:vim myfile.txt -c 'wq' para forzar la terminación de la última línea de un archivo (a menos que binary está configurado de alguna manera por un script)
  • -s => reproducir un guión que se grabó con -W . Por ejemplo, si su archivo contiene ZZ , luego vim myfile.txt -s the_file_containing_ZZ hará lo mismo que antes.

También tenga en cuenta que, invocado como ex , vim se iniciará en modo ex; puedes probar ex my_file.txt <<< wq


Linux
  1. Bash Script para eliminar el archivo más antiguo de una carpeta?

  2. ¿Cómo crear un archivo temporal en Shell Script?

  3. Script bash:usar el comando de script desde un script bash para iniciar sesión

  4. Cómo incluir un archivo en un script de shell bash

  5. Obtenga una línea específica del archivo de texto usando solo un script de shell

Cómo acceder al shell o ejecutar comandos externos desde dentro de Vim

35 ejemplos de secuencias de comandos Bash

¿Cómo resaltar los scripts de Bash en Vim?

Ejecutar script bash desde URL

archivo de creación atómica si no existe desde el script bash

Bash script para eliminar el archivo más antiguo de una carpeta