【问题标题】:bash cursor moving in command line with searchbash光标在带有搜索的命令行中移动
【发布时间】:2017-05-15 09:18:36
【问题描述】:

是否可以在使用搜索编辑长 bash 命令时移动光标,而不仅仅是使用箭头?在当前输入的命令中进行正则表达式搜索。据我了解 bash 自己无法做到这一点,但可能还有其他方便的解决方案?

【问题讨论】:

    标签: bash command-line


    【解决方案1】:

    实现您所追求的最佳方式(如果您在十个月后仍然想知道)是使用快捷方式生成 bash 默认编辑器(可以在 bash 上使用 export EDITOR=vim 更改): Ctrl+x+e (按住 Ctrl,然后按 x,然后按 e)。

    来自 bash 人:

    编辑和执行命令 (C-xC-e)

    在当前命令行上调用编辑器,并将结果作为 shell 命令执行。 Bash 尝试按顺序调用 $VISUAL、$EDITOR 和 emacs 作为编辑器。

    您会发现自己进入了一个 vim(或 vi、nano 或其他......)会话,您可以在其中使用编辑器提供的每个快捷方式编写命令。 这种方法的缺点是,很明显,您会丢失 bash 快捷方式,因此在会话期间没有用于完成的选项卡。

    老实说,当命令太大时,我喜欢自己在文本文件中编辑它,将其作为脚本运行。这允许您测试和更改命令,直到它工作为止,Ctrl+x+e 创建一个临时文件,一旦命令运行。

    【讨论】:

    • 是的,我已经听说过 C-xC-e。但是您的回答对其他人有所帮助。再等一会 - 退出编辑器后,命令自动执行。在 EDITOR 中编辑后是否可以留在命令行中?
    • 有一些方法可以在 vi 中运行脚本(参见 stackoverflow.com/questions/953398/…),但坦率地说,我认为这不是很高效,我也觉得你无法看到输出。当我发现自己需要运行很长的 bash 行,并且想在不离开 vi 的情况下多次运行时,我只需使用 tmux 和快捷键 ctrl-B, Shift 2 - 这会将当前屏幕拆分为两个水平窗格。然后你可以在 vi 上修改你的行,比如说在上面的窗格中,然后在你可以检查输出的下面运行它。
    【解决方案2】:

    我个人所做的是 CTRL+ArrowL/R 它将逐字移动光标而不是逐字母移动。您还可以使用键盘上的这些箭头:↖ ↘ 转到当前行的开头(分别为:结尾)。其背后的想法是更高效地编辑命令行。

    但我认为没有可用的命令搜索...或者您可以将其写入脚本并使用文本编辑器进行搜索

    【讨论】:

    • 你的意思是“箭头:↖↘”是终点和家吗?
    • 取决于您拥有的键盘,但是是的,我认为我们谈论的是相同的键
    • 一些终端使用 CTRL+ArrowL/R(我的例子是在标签之间切换),所以我使用 ESC+F/ESC+B 逐字向前/向后移动光标
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多