gpt4 book ai didi

bash - 在终端命令行上移动光标的最快方法?

转载 作者:行者123 更新时间:2023-11-29 08:38:15 28 4
gpt4 key购买 nike

在终端中给定的很长的命令行上移动的最佳方式是什么?

假设我使用箭头键或 Ctrl-R 来获取这个长命令行:

./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50 

现在我需要将光标移动(从行首或行尾开始)到 --option25 以修改那里的内容。

到达那里最快的方法是什么?我通常做的是 Ctrl-A 到开头,然后重复 Alt-F 继续前进, 逐字逐句(或 Ctrl-E 到最后,然后 Alt-B 向后) .但是在一条很长的线上需要太多时间。必须有一种方法可以搜索并直接跳转到我需要修改的部分,例如option25?

最佳答案

明确地说,您不需要“在终端命令行上快速移动光标的方法”。您真正想要的是一种在您的 shell 程序中通过命令行导航的快速方法。

Bash例如,非常常见的外壳。它使用 Readline库来实现命令行输入。可以这么说,了解 Readline 绑定(bind)非常方便,因为它不仅用于 bash。例如,gdb 也使用 Readline 来处理输入。

在 Readline 文档中,您可以找到所有与导航相关的绑定(bind)(以及更多): http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction

如果上面的链接失效,请进行简短的复制粘贴:

基本要素

  • Ctrl-b 后退一个字符。
  • Ctrl-f 向前移动一个字符。
  • [DEL]或[Backspace]删除光标左边的字符。
  • Ctrl-d 删除光标下的字符。
  • Ctrl-_ 或 C-x C-u 撤消上一个编辑命令。您可以一直撤消到空行。

运动

  • Ctrl-a 移动到行首。
  • Ctrl-e 移动到行尾。
  • Meta-f 向前移动一个词,其中一个词由字母和数字组成。
  • Meta-b 向后移动一个单词。
  • Ctrl-l 清除屏幕,在顶部重新打印当前行。

杀死并猛拉

  • Ctrl-k 终止从当前光标位置到行尾的文本。
  • M-d 从光标处终止到当前单词的结尾,或者,如果在单词之间,则终止到下一个单词的结尾。单词边界与 M-f 使用的边界相同。
  • M-[DEL] 从光标处删除当前单词的开头,或者,如果在单词之间,则删除到前一个单词的开头。单词边界与 M-b 使用的相同。
  • Ctrl-w 终止从光标到前一个空格。这与 M- 不​​同,因为单词边界不同。
  • Ctrl-y 将最近杀死的文本拉回光标处的缓冲区。
  • M-y 旋转止动环,拉动新的顶部。只有在前面的命令是 C-y 或 M-y 时,您才能执行此操作。

M 是元键。对于 Max OS X 终端,您可以为此在设置/键盘中启用“使用选项作为元键”。对于 Linux,它更复杂。

更新

另请注意,Readline 可以在两种模式下运行:

将 Bash 切换为使用 vi 模式:

$ set -o vi

我个人更喜欢 vi 模式,因为我使用 vim 进行文本编辑。

奖金

在 macOS 终端应用程序(以及 iTerm 中),您可以按住 Option 键并单击以移动光标(光标将移动到单击的位置)。这甚至可以在 vim 中使用。

关于bash - 在终端命令行上移动光标的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/657130/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com