【问题标题】:zsh history completion with sudo使用 sudo 完成 zsh 历史记录
【发布时间】:2015-07-26 02:58:59
【问题描述】:

我想知道是否有一个功能可以让您完成命令的历史记录(通过按向上和向下键)以及已经输入的参数,这对于sudo 来说真的很方便,例如:

$ sudo vim [PRESSING UP]
--> 将完成我到 sudo vim .zshrc (如果这是我的最后一个命令),但如果我再次 [PRESS UP] 我会完成:
$ sudo ls /
(如果这是我的倒数第二个 sudo 命令)

但我想要的是完成以 sudo vim 开头的命令。
我希望这是有道理的。

【问题讨论】:

  • 这不是“sudo”独有的......
  • 这是up-line-or-search函数的限制。打开man zshzle 并搜索up-line-or-search。此命令仅使用第一个单词来搜索历史记录。

标签: zsh zsh-zle


【解决方案1】:

这听起来类似于类似于“鱼”的建议。这是implementation for Zsh。这样的事情更多地是针对 tabCtrl-D 完成而不是向上箭头。

还有predict-on Zsh 小部件,它会自动填充您上次键入的类似命令。值得尝试:

% autoload predict-on; predict-on

【讨论】:

    【解决方案2】:

    这是函数up-line-or-search 的限制。打开man zshzle 并搜索up-line-or-search。此命令仅使用第一个单词来搜索历史记录。

    up/down 键上获得“全行”搜索

    autoload -U up-line-or-beginning-search
    autoload -U down-line-or-beginning-search
    zle -N up-line-or-beginning-search
    zle -N down-line-or-beginning-search
    bindkey "^[[A" up-line-or-beginning-search # Up
    bindkey "^[[B" down-line-or-beginning-search # Down
    

    【讨论】:

      【解决方案3】:

      您可以为此使用history-beginning-search-backward 小部件。它在历史记录中向后搜索与当前行相同开头的行,直到光标位置。您可以替换当前绑定或创建一个新绑定,例如在 ShiftUp 上(在我的机器上它映射到 ^[[a):

      bindkey '^[[a' history-beginning-search-backward
      

      您可能还想绑定history-beginning-search-backward 小部件,以便能够在历史记录中双向移动(ShiftDown^[[b 在我的机器上):

      bindkey '^[[b' history-beginning-search-forward
      

      【讨论】:

        猜你喜欢
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        • 2021-04-12
        • 2012-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多