Jak sprawić, by Vim zawsze wyświetlał kilka linii po EOF?

15

W Vimie nie podoba mi się, jak po osiągnięciu końca pliku umieszcza ostatnią linię na dole ekranu.

Czy w ogóle istnieje możliwość, aby ostatnia linia znajdowała się około 10 linii nad dolną częścią ekranu i po prostu tworzyła puste linie pod nią?

Miguel Vera
źródło
2
Gdy kursor dojdzie do ostatniego wiersza pliku, naciśnięcie zzgo przerysuje ekran i ustawi bieżącą linię na środku okna, która powinna wyświetlać kilka ~linii po EOF.
user9433424
tak, ale jeśli ponownie poruszysz kursorem, ponownie ustawisz go na dole.
Miguel Vera,
3
Wygląda na to, że masz scrolloffustawioną opcję. Spróbuj, :set scrolloff=0a to zachowanie powinno się zmienić.
Tumbler41
1
Możesz przeczytać swoją odpowiedź tutaj: stackoverflow.com/questions/7406814/... Istnieje więcej odpowiedzi na to pytanie, w zasadzie nie jest to możliwe, tylko z obejściami.
Mike
Rzeczywiście zachowanie zostało poprawione! dziękuję
Miguel Vera,

Odpowiedzi:

16

Możesz użyć, ctrlEaby przewinąć plik w dół, gdy znajdziesz się na końcu pliku, doda on linię „wirtualną”, dzięki czemu ostatni wiersz pliku nie będzie na dole okna.

Dodatkowo możesz użyć opcji, scrolloffaby zawsze pozwalać niektórym wierszom za kursorem, dodać to do .vimrc:

set scrolloff=10

Aby uzyskać więcej informacji, patrz :h 'scrolloff'i :h CTRL-E.

statox
źródło
1
Niestety, ustawienie scrolloffna 10 nadal nie pokaże linii PO EOF, tak jak chciał PO.
Tumbler41
Rzeczywiście, dlatego zasugerował użycie CTRL-Ei scrolloffwłaśnie „dodatkowe”. Teraz jest to rozwiązanie częściowe, OP może go nie zaakceptować, ponieważ nie do końca odpowiada na pytanie.
statox
1
Chociaż jest to tylko częściowe rozwiązanie, myślę, że CTRL-Etego właśnie szukałem. Bardzo bym chciał, gdyby istniał sposób automatycznego wyświetlania linii po EOF.
Miguel Vera,
@Miguel Cieszę się, że pasuje do twoich potrzeb. Myślę, że można stworzyć mapowanie, które będzie wywoływane <C-e>podczas przewijania w dół, ale tak naprawdę nie jestem pewien, czy zadziałałoby poprawnie ... Spróbuję zobaczyć, co można zrobić, ale nie jestem pewien Będę mógł stworzyć coś wygodnego.
statox
2

Moim zdaniem najłatwiejszym rozwiązaniem było dodanie zzdo ji k. Ma główny efekt uboczny centrowania kursora. Nie przeszkadza mi to i wolę to od wyciągania szyi. Próbowałem scrolloffi CTRL-Ejest po prostu niewygodnie.

Wpisz następujące polecenie w :lub .vimrc

nnoremap j jzz

nnoremap k kzz

Źródło: http://vim.wikia.com/wiki/Keep_your_cursor_centered_vertically_on_the_screen

Carlos Vigil
źródło