如何在Zsh的命令行中展开所有变量?

随身碟

在先前针对bash的问题中,我问如何在命令行中使用制表符补全扩展相对路径?

我喜欢@Mikel的答案,其中提到使用Ctrl+ Alt+e扩展所有变量,而我经常使用它。

从那时起,我切换到zsh,虽然可以键入$PWD并按Tab以扩展当前目录的路径,但是如果键入类似内容$PWD/.profile并按Tab则它不会扩展。

我已经在类似的问题,阅读起来,看到的扩大别名,以及如何扩大键入它们并按变量的答案Tab,但没有什么是一样按下Ctrl+ Alt+ebash

是否有某种方法允许转义序列(例如Ctrl+ Alt+)e在命令行中键入的所有变量展开zsh

阿达芬

您可以设置compinit来扩展您的参数~/.zshrc

zstyle ':completion:*' completer _expand _complete
autoload -Uz compinit
compinit

这是一个最小设置,如果您已经启用compinit,则将其添加_expand到以下设置中就足够completer

expand-word默认情况下,还有绑定到^X*Ctrl+ x *小部件,其本质上与bash中的相同绑定相同。

注意:两种方法仅适用于当前单词。


或者,zsh您实际上可以按照原始问题的要求进行操作:将相对路径转换为绝对路径。这是手册页中的一个稍作修改的示例zshcontrib(1)

# load necessary utility function
autoload -Uz modify-current-argument

# define helper function for actual work
expand-and-abspath () {
    # expand the path (for example `~` -> `/home/youruser`)
    REPLY=${~1}
    # transform into absolute path (use `:A` if you want to resolve symlinks)
    REPLY=${REPLY:a}
}

# actual widget function
abspath-word() {
    # use helper function on current word
    modify-current-argument expand-and-abspath
}

# create zle widget `abspath-word` (with function of the same name)
zle -N abspath-word

# bind widget to "Ctrl+x p"
bindkey '^Xp' abspath-word

这定义了abspath-word窗口小部件,该窗口小部件用绝对路径表示形式替换当前单词并将其绑定到Ctrl+ xp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在单个命令行中杀死所有PHP-FPM进程

我想将Bash脚本的所有命令行参数存储到单个变量中

命令行Zsh中的注释

如何在命令行的所有临时视图中取消签出文件?

如何在cmd中的setx命令的参数中使用全局变量(命令行)

如何在命令行(bash和zsh)中向后删除单词?

如何在bash / osX中从命令行列出所有已安装的软件包

如何在命令行中获取所有打开的窗口的列表?

如何在Windows的命令行中列出所有进程?

Windows命令行:如何在循环中附加变量?

如何在Bash命令行上展开*

如何在命令行中捕获所有访问的URL?

如何在Windows中显示所有进程的完整命令行

如何在Linux上裁剪和转换目录和子目录中的所有图像(命令行)?

如何在ZSH中的全屏编辑器中编辑命令行?

如何在ZSH中的全屏编辑器中编辑命令行?

如何在Windows命令行上保留程序的所有输出?

如何在特定时间后查找所有新修改的文件?(Windows命令行)

如何在Windows的命令行中杀死所有无头Chrome实例?

如何在Windows 7上从命令行删除所有COM端口?

如何在Robot框架中传递命令行参数以使其可用于所有库?

如何在命令行中取消设置变量?

如何在命令行上设置环境变量并使它出现在命令中?

如何在Debian 10命令行上定义变量?

如何在命令行上查看所有打开的拉取请求?

如何在单个命令行中恢复我的 Firebird 数据库并修改所有者设置?

如何在命令行中创建永久的 zsh 别名?

如何在 Windows 命令行中的变量中写入/存储命令的输出?

如何在linux的命令行中在后台处理带有if条件的命令