如果当前目录中有一个以“build”开头的长文件名,我可以在控制台中输入“build”,按下后,Tab自动完成功能会为我输入完整文件名。但是,如果我有多个以 开头的文件,build
自动完成功能不起作用 - 它只会给我一个以 开头的文件列表build
。
相反,在 Windows 中,按下Tab键会立即给我第一个文件的完整文件名,如果我Tab第二次按下键,它会给我第二个文件名。
如何像在 Windows 中一样在 Linux 中自动完成文件名?PS:如果我有几个仅扩展名不同的长文件名,那就太糟糕了。
答案1
如果它们只是扩展名不同,则自动完成将自动填充所有选项,直到有多个选项为止。当按 Tab 键产生名称列表时,键入下一个字符并再次按 Tab 键以恢复自动完成。
因为我是 Linux 用户,所以我确实对 Windows 自动完成的工作方式感到困惑,我想这就是你所习惯的 ;)
答案2
对我来说,一件可以拯救我生命的事就是让 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
这将为你节省大量时间!;-)
答案3
您有 2 个选择:
1)您可以再输入一个字母,然后再次输入
2) 使用具有更好补全功能的 shell。我使用 zsh,但 fish 也有很棒的(稍微好一点的)补全功能
对于 zsh,请查看哦我的天啊
编辑:至少在默认的 zsh 配置中,你需要按两次 Tab 键才能开始循环显示选项