我正在尝试使用vim的 compl-filename
功能( ctrl-x ctrl-f 在INSERT
模式下完成路径,但是如果没有(暂时)结束完成模式,我无法弄清楚如何穿越目录:
假设我想完成路径/etc/sysconfig/network-scripts/ifup
。
我希望能够做类似的事情:
/ e ctrl-x ctrl-f e tc//etc/ s y s ctrl-f etc/sys config//etc/sysconfig/ n e t ctrl-f etc/sysconfig/net console ctrl-n /etc/sysconfig/net 工作 ctrl-n /etc/sysconfig/net 工作 - 脚本//etc/sysconfig/network-scripts/ i f u p ctrl-y /etc/sysconfig/network-scripts/ifup
问题是,一旦我在路径匹配之后开始键入*(例如/etc/
),它就会结束文件名的完成。我希望它保持在文件名完成中,以便我仍然可以使用 ctrl-f , ctrl-n 等。 ctrl-x ctrl-f 再次重新启动它,并且有用的完成弹出菜单在此期间消失。
我是否可以设置一个选项来更改此?
*通过'键入',我指的是'isfname'
中的字符 - 当然,键入其他字符(例如空间或标点符号)不应继续文件名完成。
我不确定您的意思是什么,但是您只需按 ctrl-x ctrl-f 再次上在完成菜单以扩展其时,目录是一个目录。您不必先关闭菜单。我只是保留 ctrl 固定并点击xf
以遍历目录, n
和 p
以上和向下移动,然后 w
返回。
如果您不使用:h i_CTRL-F
,则可以重新启动。例如,
inoremap <C-f> <C-x><C-f>
简单的重新映射将为
inoremap / /<C-x><C-f>
因此,当您在插入模式下键入slash(/)时,您将获得自动完成弹出:)
将其放在.vimrc文件(for vim)或init.vim(for neovim)
vim不做 auto -completion。
为此,您需要一个专用插件,例如AutoComplepop或neocomplecache
请先在使用cntr x f之前使用插入" i"。我处在类似的情况下。:)