![从完成建议中选择特定结果](https://linux22.com/image/1053633/%E4%BB%8E%E5%AE%8C%E6%88%90%E5%BB%BA%E8%AE%AE%E4%B8%AD%E9%80%89%E6%8B%A9%E7%89%B9%E5%AE%9A%E7%BB%93%E6%9E%9C.png)
假设某个目录中有 3 个文件:abc.txt, aww.txt, ant.txt
如果我这样做:(cat a
并按下 Tab 键查看选项)终端将显示 3 个文件名:abc.txt, aww.txt, ant.txt
有没有办法通过指定终端显示的结果中的索引号来选择第 n 个结果,而不是输入?
类似于:cat a2
获取第二个文件(aww.txt
)?
答案1
假设您正在使用 bash,请将以下内容添加到您的~/.bashrc
:
bind '"\e[6~": menu-complete'
bind '"\e[5~": menu-complete-backward'
或者要更改使用 readline 完成库的所有程序(不仅仅是 bash)的默认值,请创建~/.inputrc
包含以下内容的文件:
$include /etc/inputrc
"\e[6~": menu-complete
"\e[5~": menu-complete-backward
现在,当您打开一个新终端时,您可以按:
- TAB正常查看可用的完成情况。
- Pg Dn选择第一个完成或更改为下一个。
- Pg Up选择最后完成的操作或更改为上一个。
- Alt+nPg Dn选择第 n 个完成或向前移动 n 个完成。
因此对于您的示例类型Pg DnPg Dn或Alt+2Pg Dn来获取第二个文件aww.txt
。