suponha que tenho os seguintes textos:
aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"
Quero fazer a seleção como abaixo:
aaa-dd-e:
"aaa",
bb-x:
"bb",
c-9:
"c"
Tentei usar cv para criar um bloco visual, mas depois de criar a seleção na primeira coluna e pressionar "f:" (pretendia expandir a seleção para marcas de dois pontos em todas as linhas como acima), o que recebo é:
aaa-
dd-e: "aaa",:
bb-x
"bb",
c-9:
"c"
a seleção para no primeiro ponto e cria um retângulo.
visual-mode
Aaron Shen
fonte
fonte
Respostas:
A seleção geralmente é um meio para um fim, mais ainda no Vim, onde a seleção geralmente não é necessária em primeiro lugar.
Supondo que você ainda deseja colocar aspas em torno dos nomes de propriedades em seu arquivo não JSON para transformá-lo em JSON adequado:
:'<,'>norm I"^[f:i"
('<,'>
é inserido automaticamente para você e^[
é obtido com<C-v><Esc>
).Se você possui o belo plugin surround, a etapa 2 se torna:
Com uma substituição, a etapa 2 pode se tornar:
fonte
:g/regex/norm
, posso simplesmente conseguir o que quero fazer."+y
ou"*y
, dependendo da área de transferência que deseja segmentar. Há muitas perguntas relacionadas por aqui.O Vim suporta apenas seleções retangulares em sentido de bloco, com exceção da borda direita irregular quando você pressiona
$
.Existem plugins (como vários cursores do vim ) que podem emular várias seleções, mas você também deve ser capaz de atingir seu objetivo real (que infelizmente não mencionou) com comandos puros do Vim, por exemplo
:global
e:substitute
(se você pode formular uma rotina regular). expressão que corresponde à seleção em cada linha) ou repetindo macros (se houver um movimento específico que cubra a seleção em cada linha).fonte
Apenas para jogar outro chapéu no ringue, se você realmente quiser usar a seleção visual, use o plug-in Tabular para alinhar os dois pontos e faça sua seleção visual.
Se você pegar seu texto original:
:Tab /:\zs
alinhará tudo após o cólon, como abaixoE então você pode fazer sua seleção de bloco visual.
Como outros já disseram, a seleção visual provavelmente não é necessária nessa situação. O uso
norm
ou substituição provavelmente pode realizar o que você deseja sem mexer nas seleções visuais.fonte
Encontrei uma solução para esse problema que é surpreendentemente simples! Inicie o modo de bloco visual na parte inferior da seleção do texto que você deseja copiar e selecione para cima! Ele expandirá o bloco à medida que você sobe, enquanto que se você destacar para baixo, isso parecerá diminuir a seleção.
fonte