【一人 vimrc advent calendar 2017】filetype 名を簡略化する【11日目】

一人 vimrc advent calendar 2017 11日目の記事になります。
今回は頻繁に手入力するコマンドを簡略化するというお話です。

Vimfiletype を設定する

Vim で雑なコードを書く場合に無名バッファを使うことがあります。
そういう場合は新しいバッファを開いて

:set filetype=javascript

コマンドラインで入力することが多いんですが、毎回 javascript と手打ちするのは手間ですね。
このような場合、簡略化する手段はいくつかあるんですが、今回は autocmd を利用して filetype 名を短くしてみようと思います。

autocmd FileType を利用する

autocmd FileType を利用することで任意の filetype に処理をフックする事ができます。
ですので『簡略化した名前』の filetype 名をフックすることで次のように filetype を設定することができます。

augroup vimrc
    autocmd!
   " set filetype=xxx した場合に任意の filetype を設定する
    autocmd FileType js set filetype=javascript
    autocmd FileType md  set filetype=markdown
    autocmd FileType py set filetype=python
augroup END

上記のようなスクリプトを記述することで、
1. :set filetype=md する
2. autocmd FileType md が呼ばれる
3. autocmd 内で set filetype=markdown が呼ばれる
4. 最終的に filetype=markdown になる

というような流れになります。
また、set filetype=xxxset ft=xxx と短く書くことができるので、最終的には

:set ft=js

みたいに書くことができます。
これでだいぶ短くなりましたね。
ちなみに 'filetype' は標準でバッファローカルなので :setlocal する必要はありません。

まとめ

  • autocmd FileType で任意の filetype=xxx に処理をフック出来る
  • 手入力するのが手間な場合はスクリプトで簡略化する
  • set ft=xxx すら手間な場合は Ex コマンドを定義してしまうのもあり


このような場合に簡略化する手段はいくつかあるんですが、いずれにしろ『手間』というのはどんどんなくしていくとよいですね。