Come disabilitare lo scorrimento orizzontale
Ho scritto una soluzione che disabilita lo scorrimento orizzontale, ( sfogliando il suggerimento di @ ЯрославРахматуллин ), ma non credo che ti piacerà:
augroup NoScrollPlease
autocmd!
autocmd CursorMoved * norm!99zH
augroup END
Ciò impedisce di scorrere verso destra con il metodo incredibilmente preciso di tornare indietro di nuovo. *
* Poiché non so fino a che punto hai scorrere verso destra o quanto sono lunghe le tue linee, sto scorrendo la quantità arbitrariamente "lontana" di 99 larghezze a metà schermo. Nota anche che non mi preoccupo di verificare se hai effettivamente fatto scorrere verso destra o meno prima di scorrere "indietro" a sinistra. Se intendi effettivamente utilizzare questa soluzione, potresti voler rovinare qualcosa confrontando i valori di getcurpos()
, 'sidescroll'
e 'columns'
.
Perché non vorrai farlo
Il motivo per cui non lo utilizzerai è che il problema di scorrimento è alla base di un altro problema: Vim non ti consente di spostare il cursore "fuori dallo schermo". Pertanto, se si scorre verso sinistra in modo tale che il cursore si spenga dallo schermo dopo lo scorrimento, Vim porta con sé il cursore e lo sposta a sinistra.
Ma poiché il calcolo utilizzato per stabilire se il cursore si trova sullo schermo è uguale a quello utilizzato per decidere se scorrere il problema originale, l'effetto netto è che con questa "soluzione" in atto, se si tenta di spostare il cursore a destra in una situazione che normalmente causerebbe uno scorrimento laterale, ora il cursore si rifiuta di spostarsi affatto. **
** Per essere leggermente più preciso, a seconda della posizione corrente e del movimento, il cursore può spostarsi verso destra; semplicemente non si sposterà oltre la posizione in cui si verificherebbe normalmente uno scorrimento.
Altre opzioni?
Quindi temo che la tua soluzione pianificata non finirà. Se si desidera una soluzione praticabile al problema generale, sarà necessario implementarlo nel codice sorgente di Vim.
Come hai già notato , è improbabile che arrivi presto, quindi temo che la tua migliore scommessa per una soluzione all'istanza specifica del problema mostrato nella tua gif sia di chiedere all'autore del plug-in di smettere di usare conceal
interamente e invece rimuove completamente il testo nascosto dal buffer.
Sulla base dell'output non nascosto e della menzione vim-plugin-AnsiEsc
nella documentazione questo potrebbe essere qualcosa che è possibile implementare per loro, ma è difficile dirlo senza sapere come funzionano i plugin.
:set wrap