![当有多个文件/目录时,如何使终端自动完成?](https://linux22.com/image/966671/%E5%BD%93%E6%9C%89%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%2F%E7%9B%AE%E5%BD%95%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BD%BF%E7%BB%88%E7%AB%AF%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%EF%BC%9F.png)
如果我有多个目录,例如:
afoo abar
有时当我按下 Tab 键时,我的终端会拒绝自动完成(例如“cd a”然后按 Tab 键),而是打印目录列表。有时它甚至会发出嘈杂、烦人的声音。有什么想法可以让它在这种情况下自动完成吗?例如,它可以先显示 abar,然后如果我再次按下 Tab 键,显示 afoo。我看到 Windows 或 Ubuntu 中的某些应用程序就是这种情况
答案1
对我来说,一件可以拯救我生命的事就是让 bash 循环显示所有可能性,而不是显示一个愚蠢的列表。
由于 bash 正在使用readline
其自动完成功能,因此将以下几行添加到~/.inputrc
一旦您满意并彻底测试了以下解决方案几天/几周,剪切和粘贴(不要复制!) 相同的设置~/.inputrc
包含/etc/inputrc
系统范围的设置,使其可供系统上的所有用户(包括访客)使用。
代码:
# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right:
"\e[C": forward-char
"\e[D": backward-char
# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward
然后exit
你的终端(或像 putty 这样的远程终端)并再次打开它...
例子:
当您有 3 个文件:
file1
,file2
和file3
并且您输入:e fTabTabTab
它会循环:
e file1 e file2 e file3
当你想向后循环时,只需按Shift+Tab
当你输入:
very-complicated-command with lots of command line parameters
下次你需要相同的命令时,只需输入:
very↑
它会为你输入:
very-complicated-command with lots of command line parameters
这将为你节省大量时间!;-)
答案2
第一个字母之后,tab你需要插入更多字母。因此,如果你输入
cd a
并点击tab你什么也得不到,一秒钟后tab(紧接着),你会得到一个以 开头的名字列表a
,然后需要插入一个f
让它自动完成剩余的部分,所以
cd a
tabtabf
tabtab
将导致
cd afoo
答案3
要在 Bash 中执行此操作,请将以下内容添加到您的 bash 文件中:
# make tab cycle through commands after listing
bind '"\t":menu-complete'
bind "set show-all-if-ambiguous on"
bind "set completion-ignore-case on"
bind "set menu-complete-display-prefix on"
效果很好。(摘自这里正如@muru 在评论中提到的那样)
答案4
Linux 版 Fig 处于测试阶段:https://fig.io/user-manual/linux
它运行良好,并具有许多其他功能,Ubuntu 是其支持的发行版之一。