Shell Z壳中的cd-1、-2、-3等
如何设置Z shell,以便键入cd-可以列出以前访问过的路径,cd-1、-2、-3等会将您带到目录?如果使用Shell Z壳中的cd-1、-2、-3等,shell,autocomplete,zsh,zsh-completion,Shell,Autocomplete,Zsh,Zsh Completion,如何设置Z shell,以便键入cd-可以列出以前访问过的路径,cd-1、-2、-3等会将您带到目录?如果使用pushd而不是cd,则可以使用dirs列出目录,并使用popd将cd列到旧目录。您还可以设置autopush选项以获取cd的行为类似于pushd-q。以下是一个例子: setopt pushdsilent # Omit printing directory stack setopt autopush # Make cd push directories onto stack se
pushd
而不是cd
,则可以使用dirs
列出目录,并使用popd
将cd列到旧目录。您还可以设置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
。如果您的中有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 ~
为了能够用tab键完成列表,您可以将+
和-
参数与cd
一起使用(
表示您按下了tab键):
选项卡完整目录
我总是忘记了做以下事情的神奇顺序,所以我更新了答案来解释这一部分
+
和-
只会将您带到目录,您无法完成堆栈中的路径(即cd-2/
不提供任何信息)。要使其工作,可以使用波浪线(~
)
在3
中创建一些目录,使此示例更好
$ mkdir 3/foo 3/bar 3/baz
然后在堆栈中查找目录
$ cd ~+<TAB>
1 -- ~/1/2/3/4
2 -- ~/1/2/3
3 -- ~/1
4 -- ~
$cd~+
1 -- ~/1/2/3/4
2 -- ~/1/2/3
3 -- ~/1
4 -- ~
然后在条目上使用制表符完成
$ cd ~+2/<TAB>
4/ bar/ baz/ foo/
$cd+2/
4/bar/baz/foo/
c-减号是为这种需求而设计的
它支持正则表达式匹配,使用md5哈希在pushd
中避免重复
易于卸载和装载
此gif显示一些基本操作
您可以在上查看它。注意,您似乎可以在任何命令中使用它!例如,
vi~+4/it.txt'将编辑文件
~/1/it.txt'这不应该在Unix和Linux或超级用户上吗?
$ 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/