mở rộng bí danh zsh


7

Có thể định cấu hình zsh để mở rộng bí danh toàn cầu trong khi hoàn thành tab không? Ví dụ: tôi có các bí danh phổ biến:

alias -g '...'='../..'
alias -g '....'='../../..'

nhưng khi tôi gõ chẳng hạn, cd .../some<tab>nó sẽ không mở rộng thành cd .../somethinghoặc cd ../../something. Do đó, tôi thường không sử dụng các bí danh tiện dụng này vì tôi không thể hoàn thành tab mà tôi muốn đến.

Câu trả lời:


6

Hãy thử tìm kiếm các chữ viết tắt zsh . Chúng cho phép bạn nhập "viết tắt" tự động được thay thế bằng hình thức đầy đủ khi bạn nhấn một phím ma thuật như dấu cách. Vì vậy, bạn có thể tạo một mà thay đổi ...<SPACE>đến ../...

Ví dụ, đây là những gì bạn cần trong hồ sơ của bạn:

typeset -A abbrevs
abbrevs=(
        "..." "../.."
        "...." "../../.."        
)

#create aliases for the abbrevs too
for abbr in ${(k)abbrevs}; do
   alias -g $abbr="${abbrevs[$abbr]}"
done

my-expand-abbrev() {
    local MATCH
    LBUFFER=${LBUFFER%%(#m)[_a-zA-Z0-9]#}
    LBUFFER+=${abbrevs[$MATCH]:-$MATCH}
    zle self-insert
}

zle -N my-expand-abbrev    
bindkey " " my-expand-abbrev 
bindkey -M isearch " " self-insert

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.