Definir objeto de texto que depende del operador actual


8

Tengo curiosidad por saber si es posible hacer que un objeto de texto sea consciente de su operador. En particular, estoy escribiendo un objeto de texto para entornos LaTeX, donde quiero un comportamiento diferente según el operador. Por ejemplo, considere el siguiente fragmento de LaTeX:

\begin{example}
  Hello world
\end{example}

Aquí es más conveniente dieeliminar el contenido de forma lineal, mientras que cieelimina "Hola mundo", pero conserva la sangría, es decir, da

\begin{example}
  |
\end{example}

donde |esta el cursor


1
Normalmente, esto no se controla mediante el operador que se usa, sino definiendo el movimiento como lineal o no. Desea evitar escribir en operadores específicos para que su objeto de texto también pueda funcionar bien con operadores personalizados.
tommcdo

El punto es que quiero que el movimiento sea en línea en algunos casos, pero no en otros casos, dependiendo del operador que se use. Entiendo que esto puede parecer inconsistente, pero en este caso particular, creo que esa diferenciación es natural.
Karl Yngve Lervåg

Respuestas:


5

El siguiente ejemplo se acerca a lo que está pidiendo:

onoremap <expr> w '<esc>' . v:operator . v:count1 . (v:operator ==# 'd' ? 'aw' : 'iw')

Crea un objeto de texto wque es aw, en caso de que lo utilice el operador de eliminación, es decir, dw= daw, o de lo iwcontrario, por ejemplo cw= ciw.


¡Gracias! ¡La v:operatorvariable era justo lo que estaba buscando!
Karl Yngve Lervåg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.