vi / vim movimenti rapidi del buffer all'interno della finestra


11

Quando si utilizza :set wrapin vi / vim, il contenuto di un'intera linea avvolta viene posizionato nel buffer di visualizzazione quando si sposta il cursore in una nuova riga, anche durante la navigazione di un file tramite la riga di visualizzazione (gj / gk) anziché la riga reale (j /K). Ad esempio, se una linea è racchiusa in 5 linee dello schermo ed è attualmente al di fuori del buffer di visualizzazione, il buffer salterà di 5 linee durante la navigazione in questa linea per forzare l'intera linea a adattarsi allo schermo. C'è un modo per disabilitare questo comportamento? Si noti che set display+=lastlineconsentirà la visualizzazione di linee parziali quando una linea avvolta viene forzata fuori dallo schermo allontanandosi dalla linea, ma ciò non risolve i salti del buffer che si verificano quando si naviga in una linea inizialmente esterna al buffer.

Chiarimento: nel caso in cui la descrizione di cui sopra sia nebulosa, l'essenza è che vorrei poter scorrere senza intoppi con la linea abilitata in modo tale che le linee vengano visualizzate parzialmente dallo schermo anziché essere obbligatoriamente visualizzate nella loro interezza.


1
Potresti confermare che ciò che vuoi dire è: vuoi che parte della porzione di linea avvolta sia fuori dal display e sia in grado di scorrere senza intoppi? Vim mostra le battute interamente quando 'wrap'è acceso temo
Benoit l'

Precisamente. Presumo che non ci sia modo di ignorare questo comportamento di mostrare le linee avvolte nella loro interezza durante lo scorrimento? Grazie.
user001

1
Non che io sappia. Aspetta le risposte però, nessuno sa cosa può fare Vim.
Benoit,

1
d'accordo con @Benoit. Non è possibile per quanto ne so.
Fredrik Pihl l'

1
C'è attualmente una discussione sulla mailing list vim_dev su questo argomento. Sembra che tu non sia l'unico con questa richiesta.
Randy Morris,

Risposte:


1

Non una risposta completa, ma forse un vantaggio. C'è scrollun'opzione. Aiuto per quell'opzione legge, tra le altre cose:

{Vi è un po 'diverso:' scroll 'fornisce il numero di righe dello schermo invece delle righe del file, fa la differenza quando si avvolgono le righe}


Grazie, è utile. Le combinazioni di tasti <Ctrl-E> (giù) e <Ctrl-Y> (su) danno il comportamento di base che desidero. Se esiste un modo per rilevare se il cursore si trova sulla riga superiore o inferiore della finestra, una soluzione temporanea implicherebbe la mappatura condizionale dei tasti freccia su e giù su <Ctrl-Y> gk e <Ctrl-E> gj, rispettivamente. Quando il cursore non si trova sulla riga superiore o inferiore della finestra, è necessario mapparli su gk e gj (l'istruzione else nel condizionale). C'è un modo semplice per rilevare se il cursore si trova sulla riga superiore o inferiore della finestra corrente?
user001,

0

in modalità normale, è possibile saltare tra le parti visualizzate di una linea avvolta utilizzando gke gj( g<up>o g<down>). Questo wiki di Vim spiega come modificare il comportamento in modo permanente.


1
Certamente, e ho mappato quei comportamenti ai tasti freccia direzionali. Tuttavia, questo è diverso dalla visualizzazione obbligatoria dell'intera linea avvolta durante la navigazione verso quella linea. Questo comportamento è indipendente dall'uso di gj / gk o j / k. Vorrei essere in grado di navigare parzialmente in una linea inizialmente fuori dal buffer (fuori dallo schermo) senza che venga visualizzata l'intera linea spostata.
user001

OK, allora ho capito male. Beh, immagino che la tua linea sia chiusa o no. Quello che vorresti è qualcosa nel mezzo, ma penso che sia semplicemente impossibile.
jpjacobs,
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.