Назад | Перейти на главную страницу

Как настроить привязку клавиш клиента командной строки MySQL?

Я часто использую клиент командной строки mysql в системе Ubuntu. Он работает нормально, за исключением того, что привязки клавиш неверны. В частности, нажатие «Home», «End» или «Delete» приводит к выводу символа ~ (тильда) и звукового сигнала.

Я определил, что Home / End можно сделать, нажав Control + A и Control + E соответственно, как на терминале Mac. Я нахожусь в Windows, использую PuTTY для общения с Ubuntu, но клавиши home / end / delete отлично работают в обычной командной строке. Я почти уверен, что это проблема, специфичная для клиента mysql.

Я проверил man-файл, но ничего полезного не нашел. Есть ли способ привязать клавиши Home / End / Delete к их фактическим функциям? Может быть, файл конфигурации в моем домашнем каталоге или что-то в этом роде?

Каждый раз, когда я возвращаюсь на несколько пробелов назад для редактирования запроса и нажимаю delete, мне просто приходится снова идти вперед, поэтому я могу использовать клавишу Backspace, чтобы удалить не только неправильный запрос, но и ~, который вставляется клавишей удаления.

Это медленно, но верно сводит меня с ума. Безумие, говорю вам, БЕЗУМИЕ!

Хорошо, я заметил, что на моем домашнем сервере не было проблемы, и сравнение рабочего и домашнего серверов позволило мне, наконец, решить эту проблему.

Это ошибка Ubuntu, представленная в версии 9.10, на которой работает мой рабочий сервер. В частности, версия / usr / bin / mysql в Ubuntu 9.10 использует оболочку EditLine вместо оболочки readline:

wmartin@work:~$ mysql --version && md5sum /usr/bin/mysql && lsb_release -a

mysql  Ver 14.14 Distrib 5.1.37, for debian-linux-gnu (i486) using EditLine wrapper

e23604381e64ac805fdbb8b334ce4d17  /usr/bin/mysql

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:        9.10
Codename:       karmic

Сравните с более свежим выпуском на моем домашнем сервере:

wmartin@home:~$ mysql --version && md5sum /usr/bin/mysql && lsb_release -a

mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1

4274c43798239142576e77c022d35bd1  /usr/bin/mysql

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.2 LTS
Release:        10.04
Codename:       lucid

Версии 10.04 (и предположительно более поздние) работают нормально - mysql учитывает ключи home / end / delete, используя настройки Putty по умолчанию.

Таким образом, решение состоит в том, чтобы обновить сервер до 10.04 или новее, или использовать утилиту командной строки. rlwrap чтобы обернуть клиент mysql в среду чтения, как описано в сообщении блога восстановление возможностей чтения строки MySQL-клиента Ubuntu 9.10 (Karmic Koala).

К сожалению, rlwrap Этот подход имеет неприятный побочный эффект, заключающийся в том, что ваш пароль становится видимым, когда вы его вводите, вместо подавления его вывода. Так что я думаю, что выберу путь обновления.

Я бы сказал, что проблема в ваших настройках PuTTY - в окне подключения в разделе «Терминал», «Клавиатура» измените параметры «Клавиши Home и End» на rxvt. Не идеально (End не работает), но вы получите Home и Delete.

ИМО реальное решение - использовать правильный терминал и правильный SSH; Консоль2 достаточно хорош для терминала, и MSYS или Cygwin могут предоставить вам SSH (в msysgit он включен).

редактировать:

Похоже, вы нашли ошибку в MySQL CLI.