Как настроить привязки ключей клиента командной строки MySQL?
Я часто использую клиент командной строки mysql на Ubuntu box. Работает нормально, за исключением того, что привязки клавиш неправильные. В частности, нажатие "Home", "End" или "Delete" приводит к выводу символа ~ (тильда) и звуковому сигналу.
Я определил, что Home/End можно сделать, нажав Control+A и Control+E соответственно, как на терминале Mac. Я использую Windows, использую PuTTY для общения с Ubuntu, но ключи home/end/delete работают нормально в обычной командной строке. Я уверен, что это проблема, специфичная для клиента MySQL.
Я проверил файл man, но не нашел ничего полезного. Есть ли способ привязать клавиши Home/End/Delete к их действительным функциям? Может быть, файл конфигурации в моем домашнем каталоге или что-то?
Каждый раз, когда я возвращаюсь на несколько позиций назад для редактирования запроса и нажимаю "Удалить", мне просто приходится снова идти вперед, чтобы я мог использовать клавишу "Backspace" для удаления не только неправильного запроса, но и ~, который вставляет ключ удаления.
Это медленно, но верно сводит меня с ума. Безумие, говорю тебе, безумие!
2 ответа
Хорошо, я заметил, что у моего домашнего сервера не было проблемы, и сравнение рабочих и домашних серверов позволило мне наконец-то его зафиксировать.
Это ошибка 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 в среду readline, как описано в сообщении в блоге, восстанавливающий возможности readline в MySQL-клиенте Ubuntu 9.10 (Karmic Koala).
К сожалению, rlwrap
Подход имеет неприятный побочный эффект: ваш пароль виден, когда вы его вводите, вместо того, чтобы подавлять его вывод. Поэтому я думаю, что я возьму маршрут обновления.
Я бы сказал, что проблема в настройках PuTTY - в окне подключения, в разделе "Терминал", "Клавиатура" - измените параметры "Клавиши Дом и Конец" на rxvt
, Не идеально (End не будет работать до сих пор), но вы получите Home и Delete.
IMO реальное решение состоит в том, чтобы использовать надлежащий терминал и надлежащий SSH; Console2 достаточно хорош для терминала, и MSYS или Cygwin могут предоставить вам SSH (он есть в msysgit).
Редактировать:
Похоже, вы нашли ошибку в MySQL CLI.