终端自动完成功能无法正常运行


56

如果我apt-g在打完之后开始输入命令tab,shell会完成命令到apt-get,但是对于命令的第二部分install,如果我输入某些字符,例如instatab,则不会完成它install

另一个例子:输入后,sudo击打tab不会完成任何操作。例如:sudo apt-ge[ tab],什么也没有。

我使用mini iso(40MB网络安装程序)安装了Ubuntu,所以也许我错过了一个配置!

我已将此代码添加到我的代码中,.bashrc但仍然无法正常工作:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

我还检查了的许可,.bashrc它是-rw-r--r--

我还提供了将.bashrc更改source .bashrc应用到新环境后的更改,但仍然没有效果。

我使用xfce4-terminal它,所以我认为可能是终端而不是bash。

但是编辑:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

并更改:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

至:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

也没有任何区别。

Answers:


83

bash-completion 是一组bash脚本,可对特定命令进行自定义完成。

这不仅适用于文件和目录,还适用于命令。因此,您键入命令的一部分,然后单击Tab我们会自动完成命令。

安装

步骤1:安装bash-completion

$ sudo apt-get install bash-completion

有时,如果我们通过以下命令重新安装它,它会起作用:

$ sudo apt-get install --reinstall bash-completion

第2步:.bashrc文件中启用bash补全

打开您的文件夹gedit ~/.bashrc,如果那里不存在这些内容,请在其末尾添加并保存。

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

重要提示:更改后你需要你的源~/.bashrcsource ~/.bashrc或重新打开您的终端。现在应该修复。


1
我想确认将上述代码块添加到〜/ .bashrc文件确实对我有用。只是一条评论;您实际上并不需要注销并再次登录以使其正常工作(您可能不希望终止工作内容),只需运行即可source ~/.bashrc
nullgeppetto

我必须重新打开终端才能正常工作!
吉尔伯托·阿尔比诺

2
完成突然停止为我工作,以上步骤不能解决问题。关于如何解决此问题的任何想法?在Ubuntu 16.04
Gudlaugur Egilsson

1
第2步为我做到了。或从/etc/skel/.bashrc
Hendy Irawan

1
@SergioIvanuzzo不确定您面临的问题可能会在unix.stackexchange.com/q/219342/72456上找到,它会有所帮助,否则请针对您遇到的问题提出自己的问题。
–αғsнιη

27

如果你的情况是不是下工作端子突出Xfce

解决方法如下:

  1. 打开Application Menu> Settings> Window Manager
  2. 点击Keyboard标签。
  3. 清除Switch window for same application设置。

窗口管理器屏幕截图如何清除同一应用程序的切换窗口

我在这里找到了解决方案


尝试了接受遮篷,但是一切都已经准备就绪。这确实是我的解决方案。
user1226868 '16

同上。很好的提示。
cerebrou

非常感谢您,我真的对此一无所知。
达斯汀·考尔斯

2
截至2018
。– clifgray

谢谢为我工作
MMH

3

您可能还处于不支持自动完成的外壳中(例如:Bourne Shell | SH)。如果您希望BASH自动完成,则需要切换外壳,而不是使用命令BASH(再次进行Bourne SHell)

chsh -s /bin/bash

来源:Ubuntu Wiki-更改外壳


1

就我而言,我正在尝试执行脚本./myScript.sh,并且键入./my[tab]不会自动完成。

我必须将执行权限添加到文件中,并且自动补全有效。

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.