Czy jest jakiś sposób, aby less
program powtarzał pierwszy wiersz (lub pierwsze 2 wiersze) na każdej wyświetlanej stronie?
Czy jest jakiś inny program pager, który może to zrobić?
Byłby to killer-app do przeglądania tabeli bazy danych, myśleć mysql
lub psql
czy gqlplus
...
Zobacz zrzut ekranu na dole tej strony . Chcę powtórzyć linię nagłówka + poziomy pasek ascii.
command-line
less
pager
filiprem
źródło
źródło
Odpowiedzi:
Istnieje rozwiązanie wykorzystujące Vima.
Po pierwsze potrzebujesz makra Vima, które wykona większość pracy. Zapisz w
~/.vim/plugin/less.vim
:Po drugie, aby emulować pager, musisz wywołać vim, aby:
Złożyłem to jako skrypt pomocniczy w
~/bin/vimpager
:Spraw, aby skrypt był wykonywalny za pomocą
chmod +x ~/bin/vimpager
.Po trzecie, musisz zastąpić program pager dla psql. Nie ustawiaj zmiennej
PAGER
globalnie, ponieważ może to wpływać na inne programy, nie tylko psql. Zamiast tego dodaj to do~/.psqlrc
pliku:Voila ! Po przeładunku swój profil, można cieszyć się wynik, który powinien zachowywać się zgodnie z oczekiwaniami (strzałek przeglądania zarówno pionowo i poziomo) i wyglądać tak: . Dodatkowo, cała moc Vima jest tam, gdzie jej potrzebujesz.
źródło
Czy próbowałeś Trybu SQL w Emacs / XEmacs?
Z pewnością nie jest tak prosty w użyciu jak
more
lubless
, ale robi to, o co prosisz, pozostawiając wiersz nagłówka podczas przewijania wyników w pionie i poziomie.źródło
Pożycza to bardzo mocno od przyjętej odpowiedzi, ale dodaje ...
NULL
prawda / fałsz (i T / F, T / N, tak / nie)Niektóre porcje mogą wymagać dostosowania do konkretnych wyników, ponieważ nie używam
psql
. Mam również nieco inne funkcje pomocnicze dla moich celów, ale są one podobne do tych w zaakceptowanej odpowiedzi.Przykładowe dane wejściowe
Kod
źródło
Możesz użyć wielu „regionów” w
screen
:Następnie wystarczy ustawić zmienną środowiskową $ FILE:
źródło
fit
polecenia screen). Myślałem, że nie chcesz, aby góra się przewijała. Kiedy przetestowałem to sam, oba okna przewijają się tak, jak powinny. Góra przewija dwie linie (1-2, 3-4, 5-6 itp.), A dolna przewija w razie potrzeby. Jakie jest zachowanie, które widzisz /Możesz dodać liczbę przed „naprzód”, a przewinie ona N wierszy, a nie pełnej długości. Jeśli więc okno terminala ma 40 linii, wpisz,
38f
aby rozpocząć przewijanie tylko 38 linii, pozostawiając 2 ostatnie linie z ostatniej „strony”. Z strony podręcznika:źródło
screen
lub,tmux
aby utworzyć dwa panele, zmień rozmiar pierwszej z dwóch linii (resize 2
), a następnie uruchomless
w drugim okienku, uruchomless
normalnie. Możesz ustawić to jako skrypt z określonym plikiem .screenrc. Zobacz alternatywną odpowiedź.