我可以在vim中使用类似隧道的东西吗?

我可以在vim中使用类似隧道的东西吗?,vim,editor,Vim,Editor,例如: 如果我的当前目录是/temp/src/com。在vim中编辑的文件来自/java/test。现在我想将文件的路径添加到path环境中。那么,在vim中是否有类似于set path+=$(filepath)的cmd 案例2: 在终端中运行make将开始编译一个项目,它将输出有关此编译的日志。现在我想使用一些命令,比如r,将输出的日志读入vim!制作 您可以使用$MYVAR语法引用环境变量。要设置系统环境变量,请使用 让$MYVAR=foo e、 g let$PATH=“/foo”$路径 看

例如:

如果我的当前目录是/temp/src/com。在vim中编辑的文件来自/java/test。现在我想将文件的路径添加到path环境中。那么,在vim中是否有类似于
set path+=$(filepath)
的cmd

案例2:

在终端中运行
make
将开始编译一个项目,它将输出有关此编译的日志。现在我想使用一些命令,比如
r,将输出的日志读入vim!制作

  • 您可以使用
    $MYVAR
    语法引用环境变量。要设置系统环境变量,请使用

    让$MYVAR=foo

    e、 g

    let$PATH=“/foo”$路径

    看到或

    然后,您可以使用获取当前缓冲区中文件的目录名:

    让$PATH=expand(“%:p:h”)$路径

  • 要在vim中读取和解析编译输出,您可能有兴趣检查

    使用
    :make
    而不是
    :!制造

  • 1) 将路径拉入当前Vim缓冲器:

    :r!回显\%PATH\%

    附加到路径:

    :let$PATH=“C:\Test”$路径

    2) 这个问题是不明确的,因为它取决于您的makefile行为。 如果您的Makefile只是打印到控制台,那么,:r make应该可以完成这项任务。 如果make文件实际上显式地写入文件,则没有自动方式。 您必须编写一个自定义vimscript函数来拉入日志

    1) 第二部分 我不知道如何在一行中实现它,但这里有一种方法可以实现您想要的功能

    :redir@a“将输出重定向到注册a
    :pwd
    :redir END“停止重定向
    :让@a=substitute(@a,'\n',''g')删除换行符
    :设$PATH=@a.:“$PATH


    如果您需要经常使用它,您应该能够将其封装在函数中。

    谢谢您的回答。它确实很有帮助。第二个问题已经解决了。但第一个问题我还没有清楚地表达出来。我知道如何添加路径。但我没有解决的是如何添加从命令生成的路径。我们都知道
    pwd
    将打印出来vim中的当前目录。然后我怀疑是否可以将
    pwd
    添加到路径中(虽然它已经在路径中,但我只想澄清这个问题)。再次感谢。