Como inserir texto no final de um grupo de linhas?

16

Digamos que eu tenha um bloco de texto ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... e eu queria inserir um .no final de cada linha. Qual seria a melhor abordagem para conseguir isso?

vim.ryan
fonte

Respostas:

12

Eu faço o seguinte para acrescentar texto a várias linhas:

  • <c-V> - Entre no modo Visual Block.
  • Use j/ kpara selecionar as linhas.
  • $ - Mova o cursor para o último caractere.
  • A - Entre no modo de inserção após o último caractere.
  • Insira o texto desejado.
  • <Esc> - Saia do modo de inserção e finalize o bloco anexado.

Quando comparado a escrever :normapós a seleção, há ainda menos pressionamentos de tecla, mas a verdadeira razão pela qual eu uso isso é porque é mais instintivo trabalhar no modo Visual Block para esse tipo de alteração.

Vitor
fonte
Muito útil combinado com colar uma coluna de texto .
Paul Rougieux 27/02/19
8

Na primeira linha, digite: 4:norm A.

4e :crie um intervalo para você e norm A.adicione o ponto a cada linha

Outra solução para parágrafos mais longos pode ser: Vip<C-v>$A.<Esc>

O primeiro passo é selecionar o parágrafo e Vipdepois mudar para o modo de bloco visual e mover o cursor para o final de cada linha $e adicionar o item .a cada linha A.e entrar no modo normal <Esc>para que a alteração seja aplicada a cada linha .

rbernabe
fonte
O que é esse :Acomando? Eu não encontrei via #:h :A
Peter Rincker 21/03
foi mal. De fato, não testou a resposta. Estou atualizando. Deve usar o comando normal como resposta @Kritixi Lhitos
rbernabe
Dois caracteres a menos do que 4:norm A.seria4:s/$/.
Philippos
3

Primeiro, você pode selecioná-los visualmente usando Ve depois usar as teclas de movimento para selecionar o texto inteiro (ou se o texto fosse estritamente um parágrafo, você poderia fazer [a partir da primeira linha] V}). E então digite :. Isso deve trazer algo como :'<,'>na linha de comando.

:'<'>normal A.

Isso é executado normal A.nas linhas selecionadas. normal A.executa A.como pressionamentos de tecla no modo normal. Isso Acoloca a .no final de cada uma das linhas selecionadas.

Kritixi Lithos
fonte
3

Se você deseja adicionar um ponto no final de todas as linhas:

:%norm A.

ou você pode usar a pesquisa e substituir:

:%s/$/./

% é o arquivo inteiro, $ é o fim da linha

seguir
fonte
Como @ vim.ryan solicitou um bloco de texto em vez de todo o arquivo, :1,4s/$/./ que substitui o último caractere por um ponto nas linhas de um a quatro, inclusive.
RJT
1

Para torná-lo um pouco mais geral, você pode gravar uma macro em uma única linha e reproduzi-la em cada linha do seu intervalo visualmente selecionado.

Grave uma macro em um registro (o registro q neste exemplo):

qqA.<Esc>q

Você pode selecionar visualmente as linhas nas quais deseja operar:

Vip

E, em seguida, reproduza sua macro em cada linha (o intervalo será preenchido automaticamente):

:'<,'>norm @q
Zach Ingbretsen
fonte