Poprawne działanie klawiszy Home, End, Page-Up i Page-Down w Linuksie.
Niektóre dystrybucje Linuksa(na przykład Debian) nie mają domyślnie wyłączoną bądź niepoprawnie skonfigurowaną obsługę klawiszy Home, End, Page-Up i Page-Down i po ich wciśnięciu pojawiają się tylko jakieś dziwne znaczki(zwykle '~').
Można to w bardzo prosty sposób naprawić, plikiem odpowiedzialnym za te ustawienia jest /etc/inputrc, klawisze do akcji przypisujemy w tym pliku w postaci: "kod znaku": akcja. Aby dowiedzie się jakie kody znaków przypisane są do interesujących nas klawiszy wpisujemy polecenie: od -c, po czym wciskamy interesujące nas klawisze, a następnie ctrl+c aby zakończyć pobieranie kodów. W przypadku naciśnięcia po kolei klawiszy: Home, End, Page-Up i Page-Down, na moim laptopie wynik polecenia wygląda następująco:
[virhilo@hpek ~]$ od -c
^[[7~^[[8~^[[5~^[[6~^C
[virhilo@hpek ~]$
Gdy już znamy kody naszych znaków otwieramy do edycji plik /etc/inputrc i szukamy w nim linijki zaczynającej zawierającej interesujący nas kod znaku, jeśli taką znajdziemy po prostu ją dkomentowujemy usuwając '#' z początku linii. Jeśli jednak nie uda nam się odnaleźć odpowiednich linijek musimy dopisać je sami zgodnie z podaną przeze mnie powyżej składnią. Oto lista najbardziej interesujących akcji:
- beginning-of-line - przesuwa kursor na początek linii, czyli robi to co powinien robić klawisz Home
- end-of-line - przesuwa kursor na koniec linii(klawisz End)
- beginning-of-history - przechodzi na początek historii ostatnio wpisywanych poleceń, zwykle robi to klawisz Page-Up
- end-of-history - przechodzi na koniec listy ostatnio wykonywanych poleceń(klawisz Page-Down
- delete-char - klawisz Delete
Jak już zapiszemy zmiany w naszym pliku wystarczy się prze logować i można cieszyć się poprawnie działającymi klawiszami.
Listę pozostałych akcji można znaleźć wpisując man /etc/inputrc. Przykładowy zapis dla klawisza Home wygląda następująco:
"\e[1~": beginning-of-line
12 marca 2009 o 19:26:32
> Niektóre dystrybucje Linuksa(na przykład Debian) nie mają domyślnie wyłączoną bądź niepoprawnie skonfigurowaną obsługę klawiszy Home, End, Page-Up i Page-Down i po ich wciśnięciu pojawiają się tylko jakieś dziwne znaczki(zwykle '~').
Że co? Nigdy się z tym nie spotkałem :|
12 marca 2009 o 19:27:29
Można też zwyczajnie ctrl+v i [klawisz]. :) ZSH nie daje tak prostej obsługi tych klawiszy jak bash, po zmianie rxvt na gnome-terminal klawisze znów przestaną działać, itd. Na JakiLinux Gotar podsuną dobre rozwiązanie z tputem.. Cała "święta szóstka", z mojej konfiguracji:
bindkey "`tput khome`" beginning-of-line # HOME
bindkey "`tput kend`" end-of-line # END
bindkey "`tput kpp`" up-history # P-UP
bindkey "`tput knp`" down-history # P-DOWN
bindkey "`tput kdch1`" delete-char # DEL
bindkey "`tput kich1`" overwrite-mode # INS
12 marca 2009 o 20:40:35
@D4rky na moim domowym serwerze stoi Debian Lenny i przy logowaniu sie po SSH mialem taka 'niedogodnosc';)
@3ED ano ciekawe rozwiazanie:)
14 marca 2009 o 13:01:15
Problemem tutaj jest niezgodność klawiszy wysyłanych przez Twój emulator terminala i wpisani terminfo/termcap na hoście, na który się logujesz. I zwykle, co ciekawe, wina leży po stronie emulatora terminala. Na Debianie nigdy nie miałem tego typu problemów, za to przy logowaniu się z Gentoo+rxvt na inne dystrybucje - notorycznie. Dlatego uważam, że to wina wadliwych paczek na Gentoo. :]