klo*_*kop 6 mysql gnu-screen readline tmux osx-lion
我在Screen/Tmux中使用Mysql的命令行客户端,来自OSX的Terminal.app中的Bash.当使用向上箭头重新显示以前运行的跨越多行的查询时,当光标位于终端的最后一行时,mysql命令历史记录中的命令被"截断"或截断.当我在Ubuntu工作站上使用相同的工具时,这种情况永远不会发生
以下是所发生情况的直观表示:
输入一些查询; 没错.
+-------------------------------------------+
|mysql> |
|mysql> |
|mysql> |
|mysql>select * from tables where legs = 4 a|
|nd colour = 'green'; |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
运行它,结果显示:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
| |
|mysql> |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
按[向上箭头]重新显示上一个查询会让我:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
| |
|nd colour = 'green'; |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
再次点击[向上箭头],我得到:
+-------------------------------------------+
|| 2 | ....... | ..... | |
|+---+---------+-------+ |
| x rows in set (0.00 sec) |
|mysql>select * from tables where legs = 4 a|
|nd colour = 'green'; |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
可以通过更改设置来解决吗?或者它是Mysql客户端的错误?
软件版本:
OSX 10.7.3
Terminal Version 2.2.2 (303)
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
mysql Ver 14.14 Distrib 5.5.19, for osx10.7 (i386) using readline 5.1
Screen version 4.00.03 (FAU) 23-Oct-06
tmux 1.6
Run Code Online (Sandbox Code Playgroud)
Har*_*hof 10
在这方面,您可以考虑一些选项,让您的生活更轻松:
readline命令结合mysql选项:readline接受类似于基本emacs命令的命令(也可以设置为vi),或者示例CTRL-a返回到行的开头.
这与您设置set horizontal-scroll-mode On的读取线相结合,~/.inputrc允许您将输入放在一条直线上,将光标放在最后.将它与CTRL-a结合使用可立即跳到开头,非常方便.
~/.inputrc:
$if Mysql
set horizontal-scroll-mode On`
# uncomment the commands below to use vi keybindings
#set keymap vi
#set editing-mode vi
$endif
Run Code Online (Sandbox Code Playgroud)
(某些系统,OSX 10.5,我相信使用libedit而不是readline,在这种情况下你需要全部放入~/.editrc,如果你不确定你的系统发出mysql --version命令)
要查找您发出的命令,您还CTRL-r可以输入一个术语,并搜索您的历史记录以查找最后一次出现的命令.
有趣的命令是:
根据您的shell和底层,它们可能不会全部工作或被拦截.例如在我在kde上使用的Konsole上,我必须在高级设置中禁用流控制以允许CTRL-s等.
最后mysql还为你提供了\ e命令,它允许你在常规文件编辑器中编辑你的命令,如果vi或emacs不是你的东西,尝试nano,它很容易并且运行良好.使用它的主要缺点是,当向上滚动换行符时,忽略选项卡和空格.这是一个unix唯一的东西,但OS X应该在那里做得很好,不能检查,因为我没有任何Apple电脑,对不起.:)
为了更容易使用此命令,您可以将readline字符串宏放入~/.inputrc
例如Control-o: "\\e;\n"将CONTROL-o绑定到\ e; 然后输入即时执行.(看看Keybindings部分)
使用备用shell:例如altSQL:它提供语法着色,漂亮的历史滚动和其他一些细节,大的好处是你有源,所以你可以适应你想要的.
删除shell并转到GUI:最后我想插入漂亮的MySQL工作台来处理你的数据库,它是跨平台的,免费的,并且在我看来是一个很好的工具.
我意识到这不是一个完美的解决方案,每个都有优点和缺点,但我希望这对你有所帮助.