mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決

MySQLでいちいちshow tables;とか打つのがだるい。\tみたいなalias設定できないのかなぁ

http://twitter.com/weboo/status/1658300902

おぉ、readlineのマクロを使えばいいのかー

http://twitter.com/weboo/status/1658314333

なるほ!ってことでちょっと設定してみました。

# ~/.inputrc
$if mysql
"\C-xd": "show databases;"
"\C-xt": "show tables;"
"\C-xu": "select user,host,password from mysql.user order by user,host;"
"\C-xb": "select user,host,db       from mysql.db   order by user,host;"
"\C-xc": "show create table TN\\G"
$endif

$if applicationでmysqlコマンドだけで有効になるように。
pgsqlチックに\tとか\dとかだと、readlineの行編集のbindと被りまくるのでC-xでprefixするような感じで定義してみた。

MySQL 5.6では

MySQL 5.6のmysqlコマンドはreadlineではなくlibeditを使うようになったので、~/.editrcにこのように書けばOKです。

mysql:bind '^U' vi-kill-line-prev
mysql:bind '^W' ed-delete-prev-word

mysql:bind -s "^xd" "show databases;"
mysql:bind -s "^xt" "show tables;"
mysql:bind -s "^xu" "select user,host,password from mysql.user order by user,host;"
mysql:bind -s "^xb" "select user,host,db       from mysql.db   order by user,host;"
mysql:bind -s "^xc" "show create table TN\\\\G"
mysql:bind -s "^xn" "select count(*) from ;"
mysql:bind -s "^xv" "show variables like '%%';"
mysql:bind -s "^xs" "show slave status\\\\G"
mysql:bind -s "^xm" "show master status\\\\G"
mysql:bind -s "^xp" "show full processlist;"
mysql:bind -s "^xa" "show table status like 'TN'\\\\G"