対象
- vimが好き
- コンパイルが面倒
- シェルで作業してる人
概要
latexやsassなど主にコンパイルが面倒なものは自動コンパイルがそもそも実装されています。
latexであれば$ latexmk -pvc sample.tex
sassであれば$ sass --watch sample.scss:sample.css
しかし、毎回編集を行う前に打ち込むのは面倒。
今回はこの自動コンパイルの設定コマンドの打ち込み自体を自動化していきます。
vimでファイルタイプごとに設定を分ける。
vimには拡張子ごとに設定ファイルを分ける機能が標準装備されています。
filetypeを指定することによってそれが可能になります。
詳しく知りたい方は公式リファレンスをクリックしてみてください。
今回は拡張子がtexとscssのものを扱っています。
filetype plugin on
augroup fileTypeSet
autocmd!
autocmd BufNewFile,BufRead *.scss setfiletype scss
augroup END
letg:tex_flavor='latex'
vimのaugroup内でファイルを自動で開いた時の設定を記述することができます。上記のようにすると拡張子がscssの場合、filetypeとしてscssを読み込む。という意味になります。
またtexをfiletypeとして指定するとき一つ注意点があり、texは元々vimのグローバル変数の設定からfiletypeを振り分けることができるようになっています。
だから新しく追記する代わりに変数に代入してやります。
vimはruntimepathに設定しているファイルを読みに行くのでここはおとなしく標準で設定されている~/.vim/ftplugin以下に拡張子ごとの設定ファイルを置いていきます。
ftpluginはなければ自分で作成します。sassの例を加えるならば以下の二つを追加します。
- ~/.vim/ftplugin/scss.vim
- ~/.vim/ftplugin/tex.vim
設定を記述する
vimではコマンドラインモードで:!を用いることによってシェルのコマンドを実行することができます。ファイル保存時にlatexをオートでコンパイルするようにしました。%:pには編集ファイルのフルパスが入ります。
autocmd BufWritePost * :!latexmk %:p
これはこれで動いたのですがここで僕はそもそも実装されている自動コンパイルの存在を知ります。ちくしょう、世界はもっと便利だったのか。。。
最終的な着地点
vimrcに以下を記述することで編集開始時にオートコンパイル設定を行えるようにしました。
filetype plugin on
augroup setAutoCompile
autocmd!
autocmd BufNewFile *.tex :!latexmk -pvc %:p
augroup END
またひとつvimrcが強くなりました。