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?
substitute
register
ex-mode
kenorb
fonte
fonte
:help function-list
é uma página muito útil ;-) Existem também outras tags nessa página, comostring-functions
.Respostas:
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:fonte
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.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:
.s/_/test/g
fonte