zsh - 将 URL 解析为命令
问题描述
当我在终端中输入 git repo url 时,它具有以下输出:
% https://github.com/chmln/sd.git
zsh: no such file or directory: https://github.com/chmln/sd.git
我想https://github.com/chmln/sd.git
充当一个命令
git clone https://github.com/chmln/sd.git
cd sd
我试过preexec
钩子。
preexec () {
print ">>>preexec start<<<"
# print -l ${(qqq)@}
if [[ ${(qqq)@} =~ ^https.* ]]
then
echo URL
fi
print ">>>preexec end<<<"
}
输出是
% https://github.com/chmln/sd.git
>>>preexec start<<<
>>>preexec end<<<
zsh: no such file or directory: https://github.com/chmln/sd.git
我该如何解决这个问题。
解决方案
function _accept-line-with-url {
if [[ $BUFFER =~ ^https.*git ]]
then
echo $BUFFER >> $HISTFILE
fc -R
BUFFERz="git clone $BUFFER && cd $(basename $BUFFER .git)"
zle .kill-whole-line
BUFFER=$BUFFERz
zle .accept-line
else
zle .accept-line
fi
}
zle -N accept-line _accept-line-with-url
现在您可以将 github url 粘贴到提示符中,它将克隆 repo。
推荐阅读
- ruby - 从 Sinatra 扩展调用 Sinatra 的 DSL 方法
- flutter - 为图标添加边框颤动
- ansible - 使用 ansible 变量创建文件
- docker - 秘密“docker-registry-tls-certificate”中的现有私钥具有不匹配的字段:[spec.keySize]
- jmeter - 我们如何在 Jmeter 的 html 报告中分析图表每秒点击次数和图表响应时间与请求
- angular - 存储单个 fcm 令牌是否足以用于多个设备
- reactjs - 如何使用 React SDK 访问 auth0 令牌?
- android - 如何关闭具有身份验证错误的应用程序
- sql - SQL 查询聚合以前的结果
- mysql - 如何在 MySQL/MariaDB 中加入两个巨大的表?