首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vim命令自动完成

使用vim命令自动完成
EN

Unix & Linux用户
提问于 2014-07-24 09:45:24
回答 2查看 5K关注 0票数 13

在bash中,在路径深度超过两个目录的情况下发出vim命令时,路径的自动完成最近停止工作(它继续与其他命令(如lscd)一样工作)。

例如,如果我键入ls .config/btsync/bt,然后按TAB,它将扩展为ls .config/btsync/btsync.conf

如果我键入vim .config/bt,然后按TAB,它就会扩展到vim .config/btsync/

但是,如果我键入vim .config/btsync/bt,然后按TAB,什么都不会发生(我希望它扩展到vim .config/btsync/btsync.conf,如上面的ls示例所示)。

在作为我自己的用户运行和作为su运行时,我会遇到同样的问题。

我读过这个职位,它提到了bash完成的旧版本的一个问题,但是我运行的是2.1-5。

更新:经过一些额外的测试后,我发现根本的问题是bash将只完成目录名,而不是文件名。

更新:原来bash-completion是主要原因。见我对已被接受的答案的第二个评论。

任何关于这种行为的潜在原因的建议,我们都会感激地收到!

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-07-25 23:30:31

我为您做了更多的研究,下面是我发现的--自动完成的关键是bash命令complete。您可以使用以下方法打印vim的规则:

代码语言:javascript
复制
complete -p vim

同样,您可以通过以下方式删除这些特定规则:

代码语言:javascript
复制
complete -r vim

此命令将其重置为默认值-通常的路径和文件名完成时不需要任何额外的逻辑。这可能就是你想要的。

要了解更多信息,请查看help completeman bash,并查找有关complete命令的部分(它是bash内置的,因此在bash手册中有文档)。

最后一点-上面的更改只影响当前的bash会话,如果您想在每次登录后删除complete -r vim~/.bashrc

希望有帮助:)

票数 11
EN

Unix & Linux用户

发布于 2014-07-25 04:00:57

Bash by默认值只自动完成路径和文件名。但是,该机制是可扩展的,可以教bash为不同的程序执行不同的自动完成。例如,对于git,它可以自动完成子命令名(克隆、提交)和修订,而不仅仅是路径名。有时很方便,有时很烦人--例如,当gzip -d拒绝自动完成没有.gz扩展的文件名时。

Bash通常是在/etc/bash_completion.d中配置的--您可能会在其中找到一个名为vim的文件。这是包含vim命令行自动完成规则的文件。

现在你有两个选择:

  1. 或者按照用户的预期,将文件修复为自动完成路径。
  2. 删除该文件以禁用特殊的vim规则,并且只执行默认路径自动完成。

当然,提交一个错误报告,概述问题,以便在将来的版本中得到修正:)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/146303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档