在 Linux 上哪里放置 zsh 自动补全脚本?

问题描述 投票:0回答:3

安装

cheat
(来自命令行的命令备忘单)后,我尝试使用提供的 zsh 脚本启用自动完成功能。但是,我似乎没有找到脚本的正确位置。

到目前为止

  • 我拿了
    cheat.zsh
  • 复制到
    ~/.oh-my-zsh/custom/plugins/cheat/_cheat.zsh
    ;
  • cheat 添加到我的
    plugins
    中的
    ~/.zshrc
    数组;
  • 重新加载我的 shell。

输入

cheat d<TAB>
时不会自动完成。

问题

那么 zsh 自动补全脚本在 Linux 上应该放在哪里呢?

linux ubuntu zsh oh-my-zsh zsh-completion
3个回答
29
投票

我通过将

cheat.zsh
添加到
~/.oh-my-zsh/plugins
目录来实现此功能。 Zsh 检查
FPATH
上的自动加载功能,所以尝试:

echo $FPATH

然后添加到

FPATH
或将文件移动到路径上的文件夹中。

这实际上更好地解释了它: https://unix.stackexchange.com/questions/33255/how-to-define-and-load-your-own-shell-function-in-zsh


16
投票

让我尽力帮忙。

我正在尝试类似的事情,这就是我能够使其发挥作用的方式。 以下解决方案已在 debian 发行版 [ubuntu] 上通过

oh-my-zsh
进行了验证

问题

 > 你的 zsh 没有给出正确的完成建议 [conda]
  > 这就是你输入 # conda tab 时得到的结果

enter image description here

解决方案

  1. 找到补全脚本

    一个很棒的位置是 https://github.com/clarketm/zsh-completions/tree/master/src

  2. 将文件下载到完成文件夹

    [~/.oh-my-zsh/completions]

    wget https://raw.githubusercontent.com/clarketm/zsh-completions/master/src/_conda ~/.oh-my-zsh/completions
    
  3. 确保完成文件夹列在 $fpath 下

    print -l $fpath
    
    1. 如果没有列出怎么办 通常应该添加 .oh-my-zsh.sh 如果没有将以下内容附加到 ~/.oh-my-zsh/oh-my-zsh.sh

      # add a function path
      fpath=($ZSH/functions $ZSH/completions $fpath)
      
    2. 来源.zshrc

      source ~/.zshrc
      
  4. 执行

    compinit
    这将为函数构建
    ~/.zcompdump
    文件

    compinit
    

enter image description here

故障排除

  1. 由于冲突,建议可能不会显示,请尝试以下操作

    rm -f ~/.zcompdump; compinit
    # we are clearing the function dump stored by zsh, its safe zsh will rebuilt it.
    
  2. 尝试来源

    .zshrc

    source ~/.zshrc
    
  3. 尝试注销并登录

  4. 检查

    ~/.zcompdump

    中的映射
    vi ~/.zcompdump
    

    搜索康达

    [/conda]

    你应该看到如下

    'conda' '_conda'

希望有人会发现它有用,如果有的话很乐意提供帮助


0
投票

在最新版本的

oh-my-zsh
上已经有一组文件夹可以放置完成文件:
~/.oh-my-zsh/custom/completions

© www.soinside.com 2019 - 2024. All rights reserved.