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でのプログラム作成が快適になりそうです。
それではまた。
TomoProg