问题标签 [zsh-completion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 使用 ruby gem 命令工具完成 zsh/bash
我创建了一个命令行 ruby gem 并希望有 bash 或 zsh 完成。我创建了它们并对其进行了版本控制,但我必须手动获取它们。
是否有在 gem 安装后执行脚本的常用方法,例如编辑 bashrc 或 zshrc 并添加源命令?
git - Git选项卡完成在mac上的zsh中不起作用
无论我尝试做什么,我似乎都无法在我的 zsh shell 中使 git tab/auto completion 工作。我已经下载了 bash-completion 脚本和 zsh-completion 脚本并按照说明进行操作,但我无法使其工作。
我已经重新安装了 oh-my-zsh,但这似乎没有帮助或产生任何影响。
任何可以正常工作的人都可以向我描述他们的设置,以便我可以尝试模拟它以使其为我工作吗?
具体来说,到目前为止我所做的是:
- 切换到使用 zsh 作为我的默认 shell
- 安装了 oh-my-zsh
- 下载https://github.com/git/git/blob/master/contrib/completion/git-completion.bash并将其保存在
~/.completion/git/git-completion.sh
- 下载https://github.com/git/git/blob/master/contrib/completion/git-completion.zsh并将其保存在
~/.zsh/_git
- 添加
zstyle ':completion:*:*:git:*' script ~/.completion/git/git-completion.sh
没运气。
linux - 通过 zsh 中的参数抑制更正
假设我有文件树
这样做mv a_test_file1 a_test_file2
会导致烦人的更正查询。mv
永远不应该更正第二个参数,因为它可能指向文件系统上的现有节点,也可能不指向。但是,第一个参数可能会被更正,因为它必须始终是有效节点。
这是一个常见的用例,我只想zsh
更正命令中的某些参数。我怎样才能做到这一点?
linux - ZSH 中的文件完成优先级
我有一个 shell 模式,将一些文件标记为“无聊”,即备份文件、pyo
文件、vim 备份、自动生成的目录等。让我们称之为$BORING_STUFF
。
在这种情况下,我的每个组的范围也受到了适用的限制ignore-patterns
。(如boring-files
只包含无聊文件,regular-files
不包含无聊文件)
我希望总是显示粗体项目,而其他项目只有在没有其他匹配项时才会显示。(又名。touch <tab>
将显示常规目录和常规文件,但不显示隐藏文件,而touch .<tab>
将显示隐藏文件。)
- 全局项目
- 目录
- 常规目录
- 无聊的目录
- 隐藏目录
- 文件
- 常规文件
- 无聊的文件
- 隐藏文件
zsh - 在 zsh 完成中保持状态
我想为具有以下调用约定的程序编写 zsh 完成:
……其中operation
之一--install
在哪里--upgrade
?
到目前为止,我所拥有的是一般选项和操作选项。我的代码看起来像这样:
问题是,在我键入操作和第一个操作选项后,状态会重置为*)
案例。
例子
如何将下一个状态设置为与旧状态相同?哪个命令有类似的调用约定,所以我可以看一下这个命令的补全代码?
bash - 实现 zsh 别名的自动补全
我正在使用很棒的 zsh 框架oh-my-zsh。每天我都打gc
,这是我打的别名git commit
,<Tab><Tab>
它给了我正确的文件来提交。我真的很想知道它是如何实现的,所以我可以实现自己的想法,即使用别名导航到子目录。
我的意思是导航到~/workspace/a-repo
使用这个别名-w a<Tab><Tab>
,它完成a-repo
并给了我一些建议,这些建议是里面的文件夹~/workspace
。我已经创建了这个别名,但我需要知道如何为其添加正确的自动完成/建议。
这是我的别名:
git - zsh git 补全提供了与当前前缀不同的参数
输入 zsh
优惠
所以有完全超出当前类型前缀的补全。我该如何解决?
我的完成配置是:
autocomplete - 如何在 oh-my-zsh 下强制完成文件名?
问题:
有时,当我尝试在 zsh 中执行操作时,它不会完成我想要的文件名,因为它们不适用于当前上下文。两个例子:
- 我想强制添加一个当前在 hg 或 git 中被忽略的文件。oh-my-zsh 试图通过仅完成未忽略的文件来帮助我,但在这种情况下,这是一个障碍。我被迫手动输入文件的完整路径。
- 我想用来
git diff
区分我硬盘上的两个任意文件。这些文件不驻留在任何存储库中,但谁在乎呢?!git diff --no-index
是区分任何两个文件的一种非常好的方法。但是因为它们不在仓库中,所以 zsh 不会完成它们。
建议的解决方案:
我可以简单地编辑源代码控制上下文以完成所有文件名,而不管它们的源代码控制状态如何。但是有几个限制:
- 我不知道该怎么做。
- 拥有一个“逃生舱”可能会很好,无论上下文如何,我都可以强制文件完成。
所以,我决定改为绑定一个快捷键来强制正常的、无上下文的文件完成。
到目前为止我所拥有的:
Zsh 显然有一种简单的方法可以做到这一点,如本问题所述。所以我在我的中添加了以下几行.zshrc
:
这会导致shift-tab启动文件完成。它在标准 zsh 中运行良好!但是嘘,由于某种原因,当我获取 oh-my-zsh 时它不起作用。:-(
那么有没有办法让它与 oh-my-zsh 一起工作,或者有没有我可能会觉得令人满意的替代解决方案?
linux - 在 Linux 上哪里可以放置 zsh 自动完成脚本?
安装后cheat
(命令行中的命令备忘单),我尝试使用提供的 zsh 脚本启用自动完成功能。但是,我似乎没有找到脚本的正确位置。
至今
- 我拿
cheat.zsh
; - 将其复制到
~/.oh-my-zsh/custom/plugins/cheat/_cheat.zsh
; - 添加作弊添加到我的
plugins
数组中~/.zshrc
; - 重新加载我的外壳。
键入时不会自动完成cheat d<TAB>
。
问题
那么在Linux上将zsh自动补全脚本放在哪里呢?