在先前针对bash的问题中,我问如何在命令行中使用制表符补全扩展相对路径?
我喜欢@Mikel的答案,其中提到使用Ctrl+ Alt+e扩展所有变量,而我经常使用它。
从那时起,我切换到zsh
,虽然可以键入$PWD
并按Tab以扩展当前目录的路径,但是如果键入类似内容$PWD/.profile
并按Tab则它不会扩展。
我已经在类似的问题,阅读起来,看到的扩大别名,以及如何扩大键入它们并按变量的答案Tab,但没有什么是一样按下Ctrl+ Alt+e在bash
。
是否有某种方法允许转义序列(例如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] 删除。
我来说两句