cursor-motions – ¿Regiones rectangulares como objetos de texto?

Pregunta:

¿Es posible definir un objeto de texto en vim que actuará en una región rectangular?

Por ejemplo, supongamos que tengo columnas de texto alineadas verticalmente, como esta:

column 1 co    column 2 col
lumn 1 colu    umn 2 column
mn 1 column    2 column 2 c
1 column 1     olumn 2 colu

¿Sería posible definir un objeto de texto c para columnas, de modo que dac eliminaría una columna, yac quitaría, cac cambiaría, y así sucesivamente?

(Conozco Control-V para seleccionar una región rectangular, y sé que luego puede usar d , y , etc. para eliminar, tirar, etc. de la región seleccionada. Pero tengo curiosidad específicamente sobre lo que es posible usar objetos de texto).

Respuesta:

Si, esto es posible. @PeterRincker sugiere el complemento textobj-word-column , que define cuatro objetos de texto ( ic , ac , iC y aC ) para columnas basadas en palabras.

La idea detrás de esta funcionalidad es crear una función que defina un movimiento basado en columnas, y luego mapear esta función apropiadamente a mapeos de modo visual / de selección y mapeos pendientes de operador. Para usar el complemento mencionado anteriormente como ejemplo, crea las siguientes asignaciones:

xnoremap <silent> ac :<C-u>call TextObjWordBasedColumn("aw")<cr>
xnoremap <silent> aC :<C-u>call TextObjWordBasedColumn("aW")<cr>
xnoremap <silent> ic :<C-u>call TextObjWordBasedColumn("iw")<cr>
xnoremap <silent> iC :<C-u>call TextObjWordBasedColumn("iW")<cr>
onoremap <silent> ac :call TextObjWordBasedColumn("aw")<cr>
onoremap <silent> aC :call TextObjWordBasedColumn("aW")<cr>
onoremap <silent> ic :call TextObjWordBasedColumn("iw")<cr>
onoremap <silent> iC :call TextObjWordBasedColumn("iW")<cr>

Aquí, TextObjWordBasedColumn(...) define el movimiento de la columna y se asigna al modo visual / de selección con xnoremap y al modo de operador pendiente con onoremap . Tenga en cuenta que la función es un poco compleja para manejar la indención y encontrar los límites de movimiento apropiados.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım