1
2i2Re2PLMaDnghL 2021-11-30 10:29:52 +08:00
cd $(dirname ^T{选择你的目标} )
^T 可以在任何地方使用 |
2
aloxaf 2021-11-30 11:20:18 +08:00 1
fzf 确实可以自定义动作,但你这个需求做不到——因为 fzf 只能在新开的 shell 里执行命令,影响不到上层的 shell
你这个需求只能配置 shell 了,比如 zsh 的是这样: https://fars.ee/DsX7/zsh |
3
975779964 OP @aloxaf 哇,遇到 fzf-tab 的作者了! 是我想要的结果 , zsh 里面定义 快捷键也可以 ! 谢谢 ,但是 我 shell 太差, 有点不明白
fzf-file-widget() { cd ${$(__fsel):h} # 这个 __fsel 是啥? (__fsel):h 又是什么意思 local ret=$? # 在函数中定义局部变量 将上个 cd xxx 的结果返回 (但是 cd xxx 结果应该返回 0 呀 return 0 做什么呢? ) # 这两行是刷新 prompt 的,可以去掉, (zle 好像是 定义 zsh 快捷键之类 的) zle push-line-or-edit zle accept-line return $ret } zle -N fzf-file-widget bindkey '^T' fzf-file-widget 能不能帮我解释下…… 或者 有没有对应 资料 的网站 我去 学习下 |
4
975779964 OP @aloxaf 我大概明白了,
__fsel 应该是调用 fzf 的命令 $(__fsel):h 是 把是取目录名,即最后一个 / 之前的部分,如果没有 / 则为 . 现在的问题是 为什么要返回 cd xxx 这个命令的结果呢? |
5
aloxaf 2021-11-30 14:26:56 +08:00 1
> 这个 __fsel 是啥?
__fsel 是 fzf 的 zsh 配置里定义的函数,我只是猜测你应该用了官方配置 https://github.com/junegunn/fzf/blob/master/shell/key-bindings.zsh#L42 > 为什么要返回 cd xxx 这个命令的结果呢? 因为我是拿 fzf-file-widget 改的( 原本的目的是返回 __fsel 的状态码,我这里偷懒没做处理,我推荐你处理一下——否则当使用 C-c 中断 fzf 时,就会回到 HOME 目录 |
6
975779964 OP @aloxaf 谢谢! 学习了, 原来 zsh 也有自己的 语法 https://github.com/goreliu/zshguide
|