Las comillas en LaTeX son diferentes a las del texto normal, ya que están formateadas ``like this''
(o `like this'
para comillas simples). Esto hace que sea difícil navegar a través de ellos en Vim.
Usualmente uso algo como T`ct'
(hacia atrás hasta `
, cambio hasta '
). Sin embargo, esto es torpe y antinatural. Yo prefiero ser capaz de usar algo en la línea de ciq
( "el cambio entre comillas"), al igual que yo puedo hacer ciw
, ca)
, ci"
, ca'
, etc.
¿Hay alguna forma de decirle a Vim que lo trate ``LaTeX'' `quotes'
como objetos de texto? (Como ventaja, ¿hay alguna manera de activar esto solo mientras se edita un .tex
archivo?)
fuente
iq
, pero no parece funcionar con, por ejemplodaq
,.aq
también con una asignación similar adicional. Edité la respuesta. También cambié T` con t 'en el mapeo para que busque primero, lo que me parece más natural.daq
en``foo''
sólo da como resultado`foo'
.f
yt
los operadores permiten, lo que requeriría escribir una función entera con variables y todo. No tengo tiempo para hacerlo ahora.Editar : Acabo de descubrir el complemento vim-textobject-latex , que agrega la funcionalidad exacta que estás buscando (además de algunas otras cosas). Desde el archivo README del complemento:
Los objetos de texto admitidos actualmente son:
Para que pueda usar
caq
y hacer lo que quisiera. Lo probé y funciona como se anuncia, pero tenga en cuenta que depende del complemento vim-textobject-user . También tenga en cuenta que debe asegurarse de que eltextobject-user
complemento se cargue primero , de lo contrario las cosas no funcionarán.Sin embargo, si no desea meterse con los complementos, mi respuesta original sigue siendo útil:
Agregar estas dos líneas a tu
.vimrc
cubrirá la mayor parte de lo que deseas.Estos crean nuevos objetos de texto (
aq
yiq
) que vuelven al anterior`
, ingresan al modo de selección visual y luego seleccionan hasta el siguiente'
.Esto funcionará para
ciq
,caq
,yiq
, ydiq
. Sin embargo,yaq
ydaq
no tiraré / eliminaré las comillas externas, así que creé otro objeto de textoa"
, para manejar eso (i"
no es necesario, pero agregué para mantener las cosas consistentes:El principal inconveniente aquí es que esto romperá el
ca"
uso normal , etc. Si los introducesau FileType tex
, solo tendrás ese problema en los.tex
archivos, pero de vez en cuando puede ser una molestia. También podría nombrar el objeto de manera similar aad
/id
('d' para la cita 'doble'), pero eso me pareció menos intuitivo (buscaba la menor diferencia con respecto al funcionamiento normal).La única forma en que puedo pensar en envolverlos en solo dos objetos de texto sería escribir una función que verifique si hay otra cita fuera del primer conjunto y establecer los
aq
objetos de texto para llamar a eso.Nota : Hay otros problemas menores con estos:
ma2F`v2f'<cr>`a
), solo asegúrese de no usar uno que usa con frecuencia manualmente)Para concluir todo esto, esto es lo que personalmente agregaría a mi
.vimrc
para este problema:Como puede ver, opté por romper la funcionalidad normal
ca'
/ya"
/ etc. para no tener que aprender nuevos comandos para ellos, ya que de todos modos no estaría usando la funcionalidad normal dentro de LaTeX. Eso es solo una preferencia personal; No es difícil cambiar los nombres de los objetos. También agregué en la detección de tipo de archivo y las marcas.fuente
Esta es una vieja pregunta, pero para el beneficio de los futuros visitantes: me resulta más fácil cambiar las citas de látex con:
Y luego
This thing is "Foobar"!
funcionará bien en vim y latex.fuente
Enchufar
vim-sandwich
Otro complemento útil para esto es el
vim-sandwich
que ha definido un entorno específico para ftl`
ol'
para`text'
,l"
para``text''
yCon las asignaciones predeterminadas después del trabajo
`text'
concisl'
o si la detección automática de más cercana circundante está biencib
(por ejemplo cursor enh
en`a (phony) text'
requiere a prensavibibc
). Sin embargo, puede definir el siguiente objeto de texto adicionaliq
(ejemplo de 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"
Ahora simplemente presionandociq
ociQ
funciona.text
consaiwl'
apóstrofes individuales para obtener`text'
el patrón de la orden es
sa{motion/textobject}{surrounding}
y medios de invocación del operadoradd surrounding
sobreinner word
y tipo envolvente eslatex single quote
.sdl'
o consdb
srl'l"
o consrbl"
Es compatible
fuente