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.
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.
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.
Respostas:
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ê
+visualextra
ativou na sua versão do Vim.Você pode fazer isso digitando
:ver
e 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.
fonte
A
também!vi
) não inclui ovisualextra
recurso, portanto a inserção de bloco não funcionará lá.sudo apt-get install vim
traz uma versão mais completa, na qualvisualextra
é ativada. @TylerCollier Esse também pode ser o mesmo problema na instalação do CentOS: verifique a saída devim --version
para ver a lista completa dos recursos ativados.fonte
ctrl + v
, você pode pressionarj
para selecionar rapidamente as linhas abaixo da posição atual ou pressionark
para selecionar rapidamente as linhas acima da posição atual. Você também pode usar ashift
tecla com os errosup
oudown
para fazer a seleção.i
, estou impressionado. Eu tenho usado:normal iINPUT<CR>
para inserir no início das linhas. Muito obrigado por isso!Você também pode ter um caso de uso em que deseja excluir um bloco de texto e substituí-lo.
Como isso
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á noinsert
modo. Insira o material que você deseja e clique ESC. Ambos são refletidos com menos pressionamentos de tecla.fonte
ESC
então toda a linha marcada mostrará o caractere digitado.se você deseja adicionar um novo texto antes ou depois da coluna selecionada:
fonte
jj
para propagar as alterações para todas as linhas abaixo foi o último bit que estava faltando!jj
é um assassino!