选项卡自动完成“命令替换错误”

选项卡自动完成“命令替换错误”

我以前从不依赖它,但现在我上瘾了,这让我发疯。当我在终端中点击Tab自动完成我的语句时,它对大多数命令(cd、mv、rm 等)都有效,但对 vim/vi 不起作用。当我输入vim Tab或执行任何类似操作时,只要按下 tab 键就会出现错误:

bash: command substitution: line 905: syntax error near unexpected token `}'
bash: command substitution: line 905: `        }'

我会尝试自己修复这个问题,但我不知道该查看哪个文件。我试过了/usr/share/bash-completion/bash-completion,它是我找到的与 bash 相关的少数几个超过 900 行的文件之一,但第 905 行处理 IP 寻址。为了全面起见,这里是它:

-ne 's|.*inet[[:space:]]\{1,\}\([^[:space:]/]*\).*|\1|p' )" \

无论如何,我尝试从 git 安装最新的 bash-completion,如如何修复命令替换中损坏的 bash 完成?,但这没有帮助。关闭并重新启动 bash 有时可以帮上忙几秒钟,并sudo -i使其正常工作,但我当然不想su每次需要编辑某些内容时都保持登录状态。知道我需要查看哪个文件来纠正这个问题吗?

编辑:如果我在终端内运行 bash,我看不到任何立即的变化(颜色保持不变等),但我可以Tab用 vim 看到。当然,我之前会话中的所有别名也都丢失了,如果我从 bash 执行 shell 脚本,它会返回到“外部”shell,从而导致问题再次出现或迫使我重新运行 bash。如果我能修复这里出现故障的脚本,那真的会让我的生活更轻松。

答案1

我认为你走在正确的轨道上,Ronald。在你的 bash_completion 文件中,有一个名为 _ip_address 的函数,它有一个跨越五行的变量赋值。尝试对照 bash_completion 文件中行号 928 到 932 之间的所有五行检查你的代码此链接。拼写很重要 ;)

相关内容