Apunte solo a una línea en vim para una sustitución de texto

Apunte solo a una línea en vim para una sustitución de texto

¿Hay alguna manera en vi(m) de apuntar a una línea específica en un archivo para una sustitución de cadena?

Necesito agregar con frecuencia huellas digitales SSL SHA desde servidores web a mi Mercurial .hgrc. Puedo obtener la firma requerida de Chrome con bastante facilidad haciendo doble clic en el candado y mirando los detalles del certificado, pero obtengo la firma con delimitadores de espacio en lugar de los delimitadores de dos puntos deseados por Mercurial.

06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90

Ejemplo deCódigo de Google.

¿Hay alguna manera de:

  1. Copiar dicha huella digital a mi portapapeles
  2. Editar mi .hgrc con vi(m)
  3. Entra en modo insertar para pegar dicha huella digital
  4. Apunta solo a esa línea con un

    :s/ /:/g

  5. Guarda el archivo

Ahora puedo pegar la huella digital en un archivo nuevo, hacer la sustitución y colocarla en mi .hgrc con un:r nombre de archivo, pero ese es un paso adicional que no me importaría omitir.

Respuesta1

Lo averigué:

Mueva el cursor a la línea que desea modificar y haga esto:

.s/ /:/g

El '.' delante del comando sustituto le dice a vi(m) que solo desea modificar la línea actual.

Árbitro:http://www.kingcomputerservices.com/unix_101/search_and_replace_with_vi_part_1.htm

Respuesta2

Si desea insertarlo después de la línea N:

:N put =substitute(@+, ' ', '', 'g')

Fin del archivo: N=$ ; comienzo del archivo: N=0. @+ es el registro del portapapeles (cuando se ejecuta la GUI).

Respuesta3

Simplemente :s/ /:/gfuncionará bien.

El :substitutecomando solo funciona en la línea actual de forma predeterminada.

El /gmodificador global significa reemplazar todas las coincidencias en el rango especificado, no todo el archivo).

Respuesta4

¿Quieres hacer esto?

echo "06 32 1C C5 8A 49 77 85 C5 89 6F 67 75 96 F0 43 77 96 EB 90" >> <filename>

información relacionada