如何在zsh中用...替代../..指代祖辈目录,实现M-3 .生成../../..?
在zsh中实现用...指代上级目录的技巧
嘿,这个需求我太熟了!之前oh-my-zsh和prezto自带的这个便捷功能,自己在原生zsh里也能轻松配置,分两步就能搞定:
一、让...自动扩展为../..,以此类推
你只需要在~/.zshrc配置文件里添加一段自定义函数和绑定,就能实现输入.时自动补全上级目录的效果:
# 扩展...为../..,....为../../..,以此类推 function expand-dot-to-parent-directory-path { if [[ $LBUFFER = *.. ]]; then LBUFFER+=/.. else LBUFFER+=. fi } zle -N expand-dot-to-parent-directory-path bindkey "." expand-dot-to-parent-directory-path bindkey -M isearch "." self-insert
这段代码的作用是:
- 输入第一个
.时,就是普通的点; - 输入第二个
.变成..(上级目录); - 输入第三个
.时,会自动把...转换成../..(祖父目录); - 继续输入
.的话,每多一个就多一级上级目录,比如....会变成../../..; - 同时特意保留了搜索模式(isearch)下的
.为普通输入,避免影响你搜索文件时的操作。
二、绑定M-3 .快捷键生成../../..
如果你想要按下Alt+3+.直接插入../../..,可以在~/.zshrc里再添加这段配置:
# 绑定Alt+3+. 快速插入../../.. bindkey '^[3.' insert-three-level-up function insert-three-level-up { LBUFFER+=../../.. } zle -N insert-three-level-up
这里的^[代表Alt键(大部分终端都兼容这个写法),绑定后按下Alt+3再按.,就能直接在命令行里插入三级上级目录的路径。
最后一步:生效配置
写完上面的内容后,保存~/.zshrc,然后在终端里执行:
source ~/.zshrc
或者直接重启终端,所有配置就会生效啦!
内容的提问来源于stack exchange,提问作者Toothrot
相关产品推荐
相关产品推荐

