Использование Xubuntu upstart
, таким образом, необходимо использовать
sudo service gdm stop
или
sudo service lightdm stop
завися, если Вы используете Ubuntu 11.04 (или предшествующие) или Ubuntu 11.10.
Для сотрудников Google:
Ух. Для чего-то, что должно быть настолько просто, это было твердо.
Коротким решением является использование следующее для установки клавиши Delete (в kshrc
или везде, где),
bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward
И набор Ваши настройки терминала PuTTy к rxvt
вместо Standard
.
Эта вещь, которая действительно помогла мне получить эту работу, была: http://www.mail-archive.com/misc@openbsd.org/msg81796.html
ksh делает глупые вещи с клавишами Home и клавишами End. В основном я не мог заставить его сказать различие между Домом, Концом, и Удалить одновременно. Независимо от того, что было в последний раз связано, все три ключа сделают. Изменение, что PuTTy послал за этими ключами, помогло очень.
Примечание: Некоторые люди предлагают, если Вы хотите видеть то, что кодирует оболочку, добирается, когда Вы нажимаете клавишу, ввести cat
, нажмите Enter, затем продвиньте ключ. Для моей оболочки это не работало. Я добрался ~
для всех клавиш CTRL. Что я сделал вместо этого было нажатие Esc
однажды, затем нажмите клавишу. Код управления показал бы, затем обнаруживаются. Используйте тот код управления в bind
и Вы все установлены.
Существующие два ответа не сработали для меня при переходе с Linux (Ubuntu 18.10 )bash через SSH на Solaris 11.3 bash с использованием терминала gnome.
Я обнаружил, что мне нужно использовать команду bind
, но с работой -, так как я не мог заставить работать родную Удалить .
Таким образом, работа -заключается в том, что при нажатии Удалить имитировать удаление путем сопоставления нажатия клавиши удаления с → и . Возврат .
bind '"^[[3~":"^[[C^?"'
Чтобы ввести это, используйте клавишу -нажмите:
CTRL -vУдалить для первой части
и CTRL -v→CTRL -vBackspace для второго.
(или вместо этого используйте \e
для побега, например.:"\e[3~"
)
Это не идеально, если вы удалите в конце -строки -, он все равно будет смещен. Но это избавляет меня от необходимости нажимать -на символ ~
бесчисленное количество раз в день.
Если оболочка запущена в окне терминала gnome , затем перейдите в меню:Edit
| Preferences
| Profiles
и выберите профиль, затем выберите вкладку Compatibility
и измените Delete key generates
на Automatic
. (Или, если это не помогло, попробуйте другие варианты.)
Кроме того, вы можете ввести ^v Del
и ^v Backspace
, (, т.е. Control -v с последующим нажатием клавиши удаления и Control -v с последующим нажатием клавиши Backspace ), чтобы найти возвращенный «терминальные» коды последовательности.
А для проверки используйте командуshowkey
как showkey -s
, showkey -k
и/или showkey -a
(, т.е. три слоя ), а затем нажмите клавиши Del
и Backspace
для:
I )необработанный вывод с клавиатуры
II )вывод драйвера tty
III )строки символов, передаваемые терминалу (ansi )
Из этого я заметил, что при использовании stty (, например. stty1 ), что поведение моей оболочки отличается от поведения при использовании xterm (из графического X-терминала ). Del правильно удалил вперед (вправо )в stty1, но назад (влево )в моем xterm.
Согласно man ksh
в моей системе Debian 10, prefix-1
"вводит последовательность команд из 2 -символов" и prefix-2
"вводит последовательность команд из нескольких -символов". По сути, они сообщают оболочке: «Пока не обрабатывайте это, должна быть более длинная последовательность символов -, дождитесь полной последовательности».
Современные терминальные сеансы Unix/Linux обычно работают на эмуляторах терминала:они по существу эмулируют (расширенную версию )некоторого типа компьютерного терминала , подключенного через последовательный порт. Со многими терминалами сопоставление между клавишами клавиатуры и символами, отправляемыми на компьютер, не было строго один -на -один :, потому что не существовало стандартизированных управляющих символов ASCII для всех различных несимвольных клавиш терминала -. клавиатуре, некоторые клавиши будут отправлять последовательности из нескольких символов -. Функциональные клавиши, клавиши со стрелками, Home , End , Insert , Delete , PgUp и PgDn принадлежат к этой группе.
Клавиша Esc представлена как ^[
, другими словами Control + [ . И когда вы посмотрите на таблицу кодов ASCII, вы увидите, что клавиша Control по существу вычитает 64 (, т.е. инвертирует один бит )из значения обычного символа, объединенного с ним.Итак, ^[
— это всего лишь один управляющий символ ASCII со специальным именем «ESC».
Ваш вывод bind | grep prefix
указывает, что ^[
уже распознан как prefix-1
, а ^[[
как prefix-2
.
Клавиша Удалить фактически отправляет последовательность, эквивалентную Esc [3~.
Итак, оболочка должна анализировать его по одному символу/байту за раз, вот так:
^[
, совпадает с prefix-1
, поэтому дождитесь еще хотя бы одного символа и объедините его с ним ^[[
соответствует prefix-2
, поэтому подождите еще и продолжайте комбинировать символы. ^[[3
, что снова prefix-2
, так что продолжайте ждать и комбинировать. ^[[3~
, которая теперь соответствует привязке для delete-char-forward
.