As aspas no LaTeX são diferentes das do texto normal, pois estão formatadas ``like this''
(ou `like this'
entre aspas simples). Isso dificulta a navegação por eles no Vim.
Eu costumo usar algo como T`ct'
(para trás até `
, mude até '
). No entanto, isso é desajeitado e antinatural. Eu preferiria ser capaz de usar algo ao longo das linhas de ciq
( "mudança entre aspas"), assim como eu posso fazer ciw
, ca)
, ci"
, ca'
, etc.
Existe alguma maneira de dizer ao Vim para tratar ``LaTeX'' `quotes'
como objetos de texto? (Além disso, existe alguma maneira de acionar isso apenas ao editar um .tex
arquivo?)
iq
, mas não parece funcionar, por exemplodaq
,.aq
com um mapeamento similar adicional. Eu editei a resposta. Também troquei T` por t 'no mapeamento para que ele procure primeiro, o que me parece mais natural.daq
em``foo''
apenas resulta em`foo'
.f
et
permitem, o que exigiria escrever uma função inteira com variáveis e tudo. Não tenho tempo para fazê-lo agora.Edit : Acabei de descobrir o plugin vim-textobject-latex , que adiciona a funcionalidade exata que você está procurando (além de algumas outras coisas). No arquivo LEIA-ME do plug-in:
Os objetos de texto atualmente suportados são:
Então você pode usar
caq
e afins como quiser. Eu testei e funciona como anunciado, mas observe que depende do plug - in vim-textobject-user . Observe também que você deve garantir que otextobject-user
plug - in seja carregado primeiro , caso contrário, as coisas não funcionarão.Se você não quiser mexer com plugins, no entanto, minha resposta original permanece útil:
A adição dessas duas linhas ao seu
.vimrc
abrange a maior parte do que você deseja.Eles criam novos objetos de texto (
aq
eiq
) que retornam ao anterior`
, entram no modo de seleção visual e, em seguida, selecionam até o próximo'
.Isto irá funcionar para
ciq
,caq
,yiq
ediq
. No entanto,yaq
edaq
não arrancar / excluir as aspas externas, criei outro objeto de textoa"
para lidar com isso (i"
não é necessário, mas adicionei para manter as coisas consistentes:A principal desvantagem aqui é que isso quebrará o
ca"
uso normal , etc. Se você os antecederau FileType tex
, você só terá esse problema nos.tex
arquivos, mas ainda assim pode ser um aborrecimento. Você também pode nomear o objeto com algo comoad
/id
('d' para aspas 'duplas'), mas isso me pareceu menos intuitivo (eu estava buscando a menor diferença em relação à operação normal).A única maneira de pensar em agrupá-los em apenas dois objetos de texto seria escrever uma função que verifique outra citação fora do primeiro conjunto e defina os
aq
objetos de texto para chamar isso.Nota : Existem alguns outros problemas menores com estes:
ma2F`v2f'<cr>`a
), apenas certifique-se de não usar uma que você usa frequentemente manualmente)Para encerrar tudo isso, é isso que eu pessoalmente acrescentaria ao meu
.vimrc
para este problema:Como você pode ver, optei por quebrar a funcionalidade normal
ca'
/ya"
/ etc para não precisar aprender novos comandos para eles, pois não usaria tanto a funcionalidade normal no LaTeX. Essa é apenas uma preferência pessoal; não é difícil mudar os nomes dos objetos. Também adicionei marcas e detecção de tipo de arquivo.fonte
Esta é uma pergunta antiga, mas para o benefício de futuros visitantes: acho mais fácil alterar as aspas de látex com:
E então
This thing is "Foobar"!
funcionará bem no vim e no látex.fonte
Plugar
vim-sandwich
Outro plugin útil para isso é o
vim-sandwich
que definiu um ambiente específico para pésl`
oul'
para`text'
,l"
para``text''
eCom os mapeamentos padrão após o trabalho
`text'
porcisl'
ou se a detecção automática do ambiente mais próximo estiver corretacib
(por exemplo, o cursor ativadoh
em`a (phony) text'
exige que seja pressionadovibibc
). No entanto, você pode definir o seguinte textobject adicionaliq
(exemplo OP)omap <unique> iq <Plug>(textobj-sandwich-query-i)l' xmap <unique> iq <Plug>(textobj-sandwich-query-i)l' omap <unique> aq <Plug>(textobj-sandwich-query-a)l' xmap <unique> aq <Plug>(textobj-sandwich-query-a)l' omap <unique> iQ <Plug>(textobj-sandwich-query-i)l" xmap <unique> iQ <Plug>(textobj-sandwich-query-i)l" omap <unique> aQ <Plug>(textobj-sandwich-query-a)l" xmap <unique> aQ <Plug>(textobj-sandwich-query-a)l"
Agora, basta pressionarciq
ouciQ
funcionar.text
comsaiwl'
apóstrofos único para`text'
o padrão do comando é
sa{motion/textobject}{surrounding}
e meios invoke operadoradd surrounding
eminner word
e tipo envolvente élatex single quote
.sdl'
ou comsdb
srl'l"
ou comsrbl"
Suporta
fonte