如何编写一个接受不需要引用的参数字符串的函数?

如何编写一个接受不需要引用的参数字符串的函数?

我正在编写一个函数,将其添加到我的 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以使其永久化。

其他人更喜欢使用一个小部件/插件来引用某些命令后的所有内容(请参阅这里或者这里)...所以是的,有多种方法可以为您报价。

相关内容