Direcione apenas uma linha no vim para uma substituição de texto

Direcione apenas uma linha no vim para uma substituição de texto

Existe uma maneira no vi(m) de direcionar uma linha específica em um arquivo para uma substituição de string?

Preciso adicionar frequentemente impressões digitais SSL SHA de servidores Web ao meu Mercurial .hgrc. Posso obter a assinatura necessária do Chrome facilmente clicando duas vezes no cadeado e observando os detalhes do certificado, mas obtenho a assinatura com delimitadores de espaço em vez dos delimitadores de dois pontos desejados pelo Mercurial

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

Exemplo deCódigo do Google.

Existe uma maneira de:

  1. Copie a impressão digital para minha área de transferência
  2. Edite meu .hgrc com vi(m)
  3. Entre no modo de inserção para colar a impressão digital
  4. Mire apenas nessa linha com um

    :s/ /:/g

  5. Salve o arquivo

Agora posso colar a impressão digital em um novo arquivo, fazer a substituição e colocá-la em meu .hgrc com um:r nome do arquivo, mas essa é uma etapa extra que eu não me importaria de pular.

Responder1

Descobri:

Mova o cursor para a linha que deseja modificar e faça o seguinte:

.s/ /:/g

O '.' na frente do comando substituto informa ao vi(m) que você deseja modificar apenas a linha atual.

Referência:http://www.kingcomputerservices.com/unix_101/search_and_replace_with_vi_part_1.htm

Responder2

Se você quiser inseri-lo após a linha N:

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

Fim do arquivo: N=$ ; início do arquivo: N=0. @+ é o registro da área de transferência (quando a GUI está em execução).

Responder3

Simplesmente :s/ /:/gvai servir.

O :substitutecomando funciona apenas na linha atual por padrão.

O /gmodificador global significa substituir todas as correspondências no intervalo especificado, não o arquivo inteiro.)

Responder4

você pretende fazer isso?

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

informação relacionada