mysql 클라이언트 바로가기를 어떻게 리바인드하나요? -- 또는: mysql 클라이언트의 editline을 readline으로 바꾸는 방법은 무엇입니까?

mysql 클라이언트 바로가기를 어떻게 리바인드하나요? -- 또는: mysql 클라이언트의 editline을 readline으로 바꾸는 방법은 무엇입니까?

나는 msyql-client를 사용하고 있으며 다음을 통해 터미널에서 mysql 프롬프트를 엽니다.

$ mysql -h localhost -uuser -ppassword
mysql> 

내가 사용하는 msql 클라이언트 버전:

Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Emacs와 같은 바인딩이 있는 터미널의 경우 사용할 수 있는 강력한 근육 기억력이 있습니다.

Ctrl+W

마지막 단어를 삭제하세요. 그러나 mysql 클라이언트 내부에서는 뒷줄의 시작 부분을 제거하므로 쿼리를 작성하거나 조정하기가 어렵습니다.

mysql 클라이언트 키보드 단축키를 다시 바인딩할 수 있나요? 그렇다면 어떻게 리바인드할 수 있나요? 대신 Alt + Backspace를 사용할 수 있다는 것을 알고 있지만 사용법을 일관되게 유지하고 싶습니다.

답변1

해결 방법으로 mariadbmysql의 커뮤니티 기반 포크를 설치하고 해당 클라이언트에 readline이 제공되므로 mysql 클라이언트를 사용했습니다.

sudo apt install mariadb-client
mysql --version
mysql  Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

mysql 클라이언트처럼 사용할 수 있습니다.


이것이 기능이라고 가정하지만 mysql을 제거한다는 점을 명심하십시오.

라이센스 문제로 인해 mysql 관리자는 editline을 선호하여 readline을 포기한 것으로 보입니다. (Editline은 BSD인 것 같고, readline은 GNU이며, 후자는 상용 버전을 제공하려는 그들의 욕구와 충돌하는 것 같습니다.)

이와 관련하여 제가 찾은 관련 버그 보고서는 다음과 같습니다.

답변2

mysql일부 플랫폼/배포판에서는 일부 버전의 클라이언트가 소프트웨어 라이선스 이유 editline가 아닌 소프트웨어 라이선스 이유로 readline구축 되었습니다.

editlineCtrl+에 대한 기본 바인딩은 W일반적으로 커서 위치까지 전체 줄을 삭제하는 것입니다. 앞의 단어만 제거하도록 이 바인딩을 변경하는 방법은 .editrc홈 디렉터리에 다음 콘텐츠로 호출되는 파일을 만드는 것입니다.

bind "^W" ed-delete-prev-word

고객은 다음에 출시할 때 mysql이 사실을 알게 될 것입니다 .

(원천)

관련 정보