在插入模式下使用 vim 文件名完成遍历目录 (Ctrl-X Ctrl-F)

Posted

技术标签:

【中文标题】在插入模式下使用 vim 文件名完成遍历目录 (Ctrl-X Ctrl-F)【英文标题】:Traversing directories with vim file name completion in insert mode (Ctrl-X Ctrl-F) 【发布时间】:2012-10-30 21:46:01 【问题描述】:

我正在尝试使用 vim 的 compl-filename 功能 (Ctrl-XCtrl-F) 在 INSERT 模式下完成路径,但我不能找出如何在不(暂时)结束完成模式的情况下遍历目录:

假设我要完成路径/etc/sysconfig/network-scripts/ifup

我希望能够做类似的事情:

/eCtrl-XCtrl-F /etc/ /etc/sysCtrl-F /etc/sys配置/ /etc/sysconfig/netCtrl-F /etc/sysconfig/net控制台Ctrl-N /etc/sysconfig/networkCtrl-N /etc/sysconfig/net工作脚本/ /etc/sysconfig/network-scripts/ifupCtrl-Y /etc/sysconfig/network-scripts/ifup

问题是,一旦我在路径匹配(如/etc/)后开始输入*,它就会结束文件名完成。我希望它保留在文件名完成中,以便我仍然可以使用 Ctrl-FCtrl-N 等。由于它结束完成,我必须输入再次Ctrl-XCtrl-F重新启动它,同时有用的完成弹出菜单消失。

我可以设置一个选项来改变它吗?

* 这里的“输入”是指'isfname' 中的字符——当然,输入其他字符(如空格或标点符号)不应继续完成文件名。

【问题讨论】:

【参考方案1】:

简单的重映射将是

inoremap / /<C-x><C-f>

因此,当您在插入模式下键入斜杠(/)时,您将获得自动完成弹出窗口 :)

将它放在您的 .vimrc 文件(对于 vim)或 init.vim(对于 neovim)中

【讨论】:

【参考方案2】:

在使用cntr+x+f之前请先插入“i”。我也有类似的情况。 :)

【讨论】:

【参考方案3】:

Vim 不做自动-完成。

为此,您需要一个专用插件,例如 AutoComplPop 或 NeoComplCache

【讨论】:

【参考方案4】:

我不确定你在说什么,但你可以在目录中再次按 Ctrl-XCtrl-F完成菜单以展开它。您不必先关闭菜单。我只是按住Ctrl并点击xf遍历目录,np上下移动,w返回。

如果您不使用:h i_CTRL-F,那么您可以重新映射它。例如,

inoremap <C-f> <C-x><C-f>

【讨论】:

如果我在完成路径的一部分后立即键入^XF(以/ 结尾),我可能需要滚动许多路径才能找到我想要的路径,但无法找到通过键入额外的字符来限制选项。 ^XFP 至少可以让我输入额外的字符,但它很笨重,而且没有必要。 @codebeard 你永远不需要输入^XFP。如果您开始输入/et,那么您可以点击^XF。然后键入X^XF(例如)以获取/etc/X11/。您可以在菜单中开始输入,而无需使用^P。我很可能在这里有偏见,但我真的可以想象一个更好的方法来做到这一点。如果你想让它表现得像 bash 完成,你可以inoremap &lt;Tab&gt; &lt;C-x&gt;&lt;C-f&gt; 除了我在这里输入'X'时,我失去了弹出菜单,这可能是首先使用文件名完成的目标——我很少用它来节省输入(我可以在更短的时间内键入一个 30 个字符的路径名,而不是弄乱组合键),但是当我不记得我在寻找什么路径时,我会使用它。此外,考虑到&lt;Tab&gt; 键在编辑大多数文件中的重要性,inoremap &lt;Tab&gt; ... 可能是不明智的。 @codebeard 哎呀,我的意思是我无法想出更好的方法来做到这一点。可能有一个插件可以让你回到文件完成模式,直到你点击&lt;Space&gt; 来结束它。希望你能找到适合你的东西。

以上是关于在插入模式下使用 vim 文件名完成遍历目录 (Ctrl-X Ctrl-F)的主要内容,如果未能解决你的问题,请参考以下文章

vim进入text.c文件里.在插入模式下,想查找单词word,怎么进行操作

为啥在vim中插入模式下按Backspace键,会输入^?,而不是向前删除呢?怎样更改设置?

linux学习二-vi/vim编辑器

打开vim后怎样编写c/c++/java文件即编译运行 编写完后如何保存 保存路径在哪 路径是不是可更改

vim编辑器

vim学习小结