Vários movimentos:%
O %
comando salta para a correspondência do item sob o cursor. Posicione o cursor no ponto de abertura (ou fechamento) e use y%
para puxar ou d%
excluir tudo, desde o cursor até o ponto correspondente.
Isso funciona porque %
é um "comando de movimento", portanto pode ser usado em qualquer lugar que o vim espere esse comando. De :help y
:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
Por padrão, "item" inclui colchetes, chaves, parênteses, comentários no estilo C e várias instruções de pré-compilador ( #ifdef
, etc.).
Existe um plugin para "correspondência estendida%" que você pode encontrar na página inicial do Vim .
Você pode ler a documentação %
e os comandos de movimento relacionados, entrando :help various-motions
no modo de comando.
seleção de objeto
Há outro conjunto de comandos de movimento que você pode usar no modo Visual para selecionar vários objetos de texto.
Para resolver seu problema específico, faça o seguinte:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
Digamos que seu cursor esteja posicionado em ^
. Digite a seguinte sequência para selecionar a peça que você está procurando:
v2a)
Primeiro v
entra no modo Visual, depois você especifica que deseja 2
aumentar os níveis de parens. Finalmente, a)
seleciona "um bloco". Depois disso, você pode usar d
ou x
excluir, etc.
Se você não deseja incluir as parênteses externas, pode usar "bloco interno":
v2i)
Veja :help object-select
a lista completa de comandos relacionados.
a
significava "ao redor" e não "a". Parece que complementa melhor "interior". Parece que nem um dia se aprende algo novo sobre o Vim.Que tal
dib
oudi(
.Ele excluirá o bloco interno (...) onde está o cursor.
Eu amo movimentos e seleções de objetos de texto !
fonte
dab
=> excluir um bloco (incluindo suas parênteses)Para excluir tudo o que está dentro de um par de parênteses, você sempre pode emitir
di(
e seus derivados.Nota :
Como @porglezomb sugeriu em seu comentário, você pode usar
a
("junto com") em vez dei
("dentro") para incluir os parênteses. Portanto, o usoda(
exclui tudo dentro(
e)
inclui(
e)
.Excluindo texto dentro do par externo imediato de parênteses:
Então, para esta linha de código
supondo que seu cursor esteja dentro do intervalo mencionado acima, você pode emitir os seguintes comandos:
Excluindo texto dentro do n-ésimo par externo de parênteses:
Para pegar tudo dentro do n-ésimo par externo de parênteses, basta adicionar
n
antes do comando acima. Portanto, com a mesma posição do cursor acima,fonte
a
como a contrapartei
, já que isso provavelmente ajudará muitas pessoas.%
esse problema, mas isso leva mais tempo e, na minha opinião, só deve ser usado para cenários mais complexos. A exclusão de algo dentro de um determinado escopo é exatamente para o caso de usodi
.Você pode usar
d%
para excluir ey%
puxar.fonte
Coloque o cursor no primeiro parêntese e pressione
v%y
ouv%d
.fonte
Experimente ci [envolvente de bloco]
No seu caso, coloque o cursor em qualquer lugar entre os 2 parênteses que você destacou e tente as teclas: ci (
fonte
Como resposta de David Norman diz,
Coloque o cursor no primeiro parêntese e pressione
v%y
ouv%d
.Explicação de http://vimdoc.sourceforge.net/htmldoc/vimindex.html :
Isso significa que ele selecionará tudo entre e incluindo os dois colchetes (
%
) enquanto mostra a seleção visualmente (v
) e depois a puxa / copiay
ou exclui / cortad
. (Para o buffer padrão.)Você pode colocar / colar com
p
.Fiz esta resposta para "me ensinar a pescar" .
fonte