... и это сводит меня с ума.
В основном (это происходило последние пару месяцев) я вхожу на несколько разных серверов CentOS (один Linode, другой VPS и общий хост, к которому у меня есть доступ к оболочке), используя 5.5, 5.7 и 6, с моего Mac под управлением OS X Lion, используя Терминал.
В принципе:
$ ssh username@example.com
[remote-host] $ nano somefile.txt
Как только я начинаю редактировать файл, если я использую клавиши со стрелками для перемещения вокруг курсора или начинаю удаление, а затем снова набираю, курсор немного прыгает, и если я сохраню файл и снова его открою, очевидно, что курсор былФактически, прыгает повсюду на линии без видимой причины.
В итоге я получаю что-то вроде «Это новый текст». Когда я набрал (в редакторе с безумным курсором) «Это строка текста».
Когда дело доходит до редактирования файлов конфигурации, это большая проблема, потому что мне часто приходится редактировать одну строку, сохранять и закрывать, а затем снова открывать, чтобы убедиться, что эта строка правильная ... затем редактировать другую строку ... и это становится довольно раздражающим .
я нашел Проблемы с рендерингом Linode Lish Shell Vim и Nano: строки не отображаются / неправильное положение курсора, но я не знаю, имеет ли это отношение к делу, так как это относится конкретно к лиш.
[Обновить: Начиная с Mac OS X Mountain Lion 10.8, Терминал поддерживает escape-последовательность Backtab, устраняя эту проблему.]
Версия (ы) nano на этих серверах иногда отправляет последовательность Backtab (ESC [Z) при перемещении курсора влево на один символ, но Терминал не поддерживает эту последовательность, поэтому nano считает, что курсор переместился, когда он остановился. t и его представление о текущей позиции курсора не синхронизируется с терминалом.
По причинам, которые я не могу понять, nano отправляет Backtab при движении влево, а курсор находится на один символ справа от позиции табуляции. Точно так же IIRC отправляет табуляцию (Control-I) при движении вправо, а курсор находится на один символ слева от позиции табуляции. Я не знаю, почему он делает это вокруг позиций табуляции вместо того, чтобы всегда перемещаться влево / вправо с использованием одинаковых последовательностей символов. Версия nano, поставляемая с Mac OS X Lion 10.7, этого не делает.
Nano делает это только тогда, когда terminfo сообщает cbt
возможность поддерживается. По умолчанию terminfo для Терминала xterm-256color
, который объявляет эту возможность и сопоставляет ее с последовательностью Backtab. Обходной путь - установить TERM
переменная среды на то, что не объявляет эту возможность. Вы можете сделать это на локальном компьютере перед вызовом ssh
или в файле запуска оболочки на удаленном хосте. Установив его на xterm-color
в крайнем случае подойдет, хотя это не рекомендуется, так как отключает другие важные функции (например, 256 цветов, BCE, альтернативное сохранение содержимого экрана). (Более тяжелый подход - настроить ваш xterm-256color
(или xterm
) terminfo файл на удаленном хосте для удаления cbt
.)
Рекомендуется настроить удаленный хост (так или иначе), поэтому настройки не применяются локально или к другим удаленным хостам, но самый простой обходной путь - изменить параметр предпочтения терминала для использования xterm-color
вместо того xterm-256color
:
Терминал> Настройки> Настройки> [профиль]> Дополнительно> Объявить терминал как:
Я рекомендую продублировать существующий профиль настроек, настроить его и использовать только при подключении к этим удаленным хостам.
У меня была такая же проблема. я нашел эта тема который рекомендовал, среди других решений, переменную среды на удаленном сервере:
export TERM=xterm-color
Добавление этого в ~ / .bash_profile решило проблему для меня. Это простое решение, которое влияет только на конкретного пользователя на определенном хосте.
У меня была такая же проблема в программе MobaXTerm. Причиной проблемы был ключ -K, который я использовал для включения цифровой клавиатуры в Nano при использовании PuTTY. Как я выяснил в MobaXTerm, -K не нужен (цифровая клавиатура работает по умолчанию), и без него клавиши со стрелками работают правильно и не вставляют мусор случайным образом.
OSX 10.7.4 с Centos, работающей в качестве гостевой ОС
В настройках терминала OSX, расширенных настройках
Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!
Больше никаких проблем :)
Для пользователей MobaXterm. Если вы не используете -K и проблема не исчезла. Убедитесь, что следующие строки закомментированы в вашем файле / etc / nanorc.
# set rebinddelete
# установить rebindkeypad
Вероятная проблема в том, что да, и ваш локальный компьютер, и ваш сервер находятся в системах unix, в которых есть nano, но эти версии nano могут отличаться.
export TERM=xterm-color
Если вы получили «Это новый текст» и набрали «Это строка текста» (я должен предположить, что ваш отчет верен), то у вас есть нестабильная клавиша «управления», независимо от того, что она есть на Mac (команда ? яблоко?). Поскольку nano использует клавиши control + для «прыжков», а у вас меньше символов, чем набрано, у нас есть а) исчезающие символы б) управляющие последовательности, появляющиеся из ничего, логично вывести, что а) становится б).
У вас также может быть какая-то неприятная программа для горячих клавиш / макросов / еще чего-то. Я подозреваю, что это относится к суперпользователю, а не к серверу, но я буду отмечать, возможно, у кого-то есть реалистичный ответ, связанный с SSH.