Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Dockerfile の INSTRUCTION を自動で大文字で入力する

$
0
0

この記事は Akatsuki Advent Calendar 2016の 2 日目、および Vim Advent Calendar 2016 (その2)の 2 日目、および Docker2 Advent Calendar 2016の 2 日目の記事です。

Dockerfile 書いてますか? 私はいつも Vim で書いています。

さて、Dockerfile の INSTRUCTION、いわゆる FROMとか RUNとかのアレですが、大文字小文字は区別しないとしつつも、大文字で書くことが推奨されています。

https://docs.docker.com/engine/reference/builder/#/format

The instruction is not case-sensitive. However, convention is for them to be UPPERCASE to distinguish them from arguments more easily.

しかし、毎回大文字で入力するのは面倒ですね。というわけで自動で大文字になるような設定をします。

自動で大文字にする設定

最新の Vim (少なくとも Vim 8.0 以降) では、Dockerfileは自動で filetype dockefile として認識されます。そこで、dockerfile 向けの ftplugin の設定を作りました。

以下のファイルを、Vim の runtimepath 以下に置きます。Windows の場合は ~/vimfiles/ftplugin/dockerfile.vim、それ以外の環境の場合は ~/.vim/ftplugin/dockerfile.vimです。

ftplugin/dockerfile.vim
function!s:head(str)letcol=col('.')let head = matchstr(getline('.'),'\c^\s*\%(ONBUILD\s\+\)\?')letcol-= len(head)ifcol-2< len(a:str)return toupper(a:str)endifreturna:str
endfunctionfors:instruction in [
\   'from',
\   'maintainer',
\   'run',
\   'cmd',
\   'label',
\   'expose',
\   'env',
\   'add',
\   'copy',
\   'entrypoint',
\   'volume',
\   'user',
\   'workdir',
\   'arg',
\   'onbuild',
\   'stopsignal',
\   'arg',
\   'healthcheck',
\   'shell',
\ ]
  execute 'inoreabbrev <buffer> <expr>'
  \ s:instruction
  \ printf('<SID>head(%s)', string(s:instruction))endfor

Vim には短縮入力(:help abbreviations)という機能があり、一定のルール内で入力を矯正する設定を作ることができます。
この設定では、各行の行頭で入力したものが小文字の INSTRUCTION だった場合に、それを自動で大文字にしています。ついでに ONBUILDの後の INSTRUCTION にも対応しています。

dockerfile.gif

Happy Vim and Docker Life!


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>