Что-то, что я заметил в Ubuntu в течение долгого времени, меня расстраивало, когда я набираю команду в командной строке, которая становится длиннее (шире) ширины терминала, вместо переноса на новую строку, она возвращается к столбец 1 в той же строке и начинает перезаписывать начало моей командной строки. (На самом деле она не перезаписывает действительную команду, но визуально она перезаписывает отображаемый текст).
Трудно объяснить, не видя этого, но, скажем, мой терминал был 20 символов в ширину (мой больше похож на 120 символов - но для примера), и я хочу повторить английский алфавит. Что я печатаю это:
echo abcdefghijklmnopqrstuvwxyz
Но как выглядит мой терминал перед нажатием клавиши:
pqrstuvwxyzghijklmno
Когда я нажимаю войти, это эхо
abcdefghijklmnopqrstuvwxyz
поэтому я знаю, что команда была получена правильно. Это просто обернуло мое печатание после «о» и началось с той же строки.
Что бы я ожидал, если бы я набрал эту команду на терминале шириной всего 20 символов, это было бы так:
echo abcdefghijklmno
pqrstuvwxyz
Справочная информация: я использую bash в качестве оболочки, и у меня есть эта строка в моем ~ / .bashrc:
set -o vi
чтобы иметь возможность перемещаться по командной строке с помощью команд VI. В настоящее время я использую сервер Ubuntu 10.10 и подключаюсь к серверу с помощью Putty.
В любой другой среде, в которой я работал, если я наберу длинную командную строку, она добавит новую строку под строкой, над которой я работаю, когда моя команда становится длиннее, чем ширина терминала, и когда я продолжаю печатать, я вижу свою команду на 2 разные строки. Но насколько я помню, используя Ubuntu, мои длинные команды занимают только одну строку.
Это также происходит, когда я возвращаюсь к предыдущим командам в истории (я нажимаю клавишу Esc, затем «K», чтобы вернуться к предыдущим командам) - когда я получаю предыдущую команду, длина которой была больше ширины терминала, командная строка получает покалеченный, и я не могу сказать, где я в команде.
Единственный обходной путь, который я нашел, чтобы увидеть всю длинную команду, - это нажать «Esc-V», которая открывает текущую команду в редакторе VI.
Я не думаю, что у меня есть что-то странное в моем файле .bashrc. Я закомментировал строку "set -o vi", и у меня все еще была проблема.
Я скачал свежую копию Putty и не внес никаких изменений в конфигурацию - я просто набрал имя хоста для подключения, и у меня все еще есть проблема, поэтому я не думаю, что это что-то с Putty (если мне не нужно внести некоторые изменения в конфигурацию)
У кого-нибудь еще была такая проблема, и может кто-нибудь подумать, как ее исправить?
редактировать
Это был мой файл .bashrc. Я скопировал один и тот же профиль с машины на машину, и я использовал специальные символы в моем $ PS1, которые каким-то образом выбрасывают его. Теперь я придерживаюсь стандартных переменных bash для моего $ PS1.
Спасибо @ ændrük за подсказку .bashrc!
... Конец редактирования ...
tput smam
/etc/skel/.bashrc
. Имейте в виду, что вам нужно будет повторно подключиться, чтобы изменения вступили в силу, и обязательно сохраните резервную копию своего собственного .bashrc.