我是一个相对的 Linux 新手:我在 Windows 11 机器上通过 WSL2 中的 Ubuntu 安装使用 bash shell 已有一段时间了,最近决定完全切换到 Linux。我的问题是关于使用终端更改目录和使用制表符自动完成功能。
以前,当我在 Ubuntu 上导航时,我能够cd ..
在命令行中键入,然后按下,tab
这将完成命令cd ../
。我敢发誓,当我启动我的新安装(Kali Linux)时,我能够做同样的事情。但现在,当我尝试这样做时(键入cd ..
,然后按下tab
以自动完成将其更改为cd ../
),我看到的却是以下内容:
neofetch
以下是我的系统上的输出:
OS: Kali GNU/Linux Rolling x86_64
Host: NH50_70RA
Kernel: 6.8.11-amd64
Uptime: 1 day, 1 hour, 16 mins
Packages: 3900 (dpkg)
Shell: zsh 5.9
Resolution: 1080x1920, 1920x1080
DE: Plasma 5.27.10
WM: KWin
Theme: [Plasma], Breeze [GTK2/3]
Icons: [Plasma], Vivid-Dark-Icons [GTK2/3]
Terminal: gnome-terminal
CPU: Intel i7-9750H (12) @ 4.500GHz
GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630]
GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q
Memory: 6228MiB / 31813MiB
我觉得不同的行为是由于在 Ubuntu 上使用 bash 而在当前设置上使用 zsh。我在 .zshrc 中找到了有关不同配置选项的参考资料,并仔细查看了它,但我找不到任何突出的东西来说明我可以做些什么来获得我想要的行为。我认为这是因为我没有完全理解文档,而不是解决方案不在那里。
如果有人能帮助我找出实现这种期望行为的最佳解决方案,我将不胜感激。
对于任何想要回答这个问题的人,请查看我在 Unix-Linux StackExchange 上发表的这篇文章。在撰写本文时,那里有两个非常好的解决方案帮助我完成了我需要做的事情。以下是我从那里得到的简要总结:
根据@Gilles 'SO- stop being evil's 的回答,将这两行添加到我的
.zshrc
文件中可以实现我所寻找的确切功能 -非常感谢@Gilles‘SO-stop being evil’的回答和解释。
来自 @Stéphane Chazelas 的回答 将此添加到我的
.zshrc
文件中主要会产生相同的行为,但我忘了提到我将此行为与全局别名结合使用,因此在这种情况下它对我来说并不是 100% 有效。这仍然是一个很好的解决方案,具有同样出色的解释。非常感谢 @Stéphane Chazelas -另外非常感谢@Stéphane Chazelas 提供的这个魔法点函数,如果把它放在我的
.zshrc
文件中,我可以实现基本相同的功能,但格式略有不同,我最终非常喜欢它,以至于我认为这就是我会长期使用的功能 -