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)

poseid
fonte
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.
romainl
fonte
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.

kenorb
fonte