shell - Z shell 中的 cd -1、-2、-3 等

标签 shell autocomplete zsh zsh-completion

您如何设置 Z shell,以便键入 cd - 为您提供以前访问过的路径列表,然后 cd -1、-2、-3 等将带您到目录?

最佳答案

如果您有 setopt AUTO_PUSHD在您的 .zshrc然后 cd会自动做一个 pushd您更改到的每个目录。以 ZyX 为例:

$ setopt AUTO_PUSHD
$ mkdir -p 1/2/3/4
$ cd 1
$ cd 2
$ cd 3
$ cd 4

您可以使用 dirs 查看目录列表。 :
$ dirs -v
0    ~/1/2/3/4
1    ~/1/2/3
2    ~/1/2
3    ~/1
4    ~

为了能够完成列表,您可以使用 +-cd 的参数( <TAB> 意味着您按下了 Tab 键):
$ cd +<TAB>
1 -- ~/1/2/3
2 -- ~/1/2
3 -- ~/1
4 -- ~

或者反过来:
$ cd -<TAB>
0 -- ~
1 -- ~/1
2 -- ~/1/2
3 -- ~/1/2/3

然后只需选择号码即可转到该目录:
$ cd +2
$ pwd
~/1/2

选项卡完整目录

我总是忘记执行以下操作的魔术序列,因此我更新了答案以解释这部分。
+-只会带你到目录,你不能用tab键完成堆栈中的路径(即cd -2/<TAB>什么都不给你)。要使这项工作正常进行,您可以使用波浪号 ( ~ )。

3 中创建一些目录使这个例子更好。
$ mkdir 3/foo 3/bar 3/baz

然后在堆栈中找到目录。
$ cd ~+<TAB>
1 -- ~/1/2/3/4
2 -- ~/1/2/3
3 -- ~/1
4 -- ~

然后在条目上使用制表符完成。
$ cd ~+2/<TAB>
4/    bar/  baz/  foo/

关于shell - Z shell 中的 cd -1、-2、-3 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986760/

相关文章:

linux - 在 Bash 脚本中嵌入密码

python - Emacs Jedi 自动完成无法在 init 上工作

python - 在 Sublime Text 3 中使用 Anaconda 自动完成 Django

javascript - 单击提交按钮时使用关闭按钮使文本可清除

shell - zsh 和动态变量

zsh - 如何在多台机器之间共享 zsh 历史记录?

Git 日志不显示口音

shell - 为什么在 zsh 中使用 {1..9} 会出现此错误?

linux - 在 tcsh 中隐藏 stderr 和管道 stdout

bash - tr 输出到新行