在当前目录中填写最新使用的文件

Ger*_*ard 14 zsh

我正在寻找一种方法来快速访问命令行上的最新文件/目录,最好是在ZSH中.

ls -d *(om[1])
Run Code Online (Sandbox Code Playgroud)

给我这个,如果我想用命令,例如少*(om [1])

这也有效.

但是,键入所有括号是很繁琐的,我使用了很多 - 因此我正在寻找一种方法来为这个字符串创建一个快捷方式.

我在.zshrc文件中创建了一个函数

lf(){ 
ls -d *(om[1])
}
Run Code Online (Sandbox Code Playgroud)

,我可以像这样使用:

less <$(lf)
less <`lf`
Run Code Online (Sandbox Code Playgroud)

,但我发现这仍然不太理想.

less |lf
Run Code Online (Sandbox Code Playgroud)

不起作用.

有没有办法快速访问最新的文件而不使用"难以输入字符"?理想情况下,它只是一些东西

less LATEST
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

hch*_*baw 15

你可以使用_most_recent_file (^Xm).

_most_recent_file(^ Xm)

完成与命令行上的模式匹配的最近修改的文件的名称(可能为空).如果给定数字参数N,则完成第N个最近修改的文件.请注意,完成(如果有)始终是唯一的.

- zshcompsys(1) BINDABLE COMMANDS

所以,我们可以得到打字最近的文件CTRL-x- m.例如:

% less ;# typing `CTRL-X m` here, we could get:
% less newest-file-or-directory
Run Code Online (Sandbox Code Playgroud)

我们可以在这里指定一些模式,例如:

% less *.log ;# when I want the newest *.log:
% less newest.log
Run Code Online (Sandbox Code Playgroud)

这是需要有一些autoload -Uz compinit; compinit~/.zshrc,但.


gle*_*man 11

你想要一个zsh 全局别名

alias -g latest='*(om[1])'
less latest
Run Code Online (Sandbox Code Playgroud)