Como terminar / sair do parêntese de uma linha no vim?


7

Li a solução respondida em /programming/11037825/vim-get-out-of-parenthesis-brackets-etc . Isso não passa de um comando Aque tira você no final da linha.

Mas, minha exigência é algo diferente. Suponha que eu possua um arquivo contendo -
x = (3+5)/(2+1);
Quando o cursor está ativado, +quero movê-lo /ou primeiro ), mas não ;(Você pode considerar 'após o caractere' em vez de 'no caractere').


11
algo parecido com isto nnoremap ,f /[)/]<cr>:?
Christian Brabandt

@ChristianBrabandt Sim, algo parecido com isto. Mas, como os parênteses podem ser diferentes, é necessário verificar se estou entre ()ou {}ou []ou <>(embora não seja parêntese).
Alhelal

Respostas:


16

Não estou 100% claro se é isso que você está perguntando, mas acho que você pode estar procurando:

])

Isso pula para o recinto mais próximo ). Portanto, se o seu cursor estava no /abaixo:

(2 / (3 + 5) * 9) 
   ^

Iria passar o primeiro )e pular para aqui:

(2 / (3 + 5) * 9)
                ^

Como alternativa, para o seu caso mais simples, %%também funcionaria. O primeiro %pula para a abertura (e o segundo pula para a contraparte, o fechamento ).

Vejo:

  • :help ])
  • :help %

11
]} ]) [{ [(trabalho, mas [[e ]]não funciona.
Alhelal

2
@alhelal [[e ]]faça algo diferente: consulte:h ]]
Rich

2

Minha correspondência de plug - in fornece os mapeamentos ]%e [%é como uma versão independente de delimitador de ])/ ]} para ir para qualquer elemento de um par correspondente ao redor. Como ele usa os símbolos listados em matchpairs, funciona para ()/ {}/ []por padrão e funcionará para <e >se matchpairscontiver <:>.

Os tipos de arquivo também podem especificar pares correspondentes mais avançados (por exemplo, if/endifno vimscript), semelhante ao plugin matchit, que é distribuído com o vim (exceto pelo fato de o matchit parecer não ser mantido e esses mapeamentos não funcionarem ).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.