Vim: Como inserir no modo de bloco visual?

145

Como você pode inserir quando está no modo de bloco visual (pressionando ctrl-V) no Vim?

ovatsug25
fonte
4
possível duplicata do VIM Blockwise Insert
Conner
1
RESUMO RÁPIDO DA RESPOSTA: Vou colocar a resposta aqui de forma simples. Existem tantos comentários que esse tópico está se afogando. 1) Verifique se você tem o + visualextra ativado na sua versão do Vim, digitando: ver no Vim. 2) Você insere marcando primeiro o material que deseja editar e, em seguida, pressione I (maiúscula i) - em minúsculas, não funcionarei. 3) Depois de fazer isso, será possível que você esteja inserindo apenas a primeira linha, mas quando terminar, pressione ESC e j; o texto será copiado para as outras linhas. É assim que funciona para mim.
Zeth

Respostas:

202

Tente isto

Depois de selecionar um bloco de texto, pressione Shift+ iou capital I.

Letras minúsculas inão funcionarão.

Em seguida, digite o que deseja e, finalmente, para aplicá-lo a todas as linhas, pressione Escduas vezes.




Se isso não funcionar ...

Verifique se você +visualextraativou na sua versão do Vim.

Você pode fazer isso digitando :vere percorrendo a lista de recursos. (Você pode copiá-lo e colá-lo em um buffer e fazer uma pesquisa incremental porque o formato é ímpar.)

A ativação está fora do escopo desta pergunta, mas tenho certeza que você pode encontrá-la em algum lugar.

ovatsug25
fonte
13
Não esqueça Atambém!
jmdeldin
42
Você também deve pressionar a tecla ESC para sair do modo de inserção antes que o texto seja duplicado.
Brandon Joyce
19
Alguém já viu isso não funcionar? Eu tenho uma configuração de vim não modificada no CentOS. Apertei ctrl + v, apertei ja algumas vezes e vejo o cursor destacar o primeiro caractere de algumas linhas. Pressiono shift + i. O cursor é movido para o primeiro caractere da primeira linha, mas estou de volta ao modo normal. Eu sei disso porque se eu pressionar "a", ele move o caractere para a direita e diz "- INSERIR -". Se eu digitar alguns caracteres e pressionar Esc, não será aplicado às outras linhas.
Tyler Collier
2
@TylerCollier Estou enfrentando o problema no Ubuntu 14.04 no digitalocean. Comente se você encontrou uma solução.
Zack Burt
2
@ZacharyBurt O vim padrão instalado com o Ubuntu 14.04 (instalado como vi) não inclui o visualextrarecurso, portanto a inserção de bloco não funcionará lá. sudo apt-get install vimtraz uma versão mais completa, na qual visualextraé ativada. @TylerCollier Esse também pode ser o mesmo problema na instalação do CentOS: verifique a saída de vim --versionpara ver a lista completa dos recursos ativados.
Gabriel Grant
40
  1. pressione ctrl e v // iniciar seleção
  2. pressione shift e eu // digite qualquer texto
  3. pressione esc esc // pressione esc duas vezes
dom grátis
fonte
Depois de pressionar ctrl + v, você pode pressionar jpara selecionar rapidamente as linhas abaixo da posição atual ou pressionar kpara selecionar rapidamente as linhas acima da posição atual. Você também pode usar a shifttecla com os erros upou downpara fazer a seleção.
tyler.frankenstein
1
De todas as respostas, essa é a única que funcionou para mim. Eu estou em um Mac usando a bebida instalar
Daniel Kaplan
Eu estive reclamando há anos que eu não poderia facilmente i NSERT (como c hange) no bloco selecionar. Então é com capital i, estou impressionado. Eu tenho usado :normal iINPUT<CR>para inserir no início das linhas. Muito obrigado por isso!
Tim Visée 26/09/18
Eu não acho que você precise pressionar esc duas vezes. Se você pressionar qualquer coisa após esc, ele atualizará automaticamente o texto. Caso contrário, ele será feito em cerca de meio segundo.
Shahbaz 30/06
29

Você também pode ter um caso de uso em que deseja excluir um bloco de texto e substituí-lo.

Como isso

Hello World
Hello World

Você pode selecionar o bloco visual antes de "W" e pressionar Shift+ i- Digite "Cool" - Pressione ESCe exclua "World" pela seleção visual do bloco.

Como alternativa, a maneira mais legal de fazer isso é apenas bloquear visualmente selecionar "Mundo" nas duas linhas. Digite cpara change. Agora você está no insertmodo. Insira o material que você deseja e clique ESC. Ambos são refletidos com menos pressionamentos de tecla.

Hello Cool 
Hello Cool
Nishant
fonte
o passo final é útil para mim, você deve pressionar ESCentão toda a linha marcada mostrará o caractere digitado.
Webb Lu
coisas boas, isso ajuda bastante #
944
9

se você deseja adicionar um novo texto antes ou depois da coluna selecionada:

  • pressione ctrl + v
  • selecionar colunas
  • pressione shift + i
  • escreva seu texto
  • pressione esc
  • pressione "jj"
rugby82
fonte
2
Tank you, jjpara propagar as alterações para todas as linhas abaixo foi o último bit que estava faltando!
kilogic
jjé um assassino!
Anh Tran