您如何设置 Z shell,以便键入 cd - 为您提供以前访问过的路径的列表,然后 cd -1、-2、-3 等将带您进入目录?
问问题
6366 次
3 回答
61
如果您setopt AUTO_PUSHD
在您的.zshrc
thencd
中将自动执行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 ~
为了能够使用 tab 完成列表,您可以使用+
and-
参数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
选项卡完整目录
我总是忘记执行以下操作的魔术序列,所以我更新了答案来解释这部分。
和只会带你到目录,你不能在堆栈中完成路径(即+
什么都不给你)。要完成这项工作,您可以使用波浪号 ( )。-
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/
于 2011-01-19T20:02:16.377 回答
7
如果您使用pushd
而不是cd
,那么您可以使用dirs
和 cd 列出目录到旧目录popd
。您还可以设置autopush
选项以使其cd
表现得非常像pushd -q
. 这是一个例子:
setopt pushdsilent # Omit printing directory stack
setopt autopush # Make cd push directories onto stack
setopt pushdminus # Invert meanings of +N and -N arguments to pushd
mkdir -p 1/2/3/4
cd 1
cd 2
cd 3
cd 4
popd # Go to previous directory (3) and remove it from directory stack
pushd - # Go to previous directory (4)
pushd -2 # Go 2 directories back the directory stack (2)
请注意,pushd
它不会从目录堆栈中删除任何内容,它只会旋转它。有关man zshbuiltins
更多详细信息,请参阅。
于 2010-10-21T12:19:30.307 回答
0
c-减号就是为这种要求而设计的。
它支持正则表达式匹配,使用 md5 哈希来避免pushd
.
轻松转储和加载。
此 gif 显示了一些基本操作。
于 2018-12-25T15:35:50.783 回答