【问题标题】:How to get vi keybindings to work in mysql client?如何让 vi 键绑定在 mysql 客户端中工作?
【发布时间】:2010-02-07 08:59:18
【问题描述】:

我有 vi 绑定在我的 .bash_profile 中使用 set -o vi 在我的 bash shell 中工作。但我似乎无法让它们在mysql 命令行客户端中工作。我只得到 emacs 风格的绑定。你是怎么做到的?

我也将这些行放在我的 .inputrc 中,但没有任何效果:

set editing-mode vi
set keymap vi

【问题讨论】:

  • 拥抱黑暗面,学习使用 emacs 键! bwahahaha!说真的,我希望我能帮助你,虽然我是一个 emacs 爱好者。
  • mysql 不使用 readline。可执行文件上的 ldd 揭示了这一点。
  • 我确实让 mysql vi-keybindings 在我的另一台计算机上以某种方式工作,所以我知道这是可能的。 VI 永远。
  • 我在当前的 OsX 安装中遇到了这个问题,但在最后一次没有。我有理由确定这与 MySQL 的版本及其编译方式直接相关。我目前正在从 Mysql.com 运行 5.6.13 。也许安装的自制软件会起作用?
  • @dan 请接受 John Hirbour 的更好回答。如果我们失去 tab 补全,vi 模式有什么好处?

标签: mysql unix vim command-line readline


【解决方案1】:

快速谷歌显示this...不知道是否有帮助。

为了方便,复制到这里:

在 OS X 10.5 上添加以下内容:

$ cat .editrc
bind -v

这适用于 OS X 10.4 和 其他操作系统:

$ cat .inputrc
set editing-mode vi

【讨论】:

  • 在 ubuntu 上对我来说,它正在创建 .inputrc - 这很有效!谢谢!
  • 如果 mysql 是使用 GNU Readline 构建的,则为 ~/.inputrc。如果 mysql 是使用 BSD libedit 构建的,则为 ~/.editrc
  • 如果添加会破坏 OSX 中的 mysql 自动完成功能,请将其添加到 .editrcbind \\t rl_complete
  • 适用于 macOS Sierra,10.12。
【解决方案2】:

这两个文件在我以前的工作站上工作(不确定 MySQL 版本(我的旧工作))。我将我的 dotFiles 保存在 git 中。

.editrc

bind -v
bind \\t rl_complete

.inputrc(其中几个可能需要也可能不需要)

set editing-mode vi
set keymap vi
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
set bell-style none

发布这些是因为我无法在上面的评论中发布它们。

【讨论】:

  • bind \\t rl_complete 带回了制表符补全功能!我使用其他解决方案丢失的东西。
  • 哈利路亚!没有标签完成,我真的被困住了。如果我必须输入长表名和列名,vi 模式有什么好处。非常感谢您提供完整的答案。
【解决方案3】:

这并不能直接回答你的问题,但你可能想看看the dbext plugin

这个插件包含函数/映射/命令,使 Vim 能够访问多个数据库。

[...]

dbext 在您的编辑器和数据库之间提供一个通用接口。如果您的公司/项目迁移到新的数据库平台,则无需学习新的数据库工具。在编辑 SQL 时(无需离开 Vim),您可以执行数据库命令、运行查询、显示结果和查看数据库对象。 dbext 了解各种编程语言,可以解析并提示用户输入 [host] 变量并执行结果语句。详情见下文。

一个数据库客户端内部 Vim!

【讨论】:

    【解决方案4】:

    投票的答案是可以的,但是如果你遇到了发生在我身上的问题(我目前使用的是 Slackware 14.x),那么编辑 /etc/inputrc 应该是你最后的希望.

    我已经在家里测试了 .inputrc 和 .editrc,但在我的系统上只编辑 /etc/inputrc 有效。

    【讨论】:

      【解决方案5】:

      另外,这不是你的问题的答案。

      你也可以像dbext一样使用Vimsql。如果你喜欢 vim 键映射,Vimsql 比mysql 与 mysql 交互更方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 2019-01-12
        • 2013-06-19
        • 2021-02-23
        • 1970-01-01
        相关资源
        最近更新 更多