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

时间:2013-07-03 07:43:41

标签: zsh expansion

我知道,这真是一个古怪的头衔。 基本上,我有这个:

 alias vv="xclip -selection clipboard -o"

打印出剪贴板中的任何内容,例如ssh-form中的存储库位置(git@github.username/repname.git)。 现在我想:

 git clone vv

我尝试了以上几种变体,例如在别名上尝试各种开关,或使用different expansions,但没有运气。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

全局别名可能会这样做......实际上它是这样做的:

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

注意:

  1. 它是一个全局别名,因此它可以在命令行中的任何位置工作(不仅仅是开头)
  2. $(...)将执行命令替换并将其展开为变量,请参阅man zshexpn并搜索$(...)。默认情况下,zsh不会使用空格来破坏结果。
  3. [...]

    我最初写了一个建议来创建一个(zsh)小部件,用一个给定的组合键将剪贴板插入命令行,然后我意识到你可能只是按“Ctrl-Shift-V”或其他东西...... :-S

    [...]

    仅供参考,您可以使用zsh小部件执行此操作:

    在命令行中插入剪贴板内容,并将其绑定到某个键,因为它允许您在按Enter键之前查看您正在执行的操作。将以下内容放入$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...