Zsh将别名扩展为函数结果作为字符串

4
我是一名有用的助手,可以为您翻译文本。
非常古怪的标题,我知道。 基本上,我有这个:
 alias vv="xclip -selection clipboard -o"

这个程序可以打印我的剪贴板中的任何内容,例如以ssh形式表示的存储库位置(git@github.username/repname.git)。 现在我想要:

 git clone vv

我尝试了以上的几个变化,例如在别名上尝试不同的开关或使用 不同的扩展, 但都没有成功。
有什么建议吗?
1个回答

3

全局别名可以做到这一点...实际上它就是这样做的:

alias -g vv="$(date)" # replace 'date' with your command of choice

注意:

  1. 它是一个全局别名,因此可以在命令行的任何地方使用(不仅限于开头)。
  2. $(...) 将执行命令替换并将其扩展为变量,请参阅 man zshexpn 并搜索 $(...)。默认情况下,zsh 不会使用空格分隔结果。

[...]

我最初写了一个建议创建一个(zsh)小部件来插入剪贴板到命令行中,并给出一个特定的键组合,然后我意识到你可能只会按“Ctrl-Shift-V”之类的键... :-S

[...]

供您参考,这是使用 zsh 小部件执行此操作的方法:

它将剪贴板内容插入命令行,并将其绑定到某个键,因为这样可以让您在输入之前查看正在进行的操作。将以下内容放入您的 $fpath 中,放在名为 insert-clipboard 的文件中(需要设置 KSH_AUTOLOAD 加载)。

#! /bin/zsh
## Inserts the output of the command into the cmd line buffer
zmodload -i zsh/parameter

insert-clipboard() {
   LBUFFER+="$(date)" # REPLACE date BY YOUR COMMAND!
}

在你的.zshrc文件中。
autoload insert-clipboard # as written, it needs KSH_AUTOLOAD set....
zle -N insert-clipboard
bindkey '^Xu' insert-clipboard # pick a key combination you like...

没错!就是这样。Ctrl-Shift-V让我的手指疼痛,我宁愿打两个字母。你能否解释一下或提供一个网站,说明为什么会这样? - mirandalol
哦,而且你应该给我的答案点个赞 ;-) - Francisco
一旦声誉允许。 - mirandalol
抱歉,我没注意到。 - Francisco
Fransico,我该如何将“insert-clipboard”绑定到类似于“vv”的东西上? - mirandalol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接