Quero adicionar *
ao final de cada linha no Vim.
Eu tentei o código sem sucesso
:%s/\n/*\n/g
Quero adicionar *
ao final de cada linha no Vim.
Eu tentei o código sem sucesso
:%s/\n/*\n/g
Respostas:
:%s/$/\*/g
Deveria trabalhar. Assim :%s/$/*/g
como MrWiggles aponta corretamente.
g
sinalizador é desnecessário.
Ainda mais curto que o comando: search:
:%norm A*
Isto é o que significa:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
I*
vez de 0i*
, poupará um pressionamento de tecla.
:
, este irá pré-preencher o comando com :'<,'>
o qual você pode então fazer para:'<,'>norm A*
I
em vez disso -:%norm I*
Além disso:
:g/$/norm A*
Além disso:
gg<Ctrl-v>G$A*<Esc>
g
é um global
comando que faz algo com todas as linhas correspondentes. $
corresponde a todas as linhas. Pode ser também ^
ou .*
. A norma executa comandos que você normalmente usa no modo de comando. Então, A*
significa acrescentar *
ao final da linha.
Eu acho que usar o modo de bloqueio visual é um método melhor e mais versátil para lidar com esse tipo de coisa. Aqui está um exemplo:
This is the First line.
This is the second.
The third.
Para inserir "Olá, mundo". (espaço + área de transferência) no final de cada uma destas linhas:
O resultado é:
This is the First line. Hello world.
This is the second. Hello world.
The third. Hello world.
(exemplo de Vim.Wikia.com )
jj
pode-se pressionar G
para ir para a última linha. Isso é útil em arquivos grandes, onde pressionar j
até chegar à última linha não é prático.
Você realmente não precisa g
do final. Então se torna:
:%s/$/*
Ou se você quiser apenas *
o final de, diga as linhas 14-18:
:14,18s/$/*
ou
:14,18norm A*
... e para acrescentar (adicionar o início de) cada linha com *,
%s/^/*/g
Uma opção é:
:g/$/s//*
Isso encontrará todas as âncoras de extremidade da linha e a substituirá *
. Eu digo "substituto", mas, na verdade, é mais um acréscimo, já que a âncora é uma coisa especial e não um personagem comum. Para mais informações, consulte Poder de g - Exemplos .
:% s / \ n / * \ r / g
Seu primeiro está correto em qualquer outro lugar, mas o Vim precisa ter um tratamento de nova linha diferente por algum motivo.
:s///
,\n
corresponde a um caractere nulo. A seção:help sub-replace-special
é relevante.