终端模式下的Vim自动补全

时间:2018-09-27 14:50:18

标签: vim

在插入模式下,可以通过按 Ctrl n (用于插入模式完成)或 Ctrl 来显示完成候选列表。 x Ctrl o (用于设置omnifunc时的Omni补全)。但是,这些键绑定在终端模式(:term)下不起作用。

问题:在终端模式下,如何获取完成候选人列表?我期望能够使vim显示完成候选者像grepkillcdpython3和文件路径像/home/user/Desktop,{{1 }}等

我正在使用vim 8.0。

2 个答案:

答案 0 :(得分:1)

在这种情况下,终端显示在vim中,因此您输入的内容不会进入vim。这意味着我们必须使用您的终端为您提供的补充信息。 tab应该像往常一样工作,要完成vim样式,可以将其添加到.inputrc中:

# cycle forward
Control-n: menu-complete
# cycle backward
Control-p: menu-complete-backward

答案 1 :(得分:0)

:terminal只是交互式外壳程序(或由外壳程序启动或代替外壳程序的另一命令)的视图。 Vim提供了一些集成(传递键入的键,显示输出),但是运行显示的是Shell

由于Vim不知道发生了什么(您可能已经启动了一个命令,其中文件系统路径或命令的完成如您所建议的那样毫无意义;您可能已经ssh到另一个未安装python3的系统中),它不能也不应向您提供这些东西。取而代之的是,正如其他人已经评论过的那样,这是shell的工作(并且大多数命令提供了完成功能,有些(例如Bash)甚至是非常强大且可扩展的功能,它们超出了您的建议)或正在运行的命令。 >