自定义 zsh 自动完成

use*_*129 5 linux bash command-line zsh autocomplete

我决定尝试一下 zsh。首先,我将描述现在的工作方式,然后我将描述我希望它们如何工作。

假设我在当前文件夹中有 2 个子文件夹,第一个“文档”,第二个“下载”。

  1. 如果我输入“cd D”并按TAB,它会自动完成“Do”。

  2. 再次按 TAB,它会自动完成“文档”。

  3. 再次按 TAB,它将自动完成“下载”。

  4. 再次按 TAB,它会自动完成“文档”(我很欣赏这里它不像 Bash 那样回到“做”)。

  5. 此时我必须按 Enter 两次才能更改目录。(第一个 Enter 选择“Documents”,第二个 Enter 执行命令)。

我希望 zsh 的行为方式:

  1. 如果我输入“cd D”并按 TAB,我想用“文档”自动完成。
  2. 再次按 TAB,应该会自动完成“下载”。
  3. 再次按 TAB,应该会自动完成“文档”。
  4. 按 Enter 一次,目录应更改为“文档”。

我怎样才能做到这一点?:-)

Jos*_*hua 5

哇,一年了,没有回复。我希望你找到了方法,但对于可能通过搜索遇到这个问题的其他人......

首先确保你已经加载了这一行的完成模块

zmodload zsh/complist
Run Code Online (Sandbox Code Playgroud)

然后你可以将 Enter,aka ^M, during绑定menuselect到函数accept-line- 这是正常行为 - 但是通过在它前面加上一个点,如果它强制它menuselect在函数执行之前离开模式

bindkey -M menuselect '^M' .accept-line
Run Code Online (Sandbox Code Playgroud)