Questions tagged «autocomplete»

交互式程序(如外壳程序和文本编辑器)提供的一项功能,可插入文本以完成用户可能打算编写的单词或短语。


2
如果智能完成失败,则强制执行Bash常规选项卡完成
自从制表符完成成为shell的标准功能以来,我一直非常乐于使用它。我什至喜欢Bash的智能补全功能(只要我正确输入evince foo <TAB>,它只会搜索PDF文件)。 当Bash使用其智能完成功能拒绝完成时,它毁了原本幸福的一天。 今天我想: tar xvf centos5.8_x86_1.ova 所以我输入: tar xvf cent<TAB> Bash拒绝完成该路径,因为.ova文件不是您通常与tar一起使用的文件。 我知道我可以卸载bash-completion软件包以删除智能补全。但我也可以吃蛋糕吗? 我可以先让bash使用智能完成功能,如果失败了,然后使用非智能完成功能?

2
具有目录名称的环境变量的Bash自动补全
除其他外,我在Linux Mint 14上使用bash 4.2.37。 当我通过键入来自动完成环境变量的名称时Tab,它将扩展为该变量的名称,后跟一个空格。 如果变量的值恰好是目录名,我希望它扩展为变量名,后跟/。 例如,如果我键入: $ ls $HOM<tab> 它扩展为: $ ls $HOME _ 其中_标记光标的位置。问题在于,我通常希望继续在主目录下键入某些文件或目录的名称,这意味着我必须先键入backspace,然后再键入/。 因此,我希望以上内容扩展为: $ ls $HOME/_ 当我输入整个变量名时,也会发生同样的事情。之后ls $HOME,tab添加一个空格,我希望它添加一个/。 (当然,/如果变量的值不是目录名,我当然不希望它添加一个。) 是否可以通过bash命令或通过更新my来告诉bash遵循我想要的方式$HOME/.inputrc? 注意:我正在特别寻找一种使tab行为表现出所需方式的方法。用不同的击键实现相同行为的方法将很有趣,但不会回答我的问题。 (我已/etc/profile.d/bash_completion.sh在系统上禁用它,因为它与的交互作用较弱set -o nounset。快速实验表明,这可能与我的问题无关。) 顺便说一句,tcsh这样做:给定一个环境变量$FOOBAR,如果它引用目录,则键入$FOOBA<tab>扩展为;$FOOBAR/如果不是,则键入扩展为$FOOBAR。不,这还不足以说服我回到tcsh。zsh也这样做。

1
zsh完成:从特定目录获取文件名
好的,有一点背景知识:我使用的是Mac,并且在CLI中做了很多事情。 特别是,我经常弹出USB记忆棒cp或mv文件,然后立即希望弹出(卸载和断开连接)它。通常,可以通过几次击键来完成操作,除了进行卸载外,这需要(在10.7中)进入一个空的桌面空间(通常至少两个空间),选择磁盘,然后按“ command-e”。坦白地说,这种卸载过程是该过程中最耗时且最繁琐的部分,数量级高。 只需键入以下内容,这将更加自然和有效: ej<tab> J<tab> 说我的USB记忆棒安装在/ Volumes / Jefferson。我希望从6次击键中得到以下结果: eject /Volumes/Jefferson 这应该运行以下命令: diskutil unmount /Volumes/Jefferson 因此,我编写了一个不错的小函数: eject() { diskutil unmount /Volumes/$1 } 还有一个完成功能: compdef '_files -g "/Volumes/*"' eject 但是,这有一个问题。该_files函数生成完整的路径。现在,我可以将“ eject”函数中的行更改为diskutil unmount $1,一切都会正常进行,但是由于路径以/ Volumes /开头,所以我无法键入安装点名称的第一个字母。例如,如果键入J<tab,我将为PWD中的文件自动补全。我将不得不键入/Volumes/J<tab>以获得所需的完成。 因此,是否有一个完成功能可以从预定义的特定位置获取文件名,而不是生成完整路径? 我真的很想把这个减少到6次击键。
10 zsh  osx  autocomplete 

4
列出当前PATH中的所有文件/二进制文件
有没有一种“简便”的方式来运行“ ls -la”样式的命令,以列出当前PATH中的所有文件/可执行二进制文件? (我打算将输出通过管道传递到grep,以查找前缀未知但基本已知的“名称”的命令,这种情况下,bash中的自动补全/制表符实际上是无用的。因此,某种形式的“反向自动完整功能” ...)
10 bash  ls  path  autocomplete 

2
取消zsh选项卡完成
启动完成后,是否可以取消它?有时我愚蠢地按Tab键以自动完成制作目标(仅出于纯粹的惰性),然后最终不得不等待更长的时间,而不是我自己输入整个“安装”或“签出”的时间。 在zshzle手册页中没有看到任何值得注意的内容,但是也许我错过了一些东西吗?是否有其他外壳具有此功能? 编辑:平凡的答案。因此,相反:zsh是否有一种方法可以估计制表符补全将花费相对较长的时间来执行,而是询问用户是否希望这样做?
10 zsh  autocomplete 

1
如何获取我的Shell函数以利用zsh中的现有自动完成功能?
我定义了几个shell函数,.zshrc这些函数可以节省键入并允许与屏幕集成。例如: function s() { screen -t "$1" ssh "$@" } 但是,当我使用这些Shell函数时,我无法利用zsh的内置命令完成功能。(对于SSH,将基于known_hosts和ssh_config自动完成主机名)。挂接到我为之创建包装器的命令的现有完成机制上的首选方法是什么? 编辑: 感谢Gilles在下面的回答。使用compdef似乎是实现此目的的方法,但有趣的是,它似乎无法统一工作。在这种情况下,我具有以下设置: function s() { screen -t "$1" ssh "$@" } function m() { screen -t "man.$1" man "$1" } compdef $_comps[man] m compdef $_comps[ssh] s 包装函数'm'的完成按预期工作,但是函数's'的完成不起作用;而不是尝试完成主机名,它可以通过单击“制表符”时向我提供文件列表来回退到默认的自动完成功能。SSH完成的处理方式是否有些奇怪,这意味着我需要做进一步的事情?
10 zsh  autocomplete 

1
zsh apt列表选项完成
我已经习惯了使用在bash tab完成获得apt list --upgradable通过打字apt ltab--utab,但我不能做的zsh同样的事情:--u没有扩展到--upgradable当我按下tab。 我用谷歌搜索了一些建议安装zsh-completions并将其添加setopt completealiases到的解决方案./zshrc,但是这些都没有帮助。 有什么方法可以使其像在bash中一样工作吗?
10 zsh  autocomplete 

2
将zsh的制表符完成与大小写不敏感结合在一起
我将zsh 5.0.7配置为使用不区分大小写的制表符完成 zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 我遇到的问题是,这种不区分大小写的方法经常导致我需要Tab多花一些时间。例如,我的主目录包含文件夹“桌面”,“文档”和“下载”。如果我在主文件夹中并且输入 cd D 然后按Tab,我看到为我列出的三种可能性。另一方面,如果我输入 cd d 然后按,Tab然后将“ d”更改为“ D”,但我看不到完成菜单;我需要再按Tab一次,以使其发生。有没有办法在将“ d”更改为“ D”的同时获取完成菜单?
10 zsh  autocomplete 

3
在屏幕上完成单词的翻译,如VIM(Bash或Tmux)
如何配置Bash,Zsh或Tmux以完成屏幕上的最后一个匹配标识符?考虑以下常见情况: $ git fetch remote: Counting objects: 16, done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From /opt/git/thunder * [new branch] issue540 -> origin/issue547314 e9204cf..4d42c3f v2.1 -> origin/v2.1 我如何才能issue547在CLI上轻松完成Bash / Zsh / Tmux ?当我Tab在$ git checkout isGit有用地完成后按下时issue,但我必须自己完成数字,因为所有先前的数字实际上都与现有的Git分支匹配。 …

2
刷新bash选项卡完成
我有一个用于自动完成ssh主机的脚本。但是,如果更改我~/.ssh/config的自动完成功能,则不会自动更新。这并不令我惊讶。在新的外壳中,新条目当然会被使用。 如何在bash中手动触发刷新完成?

1
zsh-在<tab>上完全展开二进制路径
在我当前的zsh行为中,键入“ sudo”后单击tab只会添加一个空格。 $ sudo ... 我真正想要的是使选项卡完全扩展到在按下选项卡时将要执行的二进制文件的路径,从而使我能够看到将要运行的二进制文件: $ /usr/bin/sudo ... 目的是防止我的计算机上的本地用户被黑客入侵,将条目添加到我的$PATH变量中以及“ sudo”运行恶意程序的情况,这很容易升级为root。
10 zsh  path  autocomplete 

3
如何让bash自动完成通配符?
如果我有包含文件的目录 foo.bar.a.cat foo.bar.a.hat 然后我输入ls f+ TABbash shell自动完成ls foo.bar.a.。如果输入ls *bar*+,TAB我希望它自动完成*bar*.a.。这可能吗? 这看起来类似于问题 如何在bash中启用通配符的制表符完成? 但是建议的答案“它对我来说是开箱即用的”,却没有。我也尝试过TAB TAB,没有效果。命令``bash --version givesGNU bash,4.2.37(1)-release(x86_64-pc-linux-gnu)`。

3
如何将(函数的)第二个参数的Zsh自动完成规则设置为现有命令的规则?
我有一个自定义的Zsh函数g: function g() { # Handle arguments [...] } 在其中,我处理执行Git命令的简短参数。例如: g ls # Executes git ls-files ... g g # Executes git grep ... 我需要能够为简短参数将自动完成规则设置为Git的规则,但是我不确定如何执行此操作。 例如,我需要g ls &lt;TAB&gt;制表完成规则,git ls-files &lt;TAB&gt;这些规则将为我提供以下参数git ls-files: $ g ls --&lt;TAB&gt; --abbrev -- set minimum SHA1 display-length --cached -- show cached files in output --deleted -- …
9 zsh  autocomplete  git 

1
Zsh自动完成建议完成的功能(_git _vim等)
我对如何zsh为我的命令做完整的建议感到烦恼。 如果键入未安装的命令的开头,然后按tab该命令,则会提示已安装的完成功能。 可以说我要执行vim但没有安装_vim。 有没有办法关闭此功能?还是我的设置做错了什么? 我所有的点文件都在公开github.com/henrikbjorn/castle。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.