终端自动完成功能无法正常工作

终端自动完成功能无法正常工作

如果我开始输入一个命令,比如apt-g在 hiting 之后tab,shell 会将命令完成为apt-get,但是对于命令的第二部分install,比如,如果我输入一些字符insta,比如 hiting tab,则不会将其完成为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"/>

也没什么区别。

答案1

bash-completion是一组 bash 脚本,可以实现特定命令的定制完成。

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

安装

步骤1:安装 bash-completion

$ sudo apt-get install bash-completion

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

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

第2步:.bashrc在文件中启用 bash-completion

打开你的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重新打开终端。现在应该已经修复了。

答案2

如果你的情况是 Xfce 下的终端选项卡不工作,解决方案如下:

  1. 打开应用菜单>设置>窗口管理器
  2. 点击 '键盘' 标签。
  3. 清除 '切换同一应用程序的窗口' 环境。

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

我找到了解决方案这里

答案3

您可能还处于不支持自动完成的 shell 中(例如:Bourne Shell | SH)。如果您希望 BASH 自动完成,则需要切换 shell,例如使用以下命令切换到 BASH(Bourne Again SHell)

chsh -s /bin/bash

来源:Ubuntu Wiki - 更改 Shell

答案4

就我而言,我试图执行一个脚本./myScript.sh,但输入./my[tab]无法自动完成。

我必须为该文件添加执行权限并且自动完成功能才能起作用。

相关内容