不是重复的:
我不是在寻找一种方法来完成目录名或从固定目录执行脚本。我要解决的问题是在不按的情况下获取当前目录的完成信息/
我希望zsh制表完成.
以./
喜欢bash。
使用bash时,我习惯按.TABTAB来查看当前工作目录中的所有文件,因为它先完成./
后显示该目录中的所有内容。我希望/不惜一切代价避免出现这种情况的原因是,这/在我的德语键盘上比TAB用两根手指移动或在numpad上相距甚远而要困难得多,我宁愿切换回bash而不是键入a /
。我想要实现的目标,换句话说,bash的作用是:
$ . <TAB>
$ ./ <TAB>
foo.sh somedir/
$ ./ <F><TAB>
$ ./foo.sh <ENTER>
当我点击时使用zsh / oh-my-zsh.TAB会得到.
(点空格),这对我根本没有用。
zstyle ':completion:*' special-dirs true
with setopt auto_cd
(默认为oh-my-zsh)为我提供了最不实用的选项../
,因此我已经将其关闭了。我对的完成感到满意cd
。.
作用$PATH
,它应该保持这种状态。尽管例如f<TAB>
,我不介意完成./foo.sh
。我怎么能教zsh来完成.
,以./
甚至更好的本地目录中的内容,对吗?还是有另一种不涉及本地脚本文件的有效方式/?
巨大的挑战!在命令行上尝试此操作(如果可行),将其添加到〜/ .zshrc
bindkey '^I' dotcomplete
zle -N dotcomplete
function dotcomplete() {
if [[ $BUFFER =~ ^'\.'$ ]]; then
BUFFER='./'
CURSOR=2
zle list-choices
else
zle expand-or-complete
fi
}
它添加了一个功能,该功能在您每次按TAB(^ I)时运行。如果您当前键入的行仅包含一个点(^ =行的开头,'\。'=超级转义该点,$ =行的结尾),则将该点替换为./,然后继续正常完成。
它并没有完全按照您的要求执行,而是将点视为当前目录。但这将为您节省您要保存的击键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句