TomoProgの技術書

底辺プログラマーが達人プログラマーになるまで

Vimに自作コマンドを組み込んでみた

皆さん
こんにちは、こんばんは
TomoProgです。

今回は私がPythonのプログラムを書き始めるときに、ほぼ毎回書くコードをVimコマンドで自動入力できるようにしてみました。

それでは頑張っていきましょう。

毎回同じことを書くのは面倒くさい

私がPythonのプログラムを書いているとほぼ毎回書くコードがあります。
それがコチラ

#-*- coding:utf-8 -*-

def main():

if __name__ == "__main__":
    main()

コマンドラインから実行した際に、main関数からプログラムがスタートするように、このコードをほとんどのPythonプログラムで書きます。

1度や2度書くくらいなら何とも思わない量なのですが、Pythonプログラムを作るたびに、毎回毎回書くのは面倒です。

というわけで、この6行をVimのコマンドで入力できるようにしてみます!!

自作コマンドをVimScriptで作成する

Vimで自作コマンドを作る場合はVimScriptというVim専用のスクリプトを使用します。
他のプログラム言語を触ったことがある人は割りと簡単に習得出来そうです。

それでは早速、VimScriptで自作コマンドを作っていきます。

私が作成したコマンドがコチラ

:command! -nargs=1 PyTemplate call PyTemplateFunc(<f-args>)

function PyTemplateFunc(template)
    if a:template == "main"
        :r ~/.vim/mycmd/py_template/main.py
    elseif a:template == "docstr" || a:template == "ds"
        :r ~/.vim/mycmd/py_template/docstr.py
    else
        echo("Nothing Python Template.")
    endif
endfunction

1行目の:commandで始まる行がコマンドを定義している部分です。
今回はPyTemplateという名前でコマンドを定義しました。
コマンドを実行すると、PyTemplateFunc関数が呼び出されるようになっています。

PyTemplateFunc関数の中身を見てみましょう。
templateの中身(PyTemplateコマンドに渡した引数)がmainであれば、main.pyを読み込むようになっています。
ついでにドキュメンテーション文字列のサンプルもコマンドで入力できるようにdocstrの場合はdocstr.pyを読み込みます。

main.pyとdocstr.pyの中身は以下の通りです。

# main.py
#-*- coding:utf-8 -*-

def main():

if __name__ == "__main__":
    main()
# docstr.py
""" This is a documentation string sample

Please Write Desciption

How To Use:
    import sample
    help(sample)
"""

.vimrcにコマンドを登録する

自作コマンドが完成したので、Vimから呼び出せるように.vimrcを編集します。
:sourceの後に作成したVimコマンドファイルのパスを指定します。

:source ~/.vim/mycmd/py_template/py_template.vim

実際にやってみる

登録も出来たので、実際にVimコマンドラインモードで自作コマンドを実行します。

:PyTemplate main

ドキュメンテーション文字列のサンプルを入力する場合は

:PyTemplate docstr
もしくは
:PyTemplate ds

両方実行してみた結果がコチラ

実行結果:
#-*- coding:utf-8 -*-

""" This is a documentation string sample

Please Write Desciption

How To Use:
    import sample
    help(sample)
"""

def main():

if __name__ == "__main__":
    main()

どちらも入力することが出来ました!!

今日の成果

  • Vimの自作コマンドを作成できた!!
  • Pythonプログラムの毎回書く部分を自動化できた!!

今回はVimの自作コマンドを作って、毎回の作業を効率よくしてみました。
これから少しだけPythonでのプログラム作成が快適になりそうです。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter