如何解决制表符补全,使其不隐藏条目?


17

我在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 shinstdin zle

2
如何breakdowns.R eventloop.R完成不正确?尝试取消设置该completeinword选项,因为这样可以从游标的左右两端进行补全。这意味着,如果我键入pac作为pacman,并有一个叫做命令arpac,那么arpac将是补全列表,因为完成光标的两侧,而不是只在右边发生。
Alexej Magura 2013年

我没有意识到这个问题…… breakdowns.R eventloop.R从不完整的意义上说,这是不正确的完成。如果您仔细查看文件列表,则除了2之外,还有不止2个.R
Nikola Knezevic 2014年

我尝试将一堆与您列出的文件同名的文件以及zR,az,.R和z_test.R进行测试以进行测试-z_test.R不会尝试自动完成,但是z,.R会的。猜猜这是某种正则表达式的不幸
Dmitri DB

这可能与github.com/robbyrussell/oh-my-zsh/issues/1398有关,这是一个老问题,但最新版本具有相似的完成代码。我没有尝试解决方法来确认。
rjewell 2014年

Answers:


1

问题在于zstylefor matcher-list。

如果将以下内容添加到中.zshrc,它将解决此问题:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

e:(而不是默认的r:)强制匹配字符串的结尾。

有关这些选项的详细信息,请参见ZSH:完成匹配控件文档


0

您是否注意到它将光标置于何处?由于所有文件都以.R结尾,因此它会自动为您添加可能的建议。

如Tshepang所述,自动完成使用的是“两端”。

尝试将没有.R名称的文件放到该文件夹​​中,您会发现.R位消失了。

坦白地说,自动完成实际上需要“完成”某些事情,而不是盲目的目录假设。


0

Gert很可能是正确的解决方案。但是,我怀疑文件列表(breakdowns.R和eventloop.R)不完整的原因是由于这些文件是当前工作目录中唯一标记为可执行文件的文件。您可以使用“ ls -l”确认,然后查看诸如rwx之类的权限。如果您在PATH中没有显式的“ ./”目录,那么我希望这两个文件也不会出现。

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
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.