如何在 Linux 终端中获取实时完成/建议?

如何在 Linux 终端中获取实时完成/建议?

我想要一些类似于everything在 Windows 中的东西(使用locate):每次我按下一个键时,与当前输入匹配的文件列表会立即更新。

我想知道是否可以在终端中实现实时文本完成以及我应该怎么做?

为了更清楚地说明,假设我将此功能实现为“foo”,那么当我在命令行中键入foo a并点击时,它应该给出名称包含的所有文件的列表,然后如果我继续键入(现在命令变成),然后文件列表会自动(无需点击其他任何东西)更新为包含的文件,依此类推。TABabfoo abab

答案1

这篇 Unix 和 Linux 文章描述你想要的:

... 我遇到了一个很棒的通用工具: 命令行模糊查找器

它主要允许您“模糊查找”文件(通过上面的链接查看丰富的 gif 动画),但它还允许向其输入任意文本数据并过滤这些数据。因此,快捷方式的想法很简单:我们需要的只是维护一个带有路径(即快捷方式)的文件,然后模糊过滤此文件。它看起来是这样的:我们输入 cdg命令(如果您愿意,可以从“cd global”输入),获取我们的书签列表,只需按几下键即可选择所需的书签,然后按 Enter。工作目录更改为所选项目:

戴高乐

它非常快捷方便:通常我只需输入所需项目的 3-4 个字母,其他所有字母都会被过滤掉。


它可能不是你想要的,但是 Vim 编辑器CtrlP 插件可用于此目的:

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

您需要安装vimvim-noxvim-gnome或之一vim-gtk才能vim-athena使其正常工作。CtrlP 的安装说明位于其网站

  1. 将插件克隆到单独的目录中:

    $ cd ~/.vim
    $ git clone https://github.com/kien/ctrlp.vim.git bundle/ctrlp.vim
    
  2. 添加到你的 ~/.vimrc:

    set runtimepath^=~/.vim/bundle/ctrlp.vim
    
  3. 在 Vim 的命令行运行:

    :helptags ~/.vim/bundle/ctrlp.vim/doc
    
  4. 重新启动 Vim 并检查:help ctrlp.txt使用说明和配置详细信息。

如果你以前从未使用过 Vim,可能会有点害怕。运行vimtutor它来了解一下。

答案2

你可以为你的 shell 编写自己的完成脚本。

例如,bash使用简单的 shell 脚本/函数来完成。bash-completions如果尚未安装,请安装并查看/usr/share/bash-completion/completions一些示例。

在您的脚本中,您只需调用即可locate获取匹配列表并返回它们。

相关内容