任何人都知道一种让 zsh 向我显示如果我现在点击返回时我将进入的父目录的预览的方法?
例如,如果我在目录树的深处,我开始输入....(扩展为../../..),我想预览最高的文件夹名称,我最终会在这三个目录树中跳转.
....我想to的扩展是../../..即时发生的,所以你有一个特殊的键绑定.。我也是,它的灵感来自 \n J\xc3\xa9r\xc3\xa9mie Roquet\ 在 zsh 用户邮件列表上的帖子。我扩展了这个函数,调用它来显示路径,该路径将在迷你缓冲区magic-dot中引用,即在命令行下方:
user@linux:~/foo> ls ../../\n[ /home/ ]\nRun Code Online (Sandbox Code Playgroud)\n\n我的代码有一些缺点:
\n\nperl生成输出)(第 1 点和第 3 点应该是可以修复的,但很抱歉我现在没有这样做。)
\n\n但在大多数情况下,它对我来说效果很好,所以我想分享一个最小的(不是真的?!)工作示例作为自己实验的起点:
\n\nPS1="$PS1o"\n\nterminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]\n\nfunction zle-statusline() {\n PS1="%{${terminfo_down_sc}$1$terminfo[rc]%}$PS1o"\n zle reset-prompt\n}\n# taken from http://stackoverflow.com/questions/3622943/zsh-vi-mode-status-line\nzle -N zle-statusline\n\nfunction magic-dot() {\nif [[ $LBUFFER = *. && $LBUFFER != *{*. && ${${${(z)${:-DUMMY $LBUFFER}}[-1]}[1]} != \'/\' ]]; then\n LBUFFER+=./\n zle-statusline "[ $(print "$(builtin pwd -P)"/${${(z)${:-DUMMY $LBUFFER}}[-1]} \\\n | perl -pe \'s/\\n//; $i=0; while($_=~/\\.\\./ && !($_=~/^\\/\\./)) { $i++; if($i>100) {print "INFTY!"; exit;} s/\\/[^\\/]+\\/\\.\\.// }\') ]"\nelif [[ $LBUFFER = *../ && ${${${(z)${:-DUMMY $LBUFFER}}[-1]}[1]} != \'/\' ]]; then\n LBUFFER+=../\n zle-statusline "[ $(print "$(builtin pwd -P)"/${${(z)${:-DUMMY $LBUFFER}}[-1]} \\\n | perl -pe \'s/\\n//; $i=0; while($_=~/\\.\\./ && !($_=~/^\\/\\./)) { $i++; if($i>100) {print "INFTY!"; exit;} s/\\/[^\\/]+\\/\\.\\.// }\') ]"\nelse\n zle self-insert\nfi\n}\nzle -N magic-dot\nbindkey "." magic-dot\n\nprecmd () { PS1="$PS1o" }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |