第一次完成后,Bash选项卡完成会增加额外空间

时间:2012-08-16 06:28:17

标签: bash tab-completion

Bash选项卡完成在第一次完成后添加额外空间,如果竞争目标是多级文件夹中的文件,则会停止进一步完成。

例如,我在路径〜/ Documents / foo / bar.txt中有一个文件,我想列出它。 输入时我面临以下问题

a@b:~$ls Docu <TAB>

我得到了

a@b:~$ls Documents |(<-this is the cursor, so there is an extra space afer Documents)

所以我无法进一步完成标签。我必须退格才能删除多余的空间。

通常我想得到:

a@b:~$ls Docu <TAB>
a@b:~$ls Documents/ <TAB>
a@b:~$ls Documents/foo/ <TAB>
a@b:~$ls Documents/foo/bar.txt

4 个答案:

答案 0 :(得分:21)

仅供记录:adobereader-enu(acroread)包中还有一个错误,可以打破bash完成。在这种情况下,您只需删除符号链接:

rm /etc/bash_completion.d/acroread.sh

另请参阅:https://bugs.launchpad.net/ubuntu/+source/acroread/+bug/769866

答案 1 :(得分:6)

我在Ubuntu 11.10和12.04中的bash完成时遇到了同样的问题。我发现通过编辑/ etc / bash_completion我可以获得许多命令来开始正常工作。具体来说,我评论了以下部分:

####
# makeinfo and texi2dvi are defined elsewhere.
#
#for i in a2ps awk bash bc bison cat colordiff cp csplit \
#    curl cut date df diff dir du enscript env expand fmt fold gperf gprof \
#    grep grub head indent irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
#    mv netstat nl nm objcopy objdump od paste patch pr ptx readelf rm rmdir \
#    sed seq sha{,1,224,256,384,512}sum shar sort split strip tac tail tee \
#    texindex touch tr uname unexpand uniq units vdir wc wget who; do
#    have $i && complete -F _longopt -o default $i
#done

现在我再次运作良好。我还没弄清楚为什么mv仍然是错误的行为。

答案 2 :(得分:4)

在askubuntu已经回复here。它与错误here

有关

以上主题的相关答案:

  

编辑/ etc / bash_completion第1587行,将默认值更改为文件名(先备份)。

答案 3 :(得分:0)

我也通过改变解决了这个问题 _filedir with _filedir_pdf 在/etc/bash_completion.d/acroread.sh中 (Ubuntu 12.04)

acroread bash完成改变了_filedir函数,从而改变了许多其他的andbash完成函数的行为