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

时间:2011-12-09 07:19:59

标签: vim editor

例如:

如果我当前的目录是/ temp / src / com。在vim中编辑的文件来自/java/test.And现在我想将文件的路径添加到路径环境中。那么如果在vim中有一个像set path+=$(filepath)这样的cmd

案例2:

在终端中运行make将开始编译项目,它将输出有关此编译的日志。现在我想使用像r !make这样的命令将输出的日志读入vim。

2 个答案:

答案 0 :(得分:3)

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

    let $MYVAR=foo

    e.g。

    let $PATH = "/foo" . $PATH

    请参阅http://vim.wikia.com/wiki/Environment_variables:help :let-environment

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

    let $PATH = expand("%:p:h") . $PATH

  2. 要阅读并解析vim中的编译输出,您可能有兴趣查看quickfix mode

    使用:make代替:!make

答案 1 :(得分:3)

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

  

:r!echo \%PATH \%

追加到路径:

  

:让$ PATH =“C:\ Test”。 $ PATH

2)这个问题含糊不清,因为它取决于你的makefile行为。 如果你的Makefile只是打印到控制台,那么,:r make应该可以解决问题。 如果您的make文件实际上明确地写入文件,那么就没有自动方式。 你必须编写一个自定义的vim​​script函数来提取日志。

1)第2部分 我不知道在一行中有什么方法可以做到,但这是实现所需功能的一种方法。

  

:redir @a“重定向输出以注册一个
  :PWD
  :redir END“停止重定向
  :让@a =替换(@a,'\ n','','g')“删除换行符   :让$ PATH = @ a。“:”。 $ PATH

如果您需要经常使用它,您应该可以将它包装在一个函数中。