zsh 像鱼一样快速/不引人注目的自动建议。
它会根据历史记录和完成情况在您键入时建议命令。
要求:Zsh v4.3.11 或更高版本
请参阅 INSTALL.md。
当您键入命令时,您将看到光标后以柔和的灰色显示完成。可以通过设置ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
变量来更改此颜色。参见配置。
如果您在光标位于缓冲区末尾时按→键( forward-char
小部件)或End ( end-of-line
部件),它将接受建议,并用建议替换命令行缓冲区的内容。
如果您调用forward-word
小部件,它将部分接受直到光标移动到的位置的建议。
您可能想要覆盖默认的全局配置变量。这些变量的默认值可以在此处找到。
注意:如果您使用 Oh My Zsh,则可以将此配置放在$ZSH_CUSTOM
目录中的文件中。请参阅他们对最重要的内部结构的评论。
设置ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
以配置建议显示的样式。默认值为fg=8
,它将前景色设置为 256 色调色板中的颜色 8。如果您的终端仅支持 8 种颜色,则需要使用 0 到 7 之间的数字。
还可以设置背景颜色,并且建议的样式可以是粗体、下划线或突出。例如,这将在青色背景上显示带有粗体、下划线、粉红色文本的建议:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
有关更多信息,请阅读 zsh 手册的字符突出显示部分: man zshzle
或在线。
注意:一些 iTerm2 用户报告无法看到建议。如果这影响到您,则问题可能是由不正确的颜色设置引起的。为了纠正这个问题,进入 iTerm2 的设置,导航到配置文件 > 颜色,并确保基本颜色 > 背景和 ANSI 颜色 > 亮黑色的颜色不同。
ZSH_AUTOSUGGEST_STRATEGY
是一个指定如何生成建议的数组。依次尝试数组中的策略,直到找到建议。目前有三种内置策略可供选择:
history
:选择历史记录中最近的匹配项。completion
:根据制表符补全的建议选择建议。 (需要zpty
模块,该模块自 4.0.1 起包含在 zsh 中)match_prev_cmd
:与history
类似,但选择其前面的历史记录项与最近执行的命令匹配的最近匹配项(更多信息)。请注意,对于不保留历史顺序的 ZSH 选项(例如HIST_IGNORE_ALL_DUPS
或HIST_EXPIRE_DUPS_FIRST
,此策略将无法按预期工作。例如,设置ZSH_AUTOSUGGEST_STRATEGY=(history completion)
将首先尝试从历史记录中查找建议,但是,如果找不到匹配项,则会从完成引擎中查找建议。
该插件的工作原理是在调用某些 zle 小部件时触发自定义行为。您可以从这些数组中添加和删除小部件以更改此插件的行为:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
:此数组中的小部件将在调用时清除建议。ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
:此数组中的小部件将在调用时接受建议。ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
:此数组中的小部件将在调用时执行建议。ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
:此数组中的小部件在调用时将部分接受建议。ZSH_AUTOSUGGEST_IGNORE_WIDGETS
:此数组中的小部件不会触发任何自定义行为。修改缓冲区且未在任何这些数组中找到的小部件将在调用后获取新建议。
注意:一个小部件不应属于多个以上数组。
将ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
设置为整数值以禁用大缓冲区的自动建议。默认值未设置,这意味着将尝试对任何缓冲区大小进行自动建议。建议值为 20。在终端中粘贴大量文本时,这非常有用,以避免触发太长字符串的自动建议。
在 zsh 版本 5.0.8 及更高版本中,默认情况下会异步获取建议。要禁用异步建议并同步获取它们,请在获取插件后unset ZSH_AUTOSUGGEST_USE_ASYNC
。
或者,如果您使用的 zsh 版本早于 5.0.8 并且想要启用异步模式,请在获取插件后设置ZSH_AUTOSUGGEST_USE_ASYNC
变量(可以设置为任何值)。请注意,早于 5.0.8 的 zsh 版本中存在一个错误,即ctrl + c在异步获取建议后无法立即重置提示。
设置ZSH_AUTOSUGGEST_MANUAL_REBIND
(可以设置为任何值)以禁用每个 precmd 上的自动小部件重新绑定。这可以极大地提高性能,但是如果任何小部件列表发生更改或者您或另一个插件包装了任何自动建议小部件,您将需要自己处理重新绑定。要重新绑定小部件,请运行_zsh_autosuggest_bind_widgets
。
将ZSH_AUTOSUGGEST_HISTORY_IGNORE
设置为 glob 模式,以防止提供与该模式匹配的历史记录条目的建议。例如,将其设置为"cd *"
以从不建议历史记录中的任何cd
命令。或者设置为"?(#c50,)"
以从不建议任何 50 个字符或更长的内容。
注意:这仅影响history
和match_prev_cmd
建议策略。
将ZSH_AUTOSUGGEST_COMPLETION_IGNORE
设置为 glob 模式,以防止在缓冲区与该模式匹配时提供完成建议。例如,将其设置为"git *"
以禁用 git 子命令的完成建议。
注意:这仅影响completion
建议策略。
该插件提供了一些可以与bindkey
一起使用的小部件:
autosuggest-accept
:接受当前建议。autosuggest-execute
:接受并执行当前建议。autosuggest-clear
:清除当前建议。autosuggest-fetch
:获取建议(即使建议被禁用也有效)。autosuggest-disable
:禁用建议。autosuggest-enable
:重新启用建议。autosuggest-toggle
:在启用/禁用建议之间切换。例如,这将绑定ctrl + space来接受当前建议。
bindkey ' ^ ' autosuggest-accept
如果您遇到问题,请搜索 GitHub 上的问题列表,看看是否有其他人已经报告过该问题。
在报告问题之前,请尝试暂时禁用可能与此插件冲突的配置部分和其他插件,以隔离问题。
报告问题时,请包括:
.zshrc
配置。请参阅此评论,了解这意味着什么的一个很好的例子。zsh --version
)从~/.zshrc
中删除引用此插件的代码。
从硬盘中删除 git 存储库
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
编辑src/
中的源文件。运行make
从这些源文件构建zsh-autosuggestions.zsh
。
欢迎拉取请求!如果您发送拉取请求,请:
develop
分支(不是master
)测试是使用rspec
框架用 ruby 编写的。他们使用tmux
驱动伪终端,发送模拟击键并对终端内容进行断言。
测试文件位于spec/
中。要运行测试,请运行make test
。要运行特定测试,请运行TESTS=spec/some_spec.rb make test
。您还可以通过设置TEST_ZSH_BIN
环境变量来指定要使用的zsh
二进制文件(例如: TEST_ZSH_BIN=/bin/zsh make test
)。
通过从提供的 Dockerfile 构建映像,可以在 Docker 映像中运行任何受支持的 zsh 版本的测试。要为特定版本的 zsh 构建 docker 映像(其中下面的<version>
替换为ZSH_VERSIONS
文件中一行的内容),请运行:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
构建图像后,通过以下方式运行测试:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
该项目已获得麻省理工学院许可。有关许可证的全文,请参阅 LICENSE 文件。