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?

kenorb
fonte
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')
Ingo Karkat
fonte
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
PhilippFrank
fonte