我想知道是否可以指定一个键来在 bash 中后退或前进一个完整的参数。也就是说,如果我有:
prompt> somecmd a/b/c/d/e/f/g/h a_b_c_d_e_f_g`
在我的终端上(假设光标在末尾),我想转到第一个参数的开头,我必须按 alt-f 15 次(注意:我在 Windows 机器上使用 putty)。我通常使用长度超过 500 个字符的命令行,其中大多数命令行都是带有下划线的路径。如果能够跳到上一个(空格分隔的)参数而不是上一个单词,那就太好了。
(注:我发现了一个问题,其中建议使用 ^R 后跟空格,但由于某种原因,这会给我前一个命令而不是搜索前一个空格)。
答案1
我找到了一个参考资料——搜索了一番,所以我将答案发布在这里,希望它能为其他人节省一些时间。在 ~/.bashrc 中,您可以输入:
bind '"\eOD":vi-backward-bigword'
bind '"\eOC":vi-forward-bigword'
请注意,\eOD
在我的特定终端上, 代表 ctrl-forward-arrow。要找出其他键或终端的绑定,请按下,ctrl-v
然后按下要分配的键,它将输出键模式。在键模式中,将 替换为^[
(\e
例如^[OD
更改为\eOD
),并将其用于您的绑定
您还可以将定义放在 ~.inputrc 中,如下所示:
"\eOC":vi-forward-bigword
"\eOD":vi-backward-bigword
您可以用它bind -P
来检查您的绑定以查看它是否绑定正确。