我想要一些类似于everything
在 Windows 中的东西(使用locate
):每次我按下一个键时,与当前输入匹配的文件列表会立即更新。
我想知道是否可以在终端中实现实时文本完成以及我应该怎么做?
为了更清楚地说明,假设我将此功能实现为“foo”,那么当我在命令行中键入foo a
并点击时,它应该给出名称包含的所有文件的列表,然后如果我继续键入(现在命令变成),然后文件列表会自动(无需点击其他任何东西)更新为包含的文件,依此类推。TAB
a
b
foo ab
ab
答案1
这篇 Unix 和 Linux 文章描述你想要的:
... 我遇到了一个很棒的通用工具: 命令行模糊查找器。
它主要允许您“模糊查找”文件(通过上面的链接查看丰富的 gif 动画),但它还允许向其输入任意文本数据并过滤这些数据。因此,快捷方式的想法很简单:我们需要的只是维护一个带有路径(即快捷方式)的文件,然后模糊过滤此文件。它看起来是这样的:我们输入
cdg
命令(如果您愿意,可以从“cd global”输入),获取我们的书签列表,只需按几下键即可选择所需的书签,然后按 Enter。工作目录更改为所选项目:它非常快捷方便:通常我只需输入所需项目的 3-4 个字母,其他所有字母都会被过滤掉。
它可能不是你想要的,但是 Vim 编辑器CtrlP 插件可用于此目的:
您需要安装vim
、vim-nox
、vim-gnome
或之一vim-gtk
才能vim-athena
使其正常工作。CtrlP 的安装说明位于其网站:
将插件克隆到单独的目录中:
$ cd ~/.vim $ git clone https://github.com/kien/ctrlp.vim.git bundle/ctrlp.vim
添加到你的 ~/.vimrc:
set runtimepath^=~/.vim/bundle/ctrlp.vim
在 Vim 的命令行运行:
:helptags ~/.vim/bundle/ctrlp.vim/doc
- 重新启动 Vim 并检查
:help ctrlp.txt
使用说明和配置详细信息。
如果你以前从未使用过 Vim,可能会有点害怕。运行vimtutor
它来了解一下。
答案2
你可以为你的 shell 编写自己的完成脚本。
例如,bash
使用简单的 shell 脚本/函数来完成。bash-completions
如果尚未安装,请安装并查看/usr/share/bash-completion/completions
一些示例。
在您的脚本中,您只需调用即可locate
获取匹配列表并返回它们。