【发布时间】:2018-12-13 15:45:30
【问题描述】:
我使用 Makefile 进行 Web 开发,我将 scss (sass) 文件编译为 css,并且我想在编译后的文件中添加一个横幅(带有日期、版本、版权信息、git 分支等的标题)。
虽然我终于设法实现了这一点,但当我打开结果时,在加入位置显示<feff>。
Makefile 是这样的:
BANNER:=\
"/**\n"\
" * @project $(PROJECT_NAME)\n"\
" * @author John Doe <j.doe@example.com>\n"\
" * @build $(DATE)\n"\
" * @copyright Copyright (c) " $(shell date +%Y) ", <Example Inc.>\n"\
" */\n"\
"\n"
css: $(CSS_DEST_DIR)/main.css
$(call colorecho, 3, $(shell du -h $^))
$(CSS_DEST_DIR)/main.css: $(CSS_SRC_DIR)/main.scss $(CSS_SRC_FILES)
@mkdir -p $(CSS_DEST_DIR)
$(call colorecho, 3, "Compiling $@");
$(eval TMPFILE := $(shell mktemp))
@-$(SASS_COMPILER) $(SASS_COMPILER_OPTIONS) -o $(TMPFILE) $<
@echo $(BANNER) | cat - $(TMPFILE) > $@
结果文件在 vim 中如下所示:
/**
* @project data-al
* @author Johannes Braun <j.braun@agentur-halma.de>
* @build 2018-12-13-1619
* @release gitRevSync.long() + gitRevSync.branch()
* @copyright Copyright (c) 2018 , <HALMA GmbH & Co. KG>
*/
<feff>.button,.button--primary,.cookie-notification__accept,.search-form__submit,.mobnav__trigger,.mobnav__button{padding:0;...
od -a 输出
0000400 nl <EF> <BB> <BF> . b u t t o n , . b u t
当我在 bash 命令行上执行相同操作时,一切正常。我在 OSX btyw 上。
我怎样才能摆脱这个?感谢您的帮助
【问题讨论】:
-
这可能来自 sass 编译器,以便将输出标记为 utf8。 (查看临时文件。)
-
tmp文件以
efbbbf开头,在vim中不显示。 -
Vim 将文件视为 utf-8 编码。它看到
efbbbf字节序列,它是 utf-8 的 unicode 字节顺序标记(即 ZERO WIDTH NO-BREAK SPACE),它具有代码点\ufeff。有时 vim 会在显示缓冲区中的数据之前去掉它。请参阅 vim 中的:help bomb。在这些情况下,od是一个非常有用的工具。