Ответ 1
Отредактируйте или создайте файл с именем .my.cnf
в вашем домашнем каталоге, содержащий:
[mysql]
auto-rehash
В Linux и многих других системах при навигации по терминалу вы можете нажать Tab, чтобы автоматически заполнить каталог или имя файла.
Мне интересно, есть ли что-нибудь подобное в терминале MySQL. Например, если я хочу получить описание someTableWithRidiculousLongName
, я мог бы ввести describe someTableW
, затем Tab, и он автоматически завершил бы остальные.
Есть ли что-нибудь подобное в терминале MySQL?
Отредактируйте или создайте файл с именем .my.cnf
в вашем домашнем каталоге, содержащий:
[mysql]
auto-rehash
Чтобы включить автозаполнение в запросе типа MySQL:
mysql> \#
После этого вы можете ввести:
mysql> describe someTableW[TAB]
Чтобы получить:
mysql> describe someTableWithRidiculousLongName
запустите консоль MySQL с дополнительной опцией --auto-rehash
, т.е.
mysql --auto-rehash -u root -p
Я знаю, что это старый вопрос, но я нашел очень полезный клиент MySql cli с расширенной автозавершением: mycli. Это намного умнее, чем встроенная функция авто-переосмысления.
Некоторые заметки об авто-rehash:
Когда вы включаете автозаполнение, редактируете файл конфигурации mysql..
[mysql]
auto-rehash
Вы можете сделать это для всех пользователей или только для одного пользователя:
/etc/my.cnf
: Все пользователи
~/.my.cnf
: Фактический пользователь
Вы также можете отключить добавление автозаполнения:
no-auto-rehash
Извлечен из: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html
В OS X 10.11.6 я установил --auto-rehash, как описано выше, но это не сработало. (Это OS X, поэтому mysql скомпилирован с библиотекой libedit BSD.)
Затем я вспомнил, что я установил vi-привязки vi для клиента mysql, создав ~/.editrc, содержащий одну строку: bind -v. Это отлично подходит для предоставления vi-подобной навигации в mysql-клиенте, но это привело к потере имени столбца (я смог проверить это, удалив .editrc).
Итак, я немного изучил и обнаружил, что ~/.editrc должен иметь по крайней мере следующие строки:
bind -v
bind \\t rl_complete
С помощью этой дополнительной строки, пополнение имени работает корректно и в навигации по mysql AND vi. (Существуют другие настройки .editrc, которые значительно улучшают навигацию клиента mysql, но это не место, чтобы начать этот поток обсуждения.)
Вы также можете автозавершить на основе истории команд. Начните вводить, затем вызовите ключи, привязанные к ed-search-prev-history
и ed-search-next-history
. Это применимо, если mysql поставляется с поддержкой libedit. Ключевыми словами по умолчанию являются Ctrl-P и Ctrl-N, но это может быть настроено в .editrc. Мой пример для Ctrl-up и Ctrl-down:
# start typing, then press Ctrl-Up
bind "\e[1;5A" ed-search-prev-history
# start typing, then press Ctrl-Up, then Ctrl-Down
bind "\e[1;5B" ed-search-next-history
Ранее mysql был основан на readline, а затем history-search-backward
и history-search-forward
являются правильными командами. Конфигурация тогда была с помощью .inputrc. Тот же пример, что и выше:
# these are the key bindings for the readline library
# start typing, then press Ctrl-Up
"\e[1;5A": history-search-backward
# start typing, then press Ctrl-Up, then Ctrl-Down
"\e[1;5B": history-search-forward
Итак, скажем, вы начали набирать sel
и вызывать Ctrl-Up, select * from some_long_table_name
появился бы, если это команда, которую я использовал ранее.
это работает с добавлением в файл /etc/mysql/my.cnf этого.
[mysql]
auto-rehash
Но проблема в том, что это только для столиц, например, SELECT, USE и т.д.
Возможно ли это сделать для маленьких персонажей? Например, выберите, используйте и т.д.
Благодарю.