У меня странная проблема с добавлением обратной косой черты (Ubuntu 10.10 и 11.04, обновление ничего не изменило). Комбинация клавиш на моей клавиатуре (шведский Thinkpad T400) - это AltGr +? Однако это, похоже, не является проблемой, так как это появляется только в некоторых программах.
Например, с помощью bash 4.2, python 2.7, python 3.2, swipl 5.10 я не могу набирать или вставлять обратную косую черту в терминал. С ash, csh, ghci, nano, vi, idle, idle3 все ведет себя как положено, я могу как печатать, так и копировать. Например, копируя
echo gurka\\\\agurk
(четыре литеральные обратные косые черты) и вставляя его в csh (а затем нажимая Enter), я получаю
$ csh
% echo gurka\\\\agurk
gurka\\agurk
, но с bash я получаю
$ echo gurkaagurk
gurkaagurk
К сожалению, я впервые заметил довольно много раз после многих новых установок, и я не могу сказать, когда он впервые появился. Я подозреваю ошибку или противоречивую конфигурацию некоторой библиотеки, общей для первой группы, но не для второй, но я не уверен в том, что делать дальше. Это очень раздражает, и я благодарен за подсказки.
ОБНОВЛЕНИЕ: поведение одинаково для konsole и всего, что вы получаете с помощью Ctrl-Alt-F1 (что я и проверил). Он также не работает с gnome-терминал и xterm, но эти два указывают на ошибку (мигает). Идеи о том, что проверять?
ОБНОВЛЕНИЕ: Проблема решена, благодаря Жилю! Это была неверная конфигурация библиотеки readline (.inputrc)
Маркус
Я думаю программы, которые Вы используете, все пользуются readline библиотекой для чтения входа. Таким образом, я предполагаю, что Вы неправильно сконфигурировали readline библиотеку. Файл конфигурации системы /etc/inputrc
и файл в расчете на пользователя ~/.inputrc
. Вы, вероятно, помещаете одну обратную косую черту слишком много в привязку, так, чтобы вместо того, чтобы связать команду с escape-последовательностью Вы связали ее с последовательностью, начинающейся с обратной косой черты.
Правильно: "\e[1;5C": forward-word
(escape-последовательность, отправленная Ctrl+Left)
Неправильно: "\\e[1;5C": forward-word
(\e [1; 5 C)
Если бы проблема была только в ударе, то проблематичная привязка была бы в ~/.bashrc
. Отметьте это в .bashrc
, та привязка выше была бы записана bind "\\e[1;5C: forward-word"
, с двумя обратными косыми чертами, потому что удар делает раунд расширения обратной косой черты перед передачей определения readline. (bind '\e[1;5C: forward-word'
также работал бы, так как обратные косые черты теряют свое особое значение в одинарных кавычках.)