Como bloquear o código de substituição no modo visual?


26

Eu tenho uma lista de itens em que desejo substituir os dois primeiros caracteres:

a) item 1
b) item 2
c) item 3

Qual é a maneira mais rápida de fazer isso:

* item 1
* item 2
* item 3

Eu tenho uma abordagem com o modo visual (Ctr-v, jjj, mas precisa fazer dois comandos de substituição. Iirc, essa substituição pode ser feita com 1 comando)


11
Como .,.+2s/^../*/(ou equivalente em uma seleção visual)? Por que dois substituem comandos? 2csubstituiria dois caracteres.
muru

Às vezes, apenas a primeira linha da seleção visual é alterada, repetindo-a com. para as outras linhas bagunça as coisas.
poseid

2
@poseid você tem o hábito de pressionar em Ctrl-Cvez de Esc? Isso evita, entre outras coisas, que as alterações sejam aplicadas a cada linha de uma seleção de bloco visual.
22415 TommyCdo:

esse poderia ser o principal motivo de confusão! obrigado!
poseid

Respostas:


26

Seleção de bloco visual:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Substituição:

:,+2s/^.\{2}/*

Fórmula de pontos:

cE*<Esc>
j.
j.

11
Abordagem maluca: usando textobj-word-column.vim você pode fazer ciC*<esc>e terminar. Nota: este plug-in é um plug-in "faça o que eu quero dizer", portanto falha em locais e formas inesperados, mas o plug-in ainda é útil em alguns casos fáceis como este.
22815 Peter Rincker

interessante a fórmula normal e de ponto!
poseid

3
Observe que, para a solução de bloco visual, você verá apenas o texto sendo digitado na primeira linha. Depois de pressionar <Esc>, ele preencherá as linhas restantes.
27418 Tommcdo

Alguma sugestão para uma maneira de lembrar que c substituirá? Como como Ctrl + D (próprio)
Jordan Mackie

2
@JordanMackie cé para "mudança".
romainl 30/03

17

Aqui está uma maneira mais eficiente de fazer isso:

  1. Tendo o cursor no primeiro item e na 1ª letra ( 0), entre no modo visual 'em sentido de bloco' Ctrl+ ve selecione a 1ª coluna do seu parágrafo atual com }(se sua lista for finalizada por uma nova linha); caso contrário, use métodos diferentes, como as teclas de seta (para mover em torno da seleção) ou pesquisa padrão /c)onde cestá seu último elemento).
  2. Mova para o último símbolo da sua lista com ke l(ou usando as teclas de seta ), para selecionar duas colunas que você deseja alterar.
  3. Altere o texto selecionado pressionando ce digite seu símbolo de marcador ( *) e finalize pressionando Esc.

Funciona com mais eficiência, especialmente nas listas mais longas.

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.