¿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:
- Copiar dicha huella digital a mi portapapeles
- Editar mi .hgrc con vi(m)
- Entra en modo insertar para pegar dicha huella digital
Apunta solo a esa línea con un
:s/ /:/g
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/ /:/g
funcionará bien.
El :substitute
comando solo funciona en la línea actual de forma predeterminada.
El /g
modificador 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>