簡體   English   中英

zsh bindkey 在函數中不起作用

[英]zsh bindkey does not work in a function

我為 .zshrc 編寫了一個小函數來加載插件並設置它們的鍵綁定

function loadPlugin() {
    # Function to load external zsh plugins and set keybindings.
    pluginName=$1
    pluginPath=$2
    if [ -r $pluginPath ];then
    source $pluginPath
    else
    echo "$pluginName plugin can not be found at: $pluginPath"
    fi

    # set keybindings
    shift
    shift

    while [[ $# > 0 ]]; do
    bindkey -M emacs '$1' '$2'
    shift
    shift
    done
}

加載部分工作,但它不設置鍵綁定:

loadPlugin "History search" \
       "$HOME/zsh.d/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh" \
       '^p' "history-substring-search-up" \
       '^n' "history-substring-search-down"

沒有錯誤輸出,如果我在使用相同的參數調用函數后調用綁定命令,它們將起作用。

bindkey -M emacs '^p' "history-substring-search-up"
bindkey -M emacs '^n' "history-substring-search-down"

您的單引號防止$1$2被擴展。 改用雙引號。

bindkey -M emacs "$1" "$2"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM