Tenho certeza de que costumava haver um plug-in para esse tipo de coisa, mas agora que eu preciso dele, não consigo encontrá-lo (naturalmente), então vou pedir de maneira simples e agradável.
Qual é a maneira mais fácil de selecionar entre colchetes, aspas ou geralmente uma lista de caracteres correspondentes?
write ( *, '(a)' ) 'Computed solution coefficients:'
Por exemplo, aqui eu gostaria de selecionar (a)
, ou Computed solution coefficients:
.
Não estou interessado em várias linhas, apenas casos que ocorrem em uma linha.
yi"
selecionar todas as citações withingci(
ouci)
faz pelo que eu estava procurando. Obrigado. Eu ainda não entendo completamente oi
caso, mas quem se importa desde que funcione, certo? :)Para selecionar entre aspas simples, costumo fazer um
vi'
("selecionar aspas simples internas").Dentro de um bloco de parênteses, eu uso
vib
("selecione o bloco interno")Dentro de um bloco de chaves você pode usar
viB
("capital B")Para fazer as seleções "inclusivas" (selecione também as aspas, parênteses ou chaves), você pode usar em
a
vez dei
.Você pode ler mais sobre as seleções de objeto de texto no manual ou
:help text-objects
no vim.fonte
Esse método de seleção é interno e bem coberto na ajuda do Vim. Abrange tags XML e muito mais.
Veja
:help text-objects
.fonte
Para selecionar entre aspas simples, use
vi'
.Para selecionar entre parênteses, use
vi(
.fonte
ci'
ouci(
para alterar em vez de selecionar visualmente. Mas faz exatamente o que eu queria. Obrigado :)%vi(
ou%vib
Use as setas ou
hjkl
para chegar a uma das expressões de bracketing, depoisv
selecione o modo visual (ou seja, selecionando) e depois%
pule para o outro colchete.fonte
Escreva uma função Vim em .vimrc usando a função interna
searchpair
:( http://vimdoc.sourceforge.net/htmldoc/eval.html )
fonte
Eu acrescentaria um detalhe à resposta mais votada:
Se você estiver usando o gvim e quiser copiar para a área de transferência, use
"+<command>
Para copiar todo o conteúdo entre colchetes (ou parênteses ou colchetes)
Por exemplo:
"+yi}
copiará para a área de transferência todo o conteúdo entre os colchetes do seu cursor.fonte
y
.Eu criei um plugin
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesEle fornece objetos de texto para os pares de cotações mais próximos de qualquer tipo. Usar apenas
iq
ouaq
permitir que você opere no conteúdo de aspas simples ('), duplas (") ou invertidas (`) que atualmente cercam o cursor, estão na frente do cursor ou atrás (nessa ordem de preferência) Em outras palavras, ele pula para frente ou para trás quando necessário para alcançar as aspas.É mais fácil entender olhando para exemplos (o cursor é mostrado com
|
):foo '1, |2, 3' bar
:; depois de pressionardiq
:foo '|' bar
foo| '1, 2, 3' bar
:; depois de pressionardiq
:foo '|' bar
foo '1, 2, 3' |bar
:; depois de pressionardiq
:foo '|' bar
foo '1, |2, 3' bar
:; depois de pressionardaq
:foo | bar
foo| '1, 2, 3' bar
:; depois de pressionardaq
:foo | bar
foo '1, 2, 3' |bar
:; depois de pressionardaq
:foo | bar
Os exemplos acima são dados para aspas simples, o plugin funciona exatamente da mesma maneira para aspas duplas (") e de volta (`).
Você também pode usar quaisquer outros operadores:
ciq
,diq
,yiq
,viq
, etc.Veja a página do github vinculada acima para obter mais detalhes.
fonte
Um mapa de teclas simples no vim resolveria esse problema. map viq F ”lvf” hh Este comando acima mapeia o viq para as teclas para pesquisar entre aspas. Substitua "por qualquer caractere e crie seus mapas de teclas. Coloque isso no vimrc durante a inicialização e você poderá usá-lo sempre.
fonte