0: native (naive)
用 cd
+
补全来切换目录, 或者用通配符如 cd g*i
来切换目录. 这都是最原始的方法, 很累很费脑.
用 pushd
和 popd
来切换... 也很费脑子. 我是没有学会.
1. zsh
zsh 的 cd
+
可以切换选择目录, 这是第一个优势 (oh-my-zsh 的功劳?). 还可以用 d
输出当前 shell 进过的目录, 然后通过数字选择进入:
$ d
0 ~/git/misc/knitr
1 ~/git/Basic-Single-Module-SSM/doc
2 /tmp
$ 0
$ pwd
~/git/misc/knitr
已经很友好, 不过这里只会是你前面 cd 过的文件夹. 退出当前 shell 后, 这些记录就没有了.
2. autojump
autojump 是另一个工具, 可以从你的 zsh_history 拿到你常入的文件夹, 通过 fuzzy 匹配来跳转, 比如:
$ j bff
/Users/zxtang/git/OTR-AS/service-bff
很方便就进入了 service-bff 文件夹. autojump 还提供 jo
(open in Finder), jc
(open child folder) 以及 jco
(open child folder in Finder), 但实话说 jc / jco
可用性很差, 因为你要到相应的父目录才能用它跳转到子目录.
3. zsh-interactive-cd
zsh-interactive-cd: Fish like interactive tab completion for cd in zsh.
可以一级一级地搜索过滤, 然后进入.
4. fzf
fzf: A command-line fuzzy finder.
fzf 可以搜索自己的 zsh_history (绑定在 C-r 上), 还可以输入当前文件夹下的文件 (绑定在 C-t 上), 还可以把过滤当前文件夹下所有的子目录, 选中并进入 (绑定在 M-c (或者 Escape c) 上).
这里是一个演示视频:
fzf 的 wiki 里面还有各种跳转目录的 膜法, 如果你觉得 C-t 和 M-c 不够用, 可以一个个试试.
参考资料:
- Quick directory navigation in the bash shell - Unix & Linux Stack Exchange
- Examples · junegunn/fzf Wiki
- 命令行上的 narrowing(随着输入逐步减少备选项)工具 - 巴蛮子 - 博客园
吐槽: 越来越捉急, 图片链接都不支持了?
就现在, 图片链接只能在 caption 上点, 图片上无效. 昨天都不是这样!