Символи SSH вбрання в vim / nano на віддаленому сервері


18

... і це мене зводить з розуму.

В основному (це траплялося протягом останніх кількох місяців), я входжу в декілька різних серверів 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: рядки не відображаються / позиції курсору неправильно , але я не знаю, чи багато це стосується, оскільки це конкретно стосується лиша.


1
Привіт @geerlingguy, я відповів на це запитання років тому, коли твоє ім’я для мене нічого не означало, але зараз я регулярно використовую твою роботу. Дякуємо за всі ваші відповідальні внески!
dbenton

1
@dbenton - Я допомагаю тобі, ти допомагаєш мені, ми щаслива спільнота :)
geerlingguy

Відповіді:


14

[ Оновлення: Станом на Mac OS X Mountain Lion 10.8, Terminal підтримує послідовність втечі Backtab, усуваючи цю проблему.]

Версія (s?) Nano на цих серверах іноді надсилає послідовність Backtab (ESC [Z) при переміщенні курсору, залишеного одним символом, але термінал не підтримує цю послідовність, тому nano вважає, що курсор перемістився, коли він не має ' t і його уявлення про поточне положення курсору не синхронізовано з терміналом.

Через те, що я не можу зрозуміти, nano надсилає Backtab, коли рухається ліворуч, а курсор - один символ праворуч від зупинки вкладки. Аналогічно, IIRC, він надсилає Tab (Control-I) при русі праворуч, а курсор - один символ ліворуч від зупинки вкладки. Я не знаю, чому це робиться навколо вкладки, зупиняється замість того, щоб завжди рухатися вліво / вправо, використовуючи ті самі послідовності символів. Версія нано, що постачається з Mac OS X Lion 10.7, не робить цього.

Nano робить це лише тоді, коли terminfo каже, що cbtможливість підтримується. Термінал за замовчуванням для терміналу є xterm-256color, який оголошує цю можливість і відображає її в послідовності Backtab. Вирішення проблеми полягає в тому, щоб встановити TERMзмінну середовища на щось, що не декларує цю можливість. Це можна зробити на локальній машині перед викликом sshабо у файлі запуску оболонки на віддаленому хості. Встановити його можна xterm-colorлише в крайньому випадку, хоча це не рекомендується, оскільки він відключає інші важливі форми поведінки (наприклад, 256 кольорів, BCE, альтернативне збереження вмісту екрана). (Більш важкий підхід полягає в налаштуванні файлу xterm-256color(або xterm) терміналу на віддаленому хості для видалення cbt.)

Рекомендується налаштовувати віддалений хост (так чи інакше), тому налаштування не застосовується локально або до інших віддалених хостів, але найпростішим способом вирішення є зміна налаштування параметрів терміналу для використання xterm-colorзамість xterm-256color:

Термінал> Налаштування> Налаштування> [профіль]> Додатково> Оголосити термінал як:

Я рекомендую дублювати існуючий профіль налаштувань, налаштовувати його та використовувати його лише під час підключення до цих віддалених хостів.


Налаштування xterm-кольору безумовно працює - ви могли б детальніше розказати, як налаштувати мій файл terminfo на віддаленому хості? Посилання могло б зробити, але я, мабуть, раз у раз повертаюся до цієї публікації, щоб згадати цю пораду :)
geerlingguy

1
@geerlingguy Змінення існуючого визначення терміна . Видаліть cbt=\E[Zзапис у .tiвихідному файлі.
TachyonVortex

Це допомогло мені, я встановив параметр від xterm-256color до xterm, і тепер я можу вибирати, копіювати і т. Д., Як раніше. (Я не знаю, як чи хто змінив цей варіант). Спасибі!
космодром

8

У мене була ця сама проблема. Я знайшов цю тему, яка рекомендувала серед інших рішень змінну середовища на віддаленому сервері:

export TERM=xterm-color

Додавання цього до ~ / .bash_profile вирішило проблему для мене. Це рішення є простим і має перевагу лише впливати на конкретного користувача на певному хості.


2

У мене була така ж проблема в програмі MobaXTerm. Причиною проблеми була клавіша -K, яку я використовував для включення numpad в Nano під час використання PuTTY. Як я з'ясував, в MobaXTerm -K не потрібен (numpad працює за замовчуванням), і без нього клавіші зі стрілками працюють правильно і не вставляють сміття випадковим чином.


1

OSX 10.7.4 з Centos працює як гостьова ОС

В межах налаштувань терміналу OSX, налаштування, розширені

Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!

Більше питань немає :)


Зауважте, що уподобання "поведінка клавіатури VT-100" повністю не пов'язане з цим запитанням і не впливає на результат.
Кріс Пейдж

1

Для користувачів MobaXterm. Якщо ви не використовуєте -K і все ще відчуваєте проблему. Переконайтеся, що наступні рядки коментуються у вашому / etc / nanorc файлі.

# встановити rebinddelete

# встановити rebindkeypad


0

Ймовірна проблема полягає в тому, що так, і ваша локальна машина, і ваш сервер ARE на unix системах, які мають nano, але ці версії nano можуть бути різними.

export TERM=xterm-color

-1

Якщо ви отримаєте "Це неофіційний текст", а ви ввели "Це рядок тексту" (я повинен припустити, що ваш звіт є правильним), тоді у вас є клаптова клавіша "управління", що б там не було на Mac (команда ? яблуко?). Оскільки нано використовує клавіші управління +, щоб "стрибати навколо", а у вас менше символів, ніж набрано, тому у нас є а) зникаючі символи б) контрольні послідовності, що з'являються з нічого, випливаючи, що а) стає б) є логічним.

Можливо, у вас також є якась неприємна програма гарячої клавіші / макро / що не. Я підозрюю, що це належить до суперпользователя, а не до сервера, але я буду проводити позначення, можливо, хтось має реалістичну відповідь на SSH.


Це трапляється, коли я використовую клавіші зі стрілками для переміщення вперед і назад по лінії, частіше, ніж коли я просто набираю текст. Але це здається досить випадковим. Я швидко спробую пропозицію Кріса, щоб зрозуміти, чи працює, але дякую за відповідь!
geerlingguy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.