我正在编写一个函数,将其添加到我的 Mac 上的 ~/.zshrc 中。这是为了更快地处理youtube-dl
.
我有这个:
function dlv()
{
cd /Users/admin/Downloads
youtube-dl -f 'best' "$1"
}
但是当我提出请求时,我必须输入带引号的 YouTube 链接。
dlv "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
代替dlv https://www.youtube.com/watch?v=dQw4w9WgXcQ
我怎样才能实现这个目标?
答案1
嗯,zsh
可以为您引用网址通过函数和zle
- 行编辑器:
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
然后当您在终端中输入或粘贴 URL 时,它会被自动引用。
另一种方法(也使用zle
)是将快捷方式(例如Ctrl+ Alt+)分配y给为您构建命令行的函数,即它在引用的 URL 之前插入命令及其选项:
dlv () {
cmd='youtube-dl -f best '
jump=$(( ${#${(qq)BUFFER}} - ${#BUFFER} ))
BUFFER=${cmd}${(qq)BUFFER}
CURSOR+=$(( ${#cmd} + jump ))
}
zle -N dlv
bindkey '^[^y' dlv
您可以这样使用它:输入或粘贴 URL,然后点击Ctrl+ Alt+y引用 URL,youtube-dl -f best
在其前面添加并将光标定位在行尾。然后点击Enter
将上述内容添加到您的中.zshrc
以使其永久化。
其他人更喜欢使用一个小部件/插件来引用某些命令后的所有内容(请参阅这里或者这里)...所以是的,有多种方法可以为您报价。