【问题标题】:How to move the cursor position in zsh widget definition如何在 zsh 小部件定义中移动光标位置
【发布时间】:2014-04-26 13:49:05
【问题描述】:

我有这个sn-p:

insert_sudo () { zle beginning-of-line; zle -U "sudo "; zle end-of-line; }
zle -N insert-sudo insert_sudo
bindkey "\es" insert-sudo

\es 仅将“sudo”附加到行尾,而不是我预期的行首。请帮忙!

【问题讨论】:

    标签: zsh zsh-zle


    【解决方案1】:

    尝试以下方法:

    insert_sudo() { BUFFER="sudo $BUFFER"; zle end-of-line; }
    

    这直接修改了包含命令行内容的特殊$BUFFER变量,方法是在前面加上sudo ,然后将光标放在行尾。

    zle -U 的问题在于它仅在小部件完成后才会生效。来自zsh 手册:

    在当前执行的小部件完成后,ZLE 的行为就像 字符串中的字符由用户输入。

    【讨论】:

    • @AdrieanKhisbe:很好,谢谢 - 我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多