【问题标题】:bash: vim mode instead of vi mode?bash:vim 模式而不是 vi 模式?
【发布时间】:2018-02-20 01:29:50
【问题描述】:

我注意到当在 bash 中处于 vi 模式时(即使用“set -o vi”启用的模式),某些在 vim 中有效但在 vi 中无效的命令,例如“diw”,在bash 命令行。有没有一种简单的方法来配置 bash 以便它的键绑定将支持 vim 命令?我希望能够在命令行上输入 vim 命令,而不必实际启动 vim 程序,如this question 中所述。

【问题讨论】:

  • bash 不支持vivim 命令;相反,它具有类似于vi 的键绑定,用于自己的命令集。
  • 我已经编辑了问题。

标签: bash vim vi


【解决方案1】:

据我所知,最好的方法是使用athame。 在某些情况下,这可能是一种令人惊讶的强大体验。我特别喜欢它与 repl 交互。

Athame 通过实际的 Vim 进程路由击键来修补您的 shell 以添加完整的 Vim 支持。 Athame 目前可用于修补 readline(由 bash、gdb、python 等使用)和/或 zsh(不使用 readline)。

另外,我发现带有 eshell 的 spacemacs 是一个功能合理的解决方案。

【讨论】:

  • 如果这是问题正在寻找的答案,那么该问题是题外话(来自stackoverflow.com/help/on-topic,在“一些问题仍然题外”列表中,请注意“推荐或查找书籍、工具、软件库或其他非现场资源”条目)。
  • @CharlesDuffy 我不相信这会成为话题。这里正在寻找解决他的问题的方法。一个潜在的解决方案是这个工具。他并不是专门寻找工具。
  • 同意。这个问题离题的更令人信服的原因是它不是关于编写代码、开发脚本或其他软件开发独有的(如上面链接后面所指定的),而是关于 interactive shell 配置和使用——Unix & Linux SE 或SuperUser 的主题。
【解决方案2】:

首先,set -o vi 获得的“vi 模式”不是 vi 本身。它是内置于 readline 中的 vi 行为的不完整近似,readline 是 bash 在后台使用的命令行编辑库。

其次,因为它不完整,所以没有任何理由期望 每个 vi 命令都能正常工作。

第三,不,没有“vim 模式”,所以更没有理由期望 任何 vim 命令能够工作。

第四,如果你绝对想用类似 Vim 的命令来编辑当前的命令行,为什么不一路走下去……真正使用 Vim:

<C-x><C-e>

也就是说,$ man readline 告诉您自定义其行为和添加绑定所需的一切。

【讨论】:

  • 如果你已经处于vi模式,那么&lt;C-x&gt;&lt;C-e&gt;的等价物就是ESC+v
【解决方案3】:

通过将 vi-command-mode diw 添加到您的 ~/.inputrc 中,向任何使用 readline 的软件(例如 bash)教授:

set keymap vi-command
"diw": "bde"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-04
    • 2019-05-23
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2017-04-20
    相关资源
    最近更新 更多