... i doprowadza mnie to do szaleństwa.
Zasadniczo (dzieje się to w ciągu ostatnich kilku miesięcy) loguję się na kilka różnych serwerów CentOS (jeden Linode, drugi VPS i host współdzielony, do którego mam dostęp do powłoki), działając z wersji 5.5, 5.7 i 6 z mojego Komputer Mac z systemem OS X Lion i terminalem.
Gruntownie:
$ ssh [email protected]
[remote-host] $ nano somefile.txt
Gdy zacznę edytować plik, jeśli używam klawiszy strzałek, aby poruszać się po kursorze, lub zaczynam usuwać, a następnie pisać ponownie, kursor przeskakuje nieco, a jeśli zapiszę plik i otworzę go ponownie, to oczywiste, że kursor był , w rzeczywistości skacząc po całym szeregu bez wyraźnego powodu.
W końcu dostaję takie słowa, jak „To jest nowy tekst”. Kiedy wpisałem (do zwariowanego edytora) „To jest wiersz tekstu”.
Jest to duży problem, jeśli chodzi o edycję plików konfiguracyjnych, ponieważ często muszę edytować jedną linię, zapisywać i zamykać, a następnie ponownie otwierać, aby upewnić się, że linia jest poprawna ... a następnie edytować inną linię ... i robi się to dość denerwujące .
Znalazłem problemy z renderowaniem Linima Lisha Shell Vima i Nano: linie nie pojawiają się / pozycje kursora są nieprawidłowe , ale nie wiem, czy to wiele dotyczy, ponieważ dotyczy to w szczególności Lisha.
Odpowiedzi:
[ Aktualizacja: Począwszy od Mac OS X Mountain Lion 10.8, Terminal obsługuje sekwencję ucieczki Backtab, eliminując ten problem.]
Wersja (s?) Nano na tych serwerach czasami wysyła sekwencję Backtab (ESC [Z) podczas przesuwania kursora w lewo o jeden znak, ale Terminal nie obsługuje tej sekwencji, więc nano uważa, że kursor się poruszył, gdy nie ma ' t, a jego idea dotycząca bieżącej pozycji kursora nie jest zsynchronizowana z terminalem.
Z powodów, których nie mogę pojąć, nano wysyła Tabelę Wsteczną, gdy przesuwa się w lewo, a kursor jest jednym znakiem po prawej stronie tabulatora. Podobnie, IIRC, wysyła Tab (Control-I), gdy przesuwa się w prawo, a kursor jest jednym znakiem po lewej stronie tabulatora. Nie wiem, dlaczego robi to wokół tabulatorów zamiast zawsze przesuwać się w lewo / prawo przy użyciu tych samych sekwencji znaków. Wersja nano dostarczana z systemem Mac OS X Lion 10.7 tego nie robi.
Nano robi to tylko wtedy, gdy terminfo mówi, że funkcja
cbt
jest obsługiwana. Domyślne terminfo dla Terminala toxterm-256color
, które deklaruje tę możliwość i mapuje ją do sekwencji Backtab. Obejściem tego problemu jest ustawienieTERM
zmiennej środowiskowej na coś, co nie deklaruje tej możliwości. Możesz to zrobić na komputerze lokalnym przed wywołaniemssh
lub w pliku startowym powłoki na zdalnym hoście. Ustawienie tej wartościxterm-color
spowoduje, że będzie to szczypta, chociaż nie jest to zalecane, ponieważ wyłącza inne ważne zachowania (np. 256 kolorów, BCE, alternatywne zachowanie zawartości ekranu). (Bardziej ciężkim podejściem jest dostosowanie plikuxterm-256color
(lubxterm
) terminfo na zdalnym hoście do usunięciacbt
.)Zalecane jest dostosowanie hosta zdalnego (w taki czy inny sposób), więc dostosowania nie mają zastosowania lokalnie ani do innych hostów zdalnych, ale najprostszym obejściem jest zmiana ustawienia preferencji terminala, które należy zastosować
xterm-color
zamiastxterm-256color
:Zalecam zduplikowanie istniejącego profilu ustawień, dostosowanie go i używanie go tylko podczas łączenia się z tymi zdalnymi hostami.
źródło
cbt=\E[Z
wpis z.ti
pliku źródłowego.Miałem ten sam problem. Znalazłem ten wątek, który zalecał między innymi zmienną środowiskową na zdalnym serwerze:
Dodanie tego do ~ / .bash_profile rozwiązało problem. To rozwiązanie jest proste i ma tę zaletę, że wpływa tylko na konkretnego użytkownika na określonym hoście.
źródło
Miałem ten sam problem w programie MobaXTerm. Przyczyną problemu był klawisz -K, którego użyłem, aby włączyć NumPada w Nano podczas korzystania z PuTTY. Jak się dowiedziałem w MobaXTerm -K nie jest potrzebne (numpad działa domyślnie) i bez niego klawisze strzałek działają poprawnie i nie wstawiają śmieci losowo.
źródło
OSX 10.7.4 z systemem Centos działającym jako system operacyjny gościa
W ramach preferencji terminala OSX, ustawień, zaawansowane
Nigdy więcej problemów :)
źródło
Dla użytkowników MobaXterm. Jeśli nie używasz -K i nadal występuje problem. Upewnij się, że poniższe wiersze są zakomentowane w pliku / etc / nanorc.
# set rebinddelete
# set rebindkeypad
źródło
Prawdopodobnym problemem jest to, że tak, zarówno lokalna maszyna, jak i serwer SĄ na systemach unix z nano, ale te wersje nano mogą być inne.
źródło
Jeśli otrzymujesz „To jest nowy tekst” i wpisałeś „To jest wiersz tekstu” (muszę założyć, że twój raport jest poprawny), masz niestabilny klawisz „kontrolny”, cokolwiek jest na Macu (polecenie ? jabłko?). Ponieważ nano używa klawiszy Control + do „przeskakiwania”, a ty masz mniej znaków niż wpisane, więc mamy a) znaki znikające b) sekwencje kontrolne pojawiające się z niczego, co powoduje, że a) staje się b) jest logiczne.
Możesz także mieć jakiś wstrętny skrót klawiszowy / program makro / whatnot. Podejrzewam, że należy to do superużytkownika, a nie do błędu serwera, ale utrzymam flagowanie, może ktoś ma realistyczną odpowiedź związaną z SSH.
źródło