2

我在 Vim 中编写苗条文件,我希望它们在保存时编译并保存为 html 文件。将此添加到我的 .vimrc 中,可以在当前目录中的文件中使用它:

au BufWritePost *.slim silent !slimrb % > $(echo % | cut -d'.' -f1).html

它不适用于具有类似路径的文件,../file.slim因为 cut 命令将其转换为 ./file.slim.

我需要使用参数扩展,但在 Vim 中执行外部命令时,% 字符是为当前文件路径保留的。

无论文件的目录如何,如何编译并保存苗条文件到 html 文件?

4

2 回答 2

2
au BufWritePost *.slim :silent call system('slimrb '.shellescape(expand('%')).' > '.shellescape(expand('%:r').'.html'))

. silent !slimrb % > %:r.html在文件名不包含特殊字符的gvim中,这就像silent. 要处理换行符,您必须使用以下内容:

au BufWritePost *.slim :execute 'silent !slimrb' shellescape(@%, 1) '>' shellescape(expand('%:r').'.html', 1) | redraw!

或编写自定义shellescape函数。

于 2012-10-16T14:37:01.613 回答
1

我意识到我可以在 Vim 中使用%:r. 要自动编译并将一个苗条文件保存为我使用的 html 文件

au BufWritePost *.slim silent !slimrb % > %:r.html

于 2012-09-09T21:55:22.890 回答