我正在Vim中编写苗条文件,我希望它们在我保存时编译并另存为html文件。将此添加到我的.vimrc会使当前目录中的文件发生:
au BufWritePost *.slim silent !slimrb % > $(echo % | cut -d'.' -f1).html
由于cut命令将其转换为具有../file.slim
之类路径的文件,因此不起作用
./file.slim
。
我需要使用parameter expansions,但在Vim中执行外部命令时,%字符是为当前文件路径保留的。
如何将精简文件编译并保存到html文件,而不管文件的目录是什么?
答案 0 :(得分:1)
我意识到我可以使用%:r
修剪Vim中的扩展名。要自动编译并将slim文件保存为html文件,我使用
au BufWritePost *.slim silent !slimrb % > %:r.html
答案 1 :(得分:1)
au BufWritePost *.slim :silent call system('slimrb '.shellescape(expand('%')).' > '.shellescape(expand('%:r').'.html'))
。在gvim中,文件名不包含特殊字符,这就像silent !slimrb % > %:r.html
一样,但在终端vim中它不会使屏幕空白(silent
不会阻止这种情况),并且当文件名包含除换行符之外的任何特殊字符时起作用。要处理换行,您必须使用以下内容:
au BufWritePost *.slim :execute 'silent !slimrb' shellescape(@%, 1) '>' shellescape(expand('%:r').'.html', 1) | redraw!
或编写自定义shellescape
功能。