(vim) scss 파일을 자동으로 컴파일하게 하기

scss 파일을 저장할 때 자동으로 컴파일 해주는 기능을 만들어보자. vim8의 비동기IO를 이용해서 스무스하게 진행될 수 있게끔 했다. 컴파일은 sassc에 의존하며 이는 파이썬 pip를 이용해서 libsass를 설치하면 얻을 수 있다.

먼저 비동기 처리를 완료한 후 처리할 콜백함수와, 비동기로 컴파일 명령을 실행하는 두 함수를 작성한다.

function! CB_compile_scss(channel, msg)
    echom 'Compilation completed'
    echom a:msg
endfunction

function CompileSCSS()
    let cname = expand('%')
    let fname = expand('%<') . '.css'
    let command = 'sassc ' . cname . ' ' . fname
    echom 'start compile ' . cname
    job = job_start(command, {'callback': 'CB_compile_scss' })
endfunction

이 함수를 vimrc 등에 정의해놓고 다음과 같이 자동명령을 설정한다.

au! BufWritePost *.scss call CompileSCSS()

끝.

  • pignu

    안녕하세요! vim으로 scss자동 컴파일 검색하다가 찾아왔습니다!
    다름아 아니고 위에 올려주신대로 함수를 만들어서 돌려보는데
    E492: Not an editor command ~~~ 이런 애러가 뜨는데 혹시 해결법을 아시나요 ㅠㅠ?

    • job_start 가 문제가 되는 것 같은데, vim 버전을 확인해보세요. 이 방법은 8.0 이상 부터 적용 가능합니다.