Como usar a substituição no registro?


7

Digamos que eu tenha registrado a string armazenada, mas gostaria de usar o comando substitute para alterá-la.

Por exemplo, eu tenho a tabela 5x5 html:

let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',5).'</tr>',5).'</table>'

e gostaria de substituir placeholder ( _) por outros dados, de preferência, modificando o registro existente (não atribuindo a outro).

Eu tentei a seguinte sintaxe:

"ts/_/test/g
"@ts/_/test/g " with modifiable set

que não gera erros, mas não funciona conforme o esperado (da mesma forma que o prefixo de %obras).

Qual é a maneira correta de fazer isso?


Parece que você quer algo como Emmet .
Peter Rincker 23/03

2
Observe que :help function-listé uma página muito útil ;-) Existem também outras tags nessa página, como string-functions.
Martin Tournoij 24/03

Respostas:


11

Os comandos Ex funcionam no conteúdo do buffer; para o conteúdo do registro (ou variável), você precisa usar uma função Vimscript correspondente (se ela existir).

Pois :substitute, o equivalente é substitute()(isso foi fácil, certo?) Então:

:let @t = substitute(@t, '_', 'test', 'g')

3
substitute()não é completamente equivalente a :substitute; a função se comporta como se estivesse 'magic'definida e 'cpoptions'vazia, enquanto o comando observará os valores definidos pelo usuário.
22615 Tommcdo

5

Além de usar a instrução let e lidar com o vim-script, você precisa colá-lo em um buffer e depois puxá-lo de volta para o registro:

  1. "tp
  2. :.s/_/test/g
  3. "tdd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.