如何在quickfix窗口中使用tidy with vim而不使用unix linebreak,以及如何仅更正错误?

如何在quickfix窗口中使用tidy with vim而不使用unix linebreak,以及如何仅更正错误?,vim,tidy,Vim,Tidy,在进行了大量搜索和尝试后,我发现了以下内容,以使我在vim中的工作更整洁: :set makeprg=tidy\ -e\ --gnu-emacs\ yes :set shellpipe=2> :set errorformat=%f:%l:%c:\ %m :make % :copen 但是为什么quickfix窗口中的输出在每一行的末尾都有一个^Munix换行符? 我试图删除它,但quickfix窗口中的内容不可修改 我也试图让tidy纠正错误,但只纠正错误 我创造了这个: let

在进行了大量搜索和尝试后,我发现了以下内容,以使我在vim中的工作更整洁:

:set makeprg=tidy\ -e\ --gnu-emacs\ yes 
:set shellpipe=2>
:set errorformat=%f:%l:%c:\ %m
:make %
:copen
但是为什么quickfix窗口中的输出在每一行的末尾都有一个
^M
unix换行符? 我试图删除它,但quickfix窗口中的内容不可修改

我也试图让tidy纠正错误,但只纠正错误

我创造了这个:

   let errorf = "d:\\error.txt"
   let currentf = expand("%:p")
   let writef = "d:\\".expand("%:t:r")."_tidy.".expand("%:e")

   exe a:type."!tidy -w 0 -f ".errorf." -o ".writef." ".currentf 
   exe ":bot split ".writef
   exe ":bot split ".errorf
但这会更改文件的完整输出。 我只想纠正错误。 我已经阅读了tidy的手册,但找不到一个简单的选项来只更正错误而不更改文件的其余部分。 p、 e

test-->测试

是否有tidy用户知道如何只更改tidy中的错误?

您可以通过管道将tidy的输出传输到sed,以创建一个过滤器,在vim将回车放入quickfix窗口之前删除回车符

set makeprg=tidy\ -e\ --gnu-emacs\ yes\ $*\ \\\|\ sed\ 's/\\r$//'
管道需要转义两次,一次转义一次,用于解释命令

我使用的sed命令是

sed 's/\r$//

这将删除行末尾出现的回车。

请查看该插件。它支持将
tidy
作为HTML的语法检查器之一。

谢谢。不幸的是,我在windows环境中,只能使用
使用sed。我试图将sed更改为vim命令(
set makeprg=tidy \-e \--gnu emacs\yes\\\\\\\\\\\\\'%s/\\r$//g'
),但使用此命令我没有任何输出。(清空快速修复窗口)。如果仅转义管道一次,则相同。@Remonn-sed是一个外部命令,管道在shell中完成。所以我不知道你的评论是什么意思,除非你是说sed不在你的道路上?没有
是必需的,因为整个命令应该在vim之外执行。当我使用上面的sed命令时,通过管道传输到vim命令是没有意义的(因为您在一个shell中),它会给出以下错误:` | | sed:expression-e#1,character 1:unknown命令:````'@remann您需要查找sed版本的语法。我正在使用GNU sed。我不确定您使用的是哪个版本的sed fdinoff,我也在使用gnused(并且我在环境中添加了sed路径)。也许sed会给其他命令带来问题。所有命令你都试过了吗?
sed 's/\r$//