Questions tagged «autocomplete»

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

3
如何解决制表符补全,使其不隐藏条目?
我在Mac OS X上使用自制版本的zsh 4.3.12使用oh-my-zsh。我最近偶然发现了一个奇怪的问题。在scripts/not-used我有几个.R文件: breakdowns.R eventloop.R process-largeclients.R process-qt.R reprocess-pinning.R calculate-qt-error.R generate_decision_tree.R process-net.R process-scalingexp.R 然而,当我尝试ls scripts/not-used/+ Tab第一完成是ls scripts/not-used/_.R其中_代表光标位置。如果再按Tab一次,将得到以下奇怪的结果: $ ls scripts/not-used/.R breakdowns.R eventloop.R 如何消除这种丑陋(错误)的行为? 设置的选项为: alwaystoend autocd autonamedirs autopushd cdablevars completeinword correctall extendedglob extendedhistory noflowcontrol histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify incappendhistory interactive login longlistjobs monitor promptsubst pushdignoredups pushdminus pushdsilent pushdtohome sharehistory …

1
当我键入scp命令时,可以制表符补全远程文件的神奇之处是什么?
大概这是我在oh-my-zsh设置中启用的某些插件提供的功能(我已经使用zsh多年了)。 自从我将公钥添加到服务器(现在我无需输入密码就可以SSH到服务器)以来,我就注意到了,当我scp在shell中编写命令时,我实际上可以制表完整的远程文件路径! 例如 $ diff <(scp Remoteuser@remote.domain.net:/var/www/html/ 我点击选项卡,它就可以了!(至于我要使用命令本身来完成的工作,我将使用scp“复制”到stdout,并将其作为文件添加到差异文件中。这样,我可以看到我之前部署到服务器的确切更改正在运行rsync) 我很好奇是什么使这项工作如此出色。它是与z shell集成的scp中内置的东西吗?或者是其他东西?

1
重击以逗号分隔的值
我想为逗号分隔的参数列表创建完成规则。例如,我有接收服务器名称列表的命令: myscript -s name1,name2,name3 现在,我已经完成以下工作: _myscript () { local cur prev opts _get_comp_words_by_ref cur prev opts='-s' servers='name1 name2 name3' if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) else case "${prev}" in -s) if [[ "$cur" == *,* ]]; then local realcur prefix realcur=${cur##*,} …

4
自动完成目录中的文件名
这个问题是非常相似这一个,但我不明白的解决方案。我也知道本教程,但仍然无法理解我做错了什么。 我正在尝试自动完成放置在目录的列表/something/: $ ls /something/ One Other Three 以某种方式将发生这种情况: $ hi [TAB] One Other Three $ hi O[TAB] One Other 只有在第一个单词出现的时候hi,不仅在内部/something/。 这就是我在做的事情.profile: _codeComplete() { local cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=( $(compgen `ls /something/` -- $cur) ) } complete -F _codeComplete "hi "

1
如何将字符串补全输出到stdout?
其中一些git命令有很多选项,在它们中搜索我需要的选项通常会很有用-我只是在寻找控制TAB宽度的选项git-gui,但是大约有200个补全git config。一个显而易见的解决方法是将所有补全复制到编辑器中并搜索它们,但我宁愿这样做 [something] | grep tab 没有man或的info页面compgen,help compgen甚至没有解释其自身的选项,也没有自动完成的功能compgen(讽刺的是那是怎么回事?)。 PS:compgen -A不起作用。 PPS:这不是一个问题git-gui- 制表符宽度问题的解决方案在其他地方。 PPPS:这与自动完成命令无关,仅与命令参数有关。

4
Bash完成在centos 7上非常不完整
我已经使用安装了bash补全 yum install --enablerepo=epel bash-completion。虽然它适用于一些基本命令(git和yum),但我缺少大部分的完成程序。 我的 /etc/bash_completion.d包含以下内容: bash_completion.d] $ ls git iprutils redefine_filedir yum yummain.py yum-utils.bash 但是,我知道有bash_completion,例如make(已安装),还有更多,请与即 此处示例输出。 如何获得缺少的完成程序脚本?(最好使用yum,因此我不必手动更新它们) 如果很重要:制表符补全就可以了,但是我没有在.bashrc中采购任何东西。安装软件包后,它才开始工作。 更新:检查完bash的版本后,我已经安装了@fduff,提示我看到了以下内容: $ yum列表已安装| grep完成 bash-completion.noarch 1:2.1-6.el7 @base 但是尝试卸载它并迫使centos从epel存储库中安装bash_completion并sudo yum install --enablerepo=epel bash-completion --disablerepo=base产生package not found。 进一步检查发现,现在位于@base 中的新程序包将完成文件放入/usr/share/bash-completion/completions,但是我仍然缺少一些文件,即ssh和sudo(有些sudo command [tab]虽然command [tab]并没有完成的糟透了),但是我仍然找不到make(应列出中的目标Makefile) UPDATE2: 更改日志指出: 2013年11月1日星期五,彼得·斯托杜卡-2.1-6 仅安装不带“ tar”的可用补全(#810343-注释15),然后删除另一个补全。 2013年9月13日星期五罗马Rakus-2.1-5 添加了另外一个缺少的条件解析:#1007839 2013年9月13日星期五罗马Rakus-2.1-4 添加了条件以不添加某些命令的完成;程序包具有自己的完成名称:#1007839 因此,在我安装了bash_completion之后,重新安装sudo可以sudo完成安装,但是make运气不好。 …

3
从终端启动GUI时如何消除烦恼?
我更喜欢从终端窗口而不是使用图形桌面启动GUI应用程序。一个常见的烦恼是,开发人员常常没有预料到这种类型的使用,因此该应用程序会向stdout或stderr打印许多无用,含糊或无用的消息。由于在后台运行带有&的程序,会在终端上进一步造成混乱,从而生成作业创建和终止的报告。 这些将接受命令行参数并处理自动完成的问题的解决方法是什么? 相关:https : //stackoverflow.com/questions/7131670/make-bash-alias-that-takes-parameter


3
在OS X上〜的意外Bash完成
我按~TabTab了bash命令提示符,得到了意外的完成情况。 首先,它看起来像/Users目录中的所有人一样,还有更多。 然后,我认为它正在对带有“ home”目录的人们进行反向查找/etc/password,或者也许是/var/empty-这似乎是正确的。 我很好奇是什么真正回事,为什么这个作品它。

3
使用vim命令自动执行Bash
在bash中,当发出vim比路径深两个目录的命令时,路径的自动补全最近已停止工作(它按预期与其他命令(如ls和cd)一起正常工作。 例如,如果我键入ls .config/btsync/bt然后按TAB键,它将展开为ls .config/btsync/btsync.conf。 如果我键入vim .config/bt然后按TAB键,它将展开为vim .config/btsync/。 但是,如果我键入vim .config/btsync/bt然后按TAB键,则什么也不会发生(我希望它会扩展为vim .config/btsync/btsync.conf,如上ls例所示)。 当以我自己的用户身份运行和以su身份运行时,我遇到相同的问题。 我读了这篇文章,其中提到较早版本的bash-completion有问题,但我正在运行2.1-5。 更新:经过一些额外的测试,我发现根本问题是bash 仅会完成目录名称,而不会完成文件名。 更新:事实证明,这bash-completion是总体原因。请参阅我对已接受答案的第二条评论。 如有任何关于此行为潜在原因的建议,我们将不胜感激!

2
在zsh中取消完成,但仅完成
当完成功能需要很长时间时,我可以通过按Ctrl+ C(终端中断键,发送SIGINT)或Ctrl+ G(绑定到send-break)来中断它。然后,我留下未完成的单词。 但是,如果我恰好在完成功能完成时按Ctrl+ C或Ctrl+ G,则按键可能会取消命令行并给我一个新的提示,而不是取消完成。 如何设置zsh,以便某个键将取消正在进行的完成,但是如果没有完成功能处于活动状态,则什么也不做?

4
自动完成最新文件
我有一个创建文本文件的过程,该文件的文件名基于其创建时间的时间戳: $ ls 1378971222.txt 1378971254.txt 1378971482.txt 1378971488.txt 1378972089.txt 1378972140.txt 1378972141.txt 1378972153.txt 1378972155.txt 1378972241.txt 如何自动完成最新创建的文件的文件名,即具有最新mtime的文件?无法对这些文件使用制表符补全,因为文件名中的几乎每个字符都与另一个文件共享。我希望找到一个快捷方式(例如Alt .自动完成last命令的最后一个参数的快捷方式)。我已成功地炮制以下别名这是伟大的VIM,但我很想知道,如果一个通用的快捷方式存在,我可以用用kde-open,sqlite3和其他应用程序。 alias lastest="vim `ls -t | grep -vE "^total [0-9]*$" | head -n1`"

1
Zsh完成,启用Shift-Tab
当zsh向您显示可能的补全菜单时,我希望它可以让我shift-tab用来访问以前的补全条目-是否有一个选项可控制使用什么键来访问以前的补全条目? 如果是这样,我需要将什么添加到我的~/.zshrc 文件中进行设置。 如果有什么不同,我目前可以使用箭头键浏览完成菜单,但是我不喜欢这样做,因为箭头键感觉不合适并且难以使用。

1
Bash选项卡补全在以前没有时将“〜”扩展为“ / home / ___”
以前,如果我输入~/biTab,它将变成~/bin。但是,今天它开始~/biTab变成/home/username/bin。 我希望它是前者,但是我不确定发生了什么……我确实添加了一个脚本来编辑bash补全,但是我从我的脚本中删除了它,~./bashrc然后重新启动了服务器。 有谁知道会导致这种情况发生吗?还是我将其改回来? 编辑 所以我发现了可能导致这种情况的原因……与之相关/etc/bash_completion。当我这样做时bind -v,它显示波形符扩展已关闭。 因此,我认为如果我编辑此内容(有点像hack),它将消失。但这并不能真正满足任何要求-最初如何发生这种变化?我从未以的身份运行任何内容sudo,并且在多次关闭并重新启动后,此行为仍然存在。

1
在zsh中动态更新完成列表
我发现zsh的Tab完成结果列表非常有用,但是我想稍微调整一下它们的行为: 它们应该在我Tab第一次出现时出现,然后随着添加的每个新字母动态更新。默认行为是,仅当您Tab再次输入建议时,才会重新评估建议,我想保存此重复的按键。(更新:但是仅列出可能的补全,即使只剩下一个选项,也不应自动修改我的实际提示行。) 有什么办法可以实现这种行为?
13 zsh  autocomplete 

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.