W Linuksie i wielu innych systemach podczas nawigacji po terminalu możesz nacisnąć, Tababy automatycznie uzupełnić nazwę katalogu lub pliku.
Zastanawiam się, czy coś takiego jest w terminalu MySQL. Na przykład, jeśli chcę uzyskać opis someTableWithRidiculousLongName
, mógłbym wpisać describe someTableW
to, Taba resztę uzupełniłbym automatycznie.
Czy coś takiego istnieje w terminalu MySQL?
mysql
autocomplete
console
Alan B. Dee
źródło
źródło
Odpowiedzi:
Edytuj lub utwórz plik o nazwie
.my.cnf
w Twoim katalogu domowym, zawierający:źródło
--disable-auto-rehash
flagą nadal jest opcjonalne . Ale teraz włączyłeś to domyślnie.Aby włączyć autouzupełnianie w wierszu poleceń MySQL:
mysql> \#
Następnie możesz wpisać:
mysql> describe someTableW[TAB]
Aby otrzymać:
mysql> describe someTableWithRidiculousLongName
źródło
mysql> rehash
- Alternatywnie do „\ #” możemy również wpisać polecenie „rehash” mysql w następujący sposób. Myśl o udostępnianiu jako „powtórzeniu” może być łatwiejsza do zapamiętania dla niektórych osób, takich jak ja:mysql> rehash
po tym autouzupełnianie zacznie działać!uruchom konsolę MySQL z dodatkową opcją
--auto-rehash
tjmysql --auto-rehash -u root -p
źródło
Wiem, że to stare pytanie, ale znalazłem bardzo pomocnego klienta MySql cli z zaawansowanym autouzupełnianiem: mycli . Jest znacznie inteligentniejszy niż wbudowana funkcja automatycznego ponownego mieszania.
źródło
auto-rehash
nie działa na moim. Przełączony na mycli i boom ... działał jak zawodowiec.Na OS X 10.11.6 ustawiłem --auto-rehash jak opisano powyżej, ale to nie zadziałało. (To jest OS X, więc mysql jest skompilowany z BSD libedit biblioteką ).
Potem przypomniałem sobie, że ustawiłem przypisania klawiszy vi dla klienta mysql, tworząc ~ / .editrc, zawierający jedną linię: bind -v . Działa to świetnie, dając mi nawigację podobną do vi w kliencie mysql, ale zepsuło uzupełnianie nazw kolumn (mogłem to zweryfikować usuwając .editrc ).
Więc zbadałem trochę i odkryłem, że ~ / .editrc powinno mieć co najmniej następujące linie:
Dzięki tej dodatkowej linii uzupełnianie nazw działa poprawnie w nawigacji podobnej do mysql AND vi. (Istnieją inne ustawienia .editrc, które znacznie poprawiają nawigację po kliencie mysql, ale nie jest to miejsce na rozpoczęcie tego wątku dyskusji).
źródło
Kilka uwag na temat automatycznego ponownego szyfrowania:
Gdy włączysz autouzupełnianie, edytuj plik konfiguracyjny mysql.
Możesz to zrobić dla wszystkich użytkowników lub tylko dla jednego użytkownika:
/etc/my.cnf
: Wszyscy użytkownicy~/.my.cnf
: Aktualny użytkownikMożesz także wyłączyć dodawanie autouzupełniania:
Pobrano z: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html
źródło
Możesz także uzupełniać automatycznie na podstawie historii poleceń. Zacznij pisać, a następnie wywołaj klawisze powiązane z
ed-search-prev-history
ied-search-next-history
. Dotyczy to sytuacji, gdy mysql obsługuje bibliotekę libedit. Domyślne skróty klawiszowe to Ctrl-P i Ctrl-N, ale można to dostosować w .editrc. Mój przykład dla Ctrl-w górę i Ctrl-w dół:# 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
Wcześniej mysql był oparty na readline, a następnie
history-search-backward
ihistory-search-forward
są poprawnymi poleceniami. Konfiguracja odbywała się wtedy za pomocą .inputrc. Taki sam przykład jak powyżej:# 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
Powiedzmy, że zacząłeś pisać
sel
i wywoływałeś Ctrl-Up,select * from some_long_table_name
pojawi się, jeśli jest to polecenie, którego użyłem wcześniej.źródło