Jak skonfigurować ekran GNU, aby kółko przewijania myszy mogło się przewijać w buforze przewijania? Próbowałem o tym napisać w Google, ale większość trafień dotyczyła tego, jak zezwolić aplikacjom na ekranie na używanie kółka przewijania.
Jak skonfigurować ekran GNU, aby kółko przewijania myszy mogło się przewijać w buforze przewijania? Próbowałem o tym napisać w Google, ale większość trafień dotyczyła tego, jak zezwolić aplikacjom na ekranie na używanie kółka przewijania.
Odpowiedzi:
Wierzę, że możesz po prostu dodać taką linię do ~/.screenrc
:
termcapinfo xterm* ti@:te@
Gdzie „xterm *” jest globalnym dopasowaniem twojego obecnego TERM. Aby potwierdzić, że działa, ^ A ^ D, aby odłączyć się od ekranu, a następnie screen -d -r
ponownie podłączyć, a następnie ls
kilka razy i spróbować przewinąć do tyłu. Mi to pasuje.
Co to za magia? Cóż, zajrzyjmy na strony podręcznika.
screen(1)
mówi:
termcapinfo term terminal-tweaks [window-tweaks]
[..]
The first argument specifies which terminal(s) should be affected by this
definition. You can specify multiple terminal names by separating them with
`|'s. Use `*' to match all terminals and `vt*' to match all terminals that
begin with "vt".
[..]
Some examples:
termcap xterm* LP:hs@
Informs screen that all terminals that begin with `xterm' have firm
auto-margins that allow the last position on the screen to be updated (LP),
but they don't really have a status line (no 'hs' - append `@' to turn
entries off). Note that we assume `LP' for all terminal names that start
with "vt", but only if you don't specify a termcap command for that terminal.
Od termcap(5)
:
String capabilities
[..]
te End program that uses cursor motion
ti Begin program that uses cursor motion
Na ekranie musisz najpierw przejść do „trybu przewijania” (lub „trybu kopiowania”), aby móc przewijać w buforze przewijania: kombinacja klawiszy Ctrl- a Esclub Ctrl- a Ctrl- [. Następnie możesz przewijać historię za pomocą klawiszy strzałek w górę i w dół (lub Ctrl- b, Ctrl-, faby przenieść stronę).
W tym trybie kółko myszy powinno również działać, jeśli działa w innych aplikacjach. „Tryb przewijania” kończy się za pomocą Esc.
Jeśli chodzi o przewijanie bufora przewijania bez uprzedniego przejścia do trybu przewijania, prawdopodobnie nie jest to możliwe bez modyfikacji ekranu. Nigdy nie słyszałem o sposobie dostępu do bufora przewijania oprócz trybu przewijania.
Doskonały artykuł, o którym wspomina Jon Z, nie jest już dostępny, ale udało mi się wyłowić wersję tekstową z pamięci podręcznej Google. Zapisuję go tutaj na wypadek, gdyby Google również to porzucił. Oryginalny post został napisany przez Mikaela Ståldala, więc kredyt w miejscu, w którym należy się kredyt.
-
Jak używać kółka myszy w ekranie GNU
GNU Screen obsługuje przewijanie, ale domyślnie musisz używać niewygodnych klawiszy, aby z niego korzystać. Chciałbym móc przewijać Shift-PageUp, Shift-PageDown i kółko myszy, tak jak w Xterm.
Skonfigurowanie Screen nie było łatwe i wymaga współpracy z emulatorem terminala. Ale w końcu udało mi się znaleźć rozwiązanie, które działa całkiem dobrze. Dodaj to do pliku ~ / .Xresources (musisz się wylogować, aby to zadziałało):
XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
@Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
<Btn4Down>: string(0x1b) string("[5S") \n\
Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
@Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
<Btn5Down>: string(0x1b) string("[5T") \n\
Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
Shift <KeyPress> Next: string(0x1b) string("[25T") \n
Następnie dodaj to do pliku ~ / .screenrc:
defscrollback 1000
# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025
# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004
# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025
# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004
Działa to w Xterm. Nie jestem pewien, czy to działa w innych emulatorach terminali.
Pamiętaj, że wyłącza to normalną obsługę przewijania w Xterm, przewijanie będzie możliwe tylko podczas korzystania z Screen. Możesz uruchomić Xterm w ten sposób, aby zawsze używać Screen:
xterm -e screen
W przypadku OS X (Snow Leopard) działało dla mnie:
http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/
W skrócie, polega to na dodaniu do ~ / .screenrc na zdalnym hoście (tego, na którym uruchamiasz ekran):
defscrollback 5000
termcapinfo xterm* ti@:te@
Aby użyć kółka przewijania w VIM-ie na ekranie GNU:
[.vimrc]
set mouse=a " hold shift to copy xterm
set ttymouse=xterm2 " necessary for gnu screen & mouse
Naciśnij Ctrl+, aa następnie[
Pasek tytułowy twojego terminala powinien teraz mówić tryb kopiowania.
Teraz klawisze strzałek i kółko myszy powinny działać zgodnie z oczekiwaniami.
Aby wrócić do normalnego trybu, naciśnij klawisz Esc lub naciśnij kilka razy klawisz Enter.
Działa także ustawienie TERM
zmiennej na vt100
zamiast xterm
przed uruchomieniem ekranu.
Używam tego od dłuższego czasu, działa jak urok.
Dodaj to do .bashrc
:
# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
export TERM=vt100
fi
-
Dla porównania, mój .screenrc
ma to (nie potrzebne dla tego AFAIK):
# Extend the vt100 desciption by some sequences.
termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
Następujące działały dla mnie zarówno w Cygwin, jak i Putty: Edytuj .screenrc i dodaj
terminfo xterm* ti=:te=
Jeśli powyższe odpowiedzi nie działają, upewnij się, że nie masz podpisu ani opcji alwayslastline w twoim .screenrc. Jeśli je masz, to nie zadziała:
termcapinfo xterm* ti@:te@
Jeśli potrzebujesz tych informacji, możesz spróbować ustawić je w tytule terminala (za pomocą termcapinfo
)
Rozwiązanie w przypadku korzystania z „Ubuntu 16.04.2 LTS” jest następujące:
za). Zaktualizuj $ HOME / .screenrc zgodnie z wcześniejszymi odpowiedziami:
termcapinfo xterm* ti@:te@
b). Użyj „Ustawienia”. „Preferowane aplikacje”, aby zmienić domyślny terminal na xterm, wybierając „X Terminal” z rozwijanej listy.
Niektóre zbędne notatki
Żaden z innych terminali, w tym instalacja „lxterminal”, nie działał dla mnie, nawet gdy zmieniłem linię termcapinfo na „*” zamiast „xterm *”.
Klikając przycisk menu w lewym górnym rogu ekranu, możesz wyświetlić okno dialogowe Ustawienia, używając trzeciej ikony z prawego dolnego rogu.