在 Vim 插入模式下,有没有办法添加文件路径自动完成?

Posted

技术标签:

【中文标题】在 Vim 插入模式下,有没有办法添加文件路径自动完成?【英文标题】:When in Vim insert mode, is there a way to add filepath autocompletion? 【发布时间】:2010-12-27 12:43:37 【问题描述】:

我编写了很多 shell 脚本,并且经常需要输入文件路径。我想知道是否有人知道在插入模式下让 Vim 自动完成文件路径的方法,就像当你在你最喜欢的 shell 中时,你可以通过 tab 来完成目录或文件的路径。

如果您可以将 shell 的 CTRLD 功能带入 Vim 插入模式(即查看当前路径中的文件/目录),则加分。

【问题讨论】:

有趣的问题,我也很想知道答案:) @stephenmm Ctrl-D 在你的 shell 中做什么?在我的 bash shell 中,当我输入一些文本时它什么也不做,否则关闭终端。 @alhelal - 似乎 CTRL-D 会在我的一些旧 shell 中显示文件和目录。我再也看不到任何 CTRL-D 功能了。 【参考方案1】:

对于file name 全方位补全,可以使用:

Ctrl-XCtrl-F

【讨论】:

又一个 vim 啊哈时刻....谢谢。无论如何,我不在插入模式下使用制表符,所以将其添加到我的 .vimrc 中: imap 在插入模式下的另一个好用处是 。这将根据您正在处理的文件中的其他单词自动完成您输入的单词。我在输入变量或类名时一直使用它。 有没有办法影响搜索路径?在 C 文件中添加 #include 条目时,路径可能与您打开文件的位置无关。 @RobBradford 试试 YouCompleteMe,如果提供了正确的信息(例如,我使用 YCM-Generator 生成的 .ycm_extra_conf.py,它使用我的基于 cmake 的构建系统),它会很好地自动完成包含文件夹中的任何路径名. 文件名中有空格时,Vim 无法自动完成。有没有办法解决这个问题?【参考方案2】:

ctrl-x ctrl-f

:he compl-filename

【讨论】:

【参考方案3】:

在 @CMS 和 @michael 的优秀答案的基础上构建

当使用 ctrl+X ctrl+f 命令序列时,它将显示文件列表当前目录。我花了一分钟寻找在不同文件名之间上下移动的正确键。正确的键是 Ctrl-n 和 Ctrl-p。您几乎可以使用任何其他键(如 Space)来选择并继续输入。

另外,如果你还没有在你想插入的文件/目录中,你可以往下走一个文件树结构如下:

    (可选)输入目录的某些部分。例如,您甚至可以使用../../! 按 ctrl+X ctrl+f 并从列表中选择树中的第一项。 接下来再次按ctrl+f,同时突出显示正确的项目以显示目录树结构下一层的列表。

您可以继续这样做,直到找到要插入到文档中的目录/文件。

【讨论】:

第 3 步中的意思是 ctrl+x 和 ctrl+f 吗?因为只是 ctrl+f 对我不起作用,所以它和 ctrl+n 一样。顺便说一句,如果目录中有空格,它在这里不起作用:/。你知道解决方法吗? 请编辑此答案,因为步骤 3 中的不准确(这会导致一些混乱)。请根据上面的@Rojo 评论修改答案,否则会有帮助。【参考方案4】:

我遇到了类似的问题。我找到了类似的解决方案:

    sudo apt-get install realpath

并且在 VIM 中使用普通模式类型导航到文件:

    :r !realpath /path/to/file

当您在 !realpatch 之后以非插入模式导航时,您可以使用我们的按键。

瞧! TAB 又开始工作了!

【讨论】:

以上是关于在 Vim 插入模式下,有没有办法添加文件路径自动完成?的主要内容,如果未能解决你的问题,请参考以下文章

Linux入门学习

Vim操作指南

Vim插入模式下backspace按键无法删除字符的问题

linux vim编辑

vim

Vim编辑指令