Definire l'oggetto di testo che dipende dall'operatore corrente


8

Sono curioso di sapere se è possibile rendere un oggetto di testo consapevole del suo operatore. In particolare, sto scrivendo un oggetto di testo per ambienti LaTeX, in cui desidero comportamenti diversi a seconda dell'operatore. Ad esempio, considera il seguente frammento di LaTeX:

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

Qui è più conveniente dieeliminare il contenuto in modo lineare, mentre cieelimina "Hello world", ma conserva il rientro, ovvero, dà

\begin{example}
  |
\end{example}

dov'è |il cursore.


1
Questo è normalmente controllato non da quale operatore viene utilizzato, ma definendo il movimento come lineare o no. Vuoi evitare di scrivere a operatori specifici in modo che il tuo oggetto di testo possa farlo anche con operatori personalizzati.
Tommaso,

Il punto è che voglio che il movimento sia lineare in alcuni casi, ma non in altri casi, a seconda dell'operatore utilizzato. Capisco che ciò possa sembrare incoerente, ma in questo caso particolare, penso che una tale differenziazione sia naturale.
Karl Yngve Lervåg,

Risposte:


5

L'esempio seguente si avvicina a quello che stai chiedendo:

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

Crea un textobject wche è aw, nel caso sia utilizzato dall'operatore di eliminazione, ovvero, dw= daw, o iwaltrimenti, ad esempio cw= ciw.


Grazie! La v:operatorvariabile era proprio quello che stavo cercando!
Karl Yngve Lervåg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.