bash(1)
中的命令完成非常方便;我非常喜欢这个功能。但我有一个问题。
例如,我们在Documents
目录中都有Downloads
和$HOME
。
因此,如果我输入cd ~
然后按 TAB ,它将遍历$HOME
下的所有目录。当Documents
出现并且shell现在显示cd ~/Documents
时,我想深入了解此目录。例如,work
中有一个Documents
目录。我的目的是cd
到work
目录。
那我该怎么办?
我通常输入一个w
然后按 TAB ,但是当这个动作重复太多时我发现它很烦人。有时我不确切知道这个目录下的文件是什么。
你有什么好主意吗?
ps:事实上,当我使用vim时,我遇到了这个问题。我输入:e
然后 TAB ,它将循环子文件夹,我发现停止循环并进入下一级别的唯一方法是输入/
。所以路径最后有两个'/'。
答案 0 :(得分:3)
您可以将shell切换到ZShell,这样您就可以在不键入第一个字母的情况下浏览目录。
例如,您可以输入
cd ~/
按 TAB 将显示所有子文件夹的列表(如bash中),但多次按 TAB 将允许您循环浏览子文件夹。按 - > 或 / 键将允许您在该目录中启动制表符,依此类推。
您有时可以使用chsh
(man chsh获取更多信息)来更改您的shell,如果它是您自己的个人计算机,或者您的网络可能有一种特殊的方式来更改您的shell。您可能还希望Google使用一些常见的.zshrc
/ .zshenv
设置,或者迁移旧的.bashrc
/ .cshrc
/ .profile
设置。
Zsh还有办法为其他任务设置TAB完成,例如,它可以根据那些尚未在SVN中的文件来完成svn文件(对于svn add
)。要获得这些功能,请添加
autoload -U compinit
compinit
到你的.zshrc文件。有很多方法可以在zsh中自定义TAB完成(例如,不区分大小写,或者对不同程序的参数),但如果您对这些方法感兴趣,可以通过搜索找到比我所知的更多信息。 / p>
答案 1 :(得分:2)
就像Jack Toole的zsh建议(这是一个非常精细的shell),如果你必须使用bash,你可以在你的.bashrc中坚持使用相同的“继续点击 tab 循环可能性“功能:
test -n "$PS1" && bind TAB:menu-complete
还有一个名为bash-completion的项目除路径名完成外还提供了许多其他类型的完成。
答案 2 :(得分:0)
如果你不知道目录中的内容,只需再次按 TAB 。