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

2

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

Preciso adicionar frequentemente impressões digitais SSL SHA dos servidores Web ao meu Mercurial .hgrc. Posso pegar a assinatura necessária do Chrome facilmente clicando duas vezes no cadeado e observando os detalhes do certificado, mas recebo os sig 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 do Google Code .

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 dita impressão digital
  4. Segmente apenas essa linha com um

    : s / /: / g

  5. Salve o arquivo

Agora eu posso colar a impressão digital em um novo arquivo, fazer a substituição e puxá-la para o meu .hgrc com um : r filename , mas isso é um passo extra que eu não me importaria pulando.

    
por bpanulla 29.07.2011 / 17:09

4 respostas

4

Descobri:

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

.s / /: / g

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

Ref: link

    
por 29.07.2011 / 17:22
1

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 registrador da área de transferência (quando a GUI está em execução).

    
por 29.07.2011 / 17:26
1

Simplesmente :s/ /:/g vai fazer bem.

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

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

    
por 26.12.2016 / 11:28
-1

você está querendo fazer isso?

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

Tags