vi / vim abrumpt ruchy bufora w oknie


11

Podczas korzystania :set wrapz vi / vim zawartość całej owiniętej linii jest umieszczana w buforze wyświetlania po przeniesieniu kursora do nowej linii, nawet podczas nawigacji po pliku przez linię wyświetlania (gj / gk) w przeciwieństwie do linii rzeczywistej (j / k). Na przykład, jeśli linia jest owinięta ponad 5 liniami ekranu i obecnie znajduje się poza buforem wyświetlacza, bufor przeskoczy o 5 linii podczas nawigacji do tej linii, aby wymusić dopasowanie całej linii na ekranie. Czy istnieje sposób na wyłączenie tego zachowania? Zauważ, że set display+=lastlinepozwoli na wyświetlenie częściowych linii, gdy owinięta linia zostanie wypchnięta z ekranu poprzez nawigację od linii, ale to nie rozwiąże przeskoków bufora, które występują podczas nawigacji do linii, która początkowo znajdowała się poza buforem.

Wyjaśnienie: W przypadku, gdy powyższy opis jest mglisty, chodzi przede wszystkim o to, że chciałbym móc płynnie przewijać w vimie z włączonym zawijaniem linii, tak aby linie były częściowo wyświetlane poza ekranem, a nie obligatoryjnie wyświetlane w całości.


1
Czy możesz potwierdzić, że masz na myśli: chcesz, aby część zawiniętej części linii była poza wyświetlaniem i była w stanie płynnie przewijać? Vim pokazuje linie całkowicie, kiedy 'wrap'jest włączony, obawiam się
— Benoit

Dokładnie. Rozumiem, że nie ma sposobu, aby pominąć to zachowanie pokazujące zawinięte linie w całości podczas przewijania? Dziękuję Ci.
— user001

1
Nie to co wiem. Poczekaj na odpowiedzi, nikt nie wie, co potrafi Vim.
— Benoit,

1
zgadzam się z @Benoit. O ile mi wiadomo, nie jest to możliwe.
— Fredrik Pihl,

1
Obecnie trwa dyskusja na liście mailingowej vim_dev na ten temat. Wygląda na to, że nie tylko ty masz tę prośbę.
— Randy Morris,

Odpowiedzi:


1

Nie jest to kompletna odpowiedź, ale może trop. Jest scrollopcja. Pomoc dla tej opcji brzmi między innymi:

{Vi jest trochę inna: „przewijanie” podaje liczbę linii ekranu zamiast linii pliku, robi różnicę, gdy linie się zawijają}


Dzięki, to jest pomocne. Kombinacje klawiszy <Ctrl-E> (w dół) i <Ctrl-Y> (w górę) dają podstawowe zachowanie, którego chcę. Jeśli istnieje sposób na wykrycie, czy kursor znajduje się w górnej lub dolnej linii okna, wówczas rozwiązanie tymczasowe wymagałoby warunkowego mapowania klawiszy strzałek w górę i w dół na <Ctrl-Y> gk i <Ctrl-E> gj, odpowiednio. Gdy kursor nie znajduje się w górnej lub dolnej linii okna, konieczne jest mapowanie ich na gk i gj (instrukcja else w warunkowym). Czy istnieje prosty sposób na wykrycie, czy kursor znajduje się w górnej czy dolnej linii bieżącego okna?
— user001

0

w trybie normalnym możesz przeskakiwać między wyświetlanymi częściami owiniętej linii za pomocą gki gj( g<up>lub g<down>). Ta strona vim wyjaśnia, jak trwale zmienić zachowanie.


1
Oczywiście i odwzorowałem te zachowania na klawisze strzałek kierunkowych. Różni się to jednak od obowiązkowego wyświetlania całej owiniętej linii po przejściu do tej linii. To zachowanie jest niezależne od użycia gj / gk lub j / k. Chciałbym móc częściowo nawigować do linii, która początkowo jest poza buforem (poza ekranem) bez wyświetlania całej owiniętej linii.
— user001

OK, więc źle zrozumiałem. Cóż, myślę, że twoja linia jest albo owinięta, albo nie. To, czego chcesz, to coś pośredniego, ale myślę, że to po prostu niemożliwe.
— jpjacobs,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.