如何在 vim 中制作 prg gcc 管道三通 errors.err?
How to makeprg gcc pipe tee errors.err in vim?
我想通过管道将 stderr
从 gcc
传输到 tee errors.err
,但我没有运气尝试我编造的这两件作品:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>\ >(tee\ errors.err)
文件在那里,但它是空白的。起初我以为 :make
正在删除它,但即使使用 set makeef=makeerrors.err
errors.err
文件仍然是空白。
另一个(实际上是我以前的)解决方案是:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ |\ tee\ errors.err
但是我遇到了这个错误,我一直不知道如何消除:E10: \ should be followed by /, ? or &
编辑 1:我也尝试使用其他文件名,例如 teerrors.err
,以防万一。同样的问题。
编辑 2:我也尝试过:
set shellredir=2>errorsredir.err
!gcc % -o %<.x
无济于事。但是,无论如何,这不是解决方案,因为我无法将 makeprg
设置为过滤器。
编辑 3:这个(管道中的额外 \
)
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ \|\ tee\ teeerrors.err
给出 vim 错误:E492: Not an editor command: tee teeerrors.err
我只是 运行 没有想法。
我想我找到了解决办法。比我想象的要简单。
:set makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>errors.err;\ cat\ errors.err
底线:你不能管道。 (至少我找不到管道的解决方案)。
有点晚了,但是...您可以使用管道,只需添加额外的双反斜杠:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ \\|\ tee\ teeerrors.err
我想通过管道将 stderr
从 gcc
传输到 tee errors.err
,但我没有运气尝试我编造的这两件作品:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>\ >(tee\ errors.err)
文件在那里,但它是空白的。起初我以为 :make
正在删除它,但即使使用 set makeef=makeerrors.err
errors.err
文件仍然是空白。
另一个(实际上是我以前的)解决方案是:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ |\ tee\ errors.err
但是我遇到了这个错误,我一直不知道如何消除:E10: \ should be followed by /, ? or &
编辑 1:我也尝试使用其他文件名,例如 teerrors.err
,以防万一。同样的问题。
编辑 2:我也尝试过:
set shellredir=2>errorsredir.err
!gcc % -o %<.x
无济于事。但是,无论如何,这不是解决方案,因为我无法将 makeprg
设置为过滤器。
编辑 3:这个(管道中的额外 \
)
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ \|\ tee\ teeerrors.err
给出 vim 错误:E492: Not an editor command: tee teeerrors.err
我只是 运行 没有想法。
我想我找到了解决办法。比我想象的要简单。
:set makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>errors.err;\ cat\ errors.err
底线:你不能管道。 (至少我找不到管道的解决方案)。
有点晚了,但是...您可以使用管道,只需添加额外的双反斜杠:
setlocal makeprg=gcc\ -Wall\ -Wextra\ -g\ -O0\ -ansi\ -pedantic-errors\ %\ -o\ %<.x\ 2>&1\ \\|\ tee\ teeerrors.err