vimで、sassファイル保存時にひとつ上の階層に書きだすスクリプト

すげー冗長だけど、なんとか形になったので貼っておくw
ちなみに、vimからsassを変換する(–watchしない)を参考にしました。 

function! Sass_convert()
    let scss = expand('%:p')
    let filename = expand('%:t:r')
    let scsspath = substitute(scss, '\v(/.*)/(.*)', '\1', '')
    let parent = substitute(scsspath, '\v(/.*)/(.*)', '\1', '')
    let css  = parent . '/' . filename . '.css'
    let cmd  = printf('sass -t compressed %s %s &', scss, css)
    let res  = system(cmd)

    if res != ''
        echo res
    endif
endfunction
au! BufWritePost *.scss call Sass_convert()

こんな感じ。substituteのところもっとスマートにできそうだけど、vimの正規表現よくわからん・・。

タグ: vim sass
  1. edoの投稿です