问题标签 [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.
zsh - zsh完成缓存安全模型坏了?
这可能是 zsh 中的错误或错误功能,但我不太了解,我可能会误解。
compinit
(初始化完成的函数)运行compaudit
以强制执行一个安全模型,它只会从您的目录中加载完成函数,这些目录$fpath
被认为是“安全的”(由 root 或我拥有,而不是世界可写等)。它将警告用户有关不安全的路径并提示跳过它们或中止它们。这一切都很好。
它在 处创建结果缓存~/.zcompdump
。AFAICT,它只是手动失效(即删除)。
我不完全清楚缓存中有什么,所以我不能说这是否真的是一个很大的安全问题。但是,至少,compinit
即使缓存由其他用户拥有,也会认为缓存有效,从而避免加载对当前用户有效但对前一个用户无效的完成函数。
每次我使用sudo -s
我拥有的 zsh 安装(OS X 自制软件)时,都会发生这种情况。它写入一个不完整的完成缓存。然后我开始下一个shell,它加载了被破坏的缓存并且没有看到任何完成。
这是我的问题吗?ZSH的?家酿?
bash - ZSH Symfony 控制台自动补全
我正在尝试为 Symfony 的控制台创建一个 ZSH 自动完成脚本,我几乎完成了它,但我在最后一部分阻止了它。由于函数返回,我需要创建一个数组,但我不知道如何处理。这是我写的代码:
如果我执行命令行,它会以正确的方式对其进行格式化。但与 ZSH 一起使用时,输出是这样的:
格式化函数返回:
未显示的单词用作命令完成。这是一个示例:Asciinema 示例。
如果我将返回值直接用于数组中,则效果很好。
zsh - 更改特定目录的 Zsh 文件完成顺序
当我在我的下载目录上使用 Zsh 文件完成时,如果它显示按修改时间排序的文件将会很有用。
此命令将对所有文件完成执行此操作:
zstyle ':completion:*' file-sort modification
我如何将其仅应用于 中的文件~/Downloads
?
编辑:正如 Gilles 所暗示的那样,这是不可能的,我可以将另一个键绑定到文件完成file-sort modification
吗?
zsh - 来自 2 个路径的 ZSH 文件完成
我有 2 个包含文件夹的文件夹
我想为命令创建完成功能,baz
以便
$ baz [tab]
给出完成参数如下
注意重复c
只写了一次,它不包括斜杠。
我知道如何完成,_files
但这只会给我来自单个目录的文件。
我怎么做?
linux - zsh compinit: insecure directories. Compaudit shows /tmp directory
I'm running zsh on a Raspberry Pi 2 (Raspbian Jessie). zsh compinit
is complaining about the /tmp
directory being insecure. So, I checked the permissions on the directory:
Apparently anyone can do anything in the /tmp directory. Which makes sense, given it's purpose. So I tried the suggestions on this stackoverflow question. I also tried similar suggestions on other sites. Specifiacally, it suggests turning off group write permissions on that directory. Because of how the permissions looked according to ls -ld
, I had to turn off the 'all' write permissions as well. So:
This shut zsh up. However, other programs started to break. For example, gnome-terminal would crash whenever I typed the letter 'l'. Because of this, I had to turn the write permissions back on, and just run compinit -u
in my .zshrc
.
What I want to know: is there any better way to fix this? I'm not sure that it's a great idea to let compinit use an insecure directory. My dotfiles repo is hosted here, and the file where I now run compinit -u
is here.
autocomplete - 如何使 zsh 自动完成故障转移到 compdef _files
我需要使用以下方法获取 ssh 密钥的指纹:
键入后:ssh-keygen -lf ~/.ss
TAB它没有提供任何选项。
我必须做:
之后,我可以使用文件路径自动完成,但命令自动完成停止工作,所以如果我输入,ssh-keygen -
Tab我不会再看到这个输出:
所以想知道是否有一种方法可以启用这两个选项,以便我可以执行以下操作:
ssh-keyg
TAB这会给我:
那我可以做
$ ssh-keygen -
TAB
这将打印选项菜单并可以执行以下操作:
$ ssh-keygen -lf ~/.ss
TAB
并列出可以工作的选项列表,所以最后我会得到类似的东西:
现在我只是添加到我的~/.zshrc
这个:
但是我必须为要使用 _files 完成的 avery 命令执行此操作,因此我想知道是否有办法始终使用_files
或故障转移到它。
有任何想法吗?
有没有可能让它表现得像csh
按Ctrl+d显示文件选项的地方一样?
更新:
我注意到如果我最后一个参数是-f
自动完成工作:
ssh-keygen -l -f ~/.ssh
TAB
但是对于自定义脚本,命令什么功能,小部件别名可以帮助强制_files
完成。?
zsh - zsh完成忽略列表?
我的 .zshrc 设置如下:
在一个目录中,我有两个文件:Cc 和 C_1.c。如果我做
我明白了
如果我再做一次,它会完成
所以,我的问题是,为什么 C_1.c 完全被忽略了?当我按下 bash 时,如何让 zsh 像 bash 一样提示选择 C*?
谢谢
zsh - Zsh Docker 插件不工作
我已经使用 oh-my-zsh 一段时间了,最近由于某种原因,docker 插件停止了对我的工作。
我检查了我的 ~/.zshrc 文件并包含该插件
plugins=(git colored-man colorize github jira vagrant virtualenv pip python brew osx zsh-syntax-highlighting docker)
我检查了~/.oh-my-zsh/plugins/docker
目录,里面有一个_docker
文件。然而,当我键入docker
并按 Tab 时,我没有得到以前得到的自动完成快捷方式。
我可以确认我的git
插件工作正常但不是docker
插件。尝试做exec zsh
并source ~/.zshrc
重新启动我的终端,但没有运气。
我错过了什么吗?
bash - 像别名一样使用 bash 函数 + grc 会破坏 Zsh 完成
我正在使用 grc / grcat 使用此功能为终端输出着色:
但这破坏了我在 .zshrc 中使用 oh-my-zsh 设置的 zsh 完成和插件:
例如,当我尝试使用docker stop
时,ANSI 转义序列将完成:$'\033'\[0m$'\033'\[1m$'\033'\[33mhigh_wright$'\033'\[0m
有没有办法避免这种情况并仅过滤那些转义序列以完成?
编辑
我在 .oh-my-zsh 目录中为 docker 插件找到了这个文件:https ://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/docker/_docker
我知道我需要更改此功能,但我不知道如何更改。