【问题标题】:visual selection in bash / clibash / cli 中的视觉选择
【发布时间】:2011-03-28 17:15:52
【问题描述】:

有没有办法让 bash 使用 visual selections 进行 文本替换

标准文本输入约定不起作用:

  1. 如果您按 Shift+向左箭头,则应在视觉上选择左侧的字符
  2. 如果您按 Ctrl+向左箭头,光标应移动到前一个单词的开头
  3. 如果您按 Shift+Ctrl+向左箭头,则应在视觉上选择左侧的单词
  4. 如果您在视觉上选择了一些文本然后按任意键,则该文本应替换为您按下的键的文本

Vi 模式 (set -o vi) 视觉选择约定不起作用:

  1. 如果你进入普通模式,按'v'进入视觉选择,然后按'h',它应该视觉选择左边的字符
  2. 如果你进入普通模式,按'v'进入视觉选择,然后按'B',它应该视觉选择左边的单词
  3. 如果您直观地选择了一些文本然后按“R”,它应该会删除文本并让您输入替换内容

【问题讨论】:

  • 鼠标选择由您的终端模拟器(或在 linux 终端中由 gpm)处理,而不是由您的 shell。实际上,我还没有看到任何能够使用鼠标事件的 shell。您可能可以编写一个脚本来处理<C-S-Left> 按键并模拟可视模式(zsh zle 肯定允许这样做,但我不确定您是否可以在此处突出显示选择;如果没有突出显示它是无用的),但它无关用鼠标。
  • 当您谈论 vi 约定时,您是否使用set -o vi 运行?

标签: bash vim vi command-line-interface


【解决方案1】:

这个guy 是为 zsh 做的:

我为 !ZSH 制作了 VI VISUAL 模式。在命令行中模拟 !VIM 的可视模式 "v"。 http://bazaar.launchpad.net/~raybuntu/%2Bjunk/ZSH_stuff/annotate/head%3A/zle_vi_visual.zsh

太棒了!

【讨论】:

    【解决方案2】:

    当我想在 ZSH 中执行此操作时,我使用 edit-command-line。您可以将以下内容添加到您的.zshrc

    autoload -U edit-command-line
    zle -N edit-command-line
    bindkey -M vicmd v edit-command-line
    

    然后我可以在命令模式下输入v,它会打开我的$EDITOR。您可以在 Bash 中执行相同的操作,只需在命令模式下键入 v 而无需任何自定义。

    【讨论】:

    • 确实可以键入“v”来打开完整的 vim,这可以很好地进行视觉选择,但是您会失去 bash 的上下文自动完成功能,这是必不可少的。我想知道是否有办法配置它,以便 vim 使用它的自动完成命令 C-x C-p C-n 等来使用 bash 完成 ...
    • 那将是一个很棒的插件!我进行了快速搜索,但没有找到任何东西。
    • 这实际上不是我的问题的答案,但你应该因为尝试而获得荣誉。我实际上不认为有一个程序遵守为终端编写的约定 - 令人震惊。对我来说听起来像是一个 GSOC 项目......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2017-01-24
    • 2011-03-21
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多