vscodeのPythonスニペットを管理するCLIです。
- mac(現状はmacのみ対応です。)
- python3.6~(3.6未満でも動作するかもしれませんが、確認していません。)
このライブラリは、vscodeのスニペット設定ファイル(python.json
)を書き換えます。必要であれば事前にバックアップをとっておいてください。
macの場合、下記ディレクトリ配下にスニペット設定ファイルが配置されています。
~/Library/Application Support/Code/User/snippets/
- 任意の関数、クラスをスニペットとして登録することができます。
- 関数、クラスにデコレータを記述するだけでスニペットとして抽出します。デコレータを付与するだけなので、関数、クラスのユニットテストが通常通り実行できます。
- スニペット管理用ファイルを用意してコマンドを実行するだけで、エディターのスニペット設定を更新できるので、直接スニペット設定ファイルを編集しなくてすみます。
ここでは、スニペット管理プロジェクトをpipenvを用いて構築する例を示します。
プロジェクト用ディレクトリ作成後、本ライブラリをインストールします。
# スニペット管理用ディレクトリを作成
$ mkdir python-snippet
$ cd python-snippet
# python3.6でプロジェクト作成
$ pipenv --python 3.6
# pysnitのインストール
$ pipenv install git+https://github.com/kenchalros/PySniT.git#egg=pysnit
# 仮想環境に入る
$ pipenv shell
スニペットに登録したい関数またはクラスを用意します。
ここではsample.py
という名前でファイルを作成し、関数を定義します。
また、pysnitからsnippetモジュールをインポートし、スニペットに登録したい関数をデコレートします。
snippet
デコレータには、name
、prefix
、description
を指定することができます。ここではprefix
のみを指定しています。
# sample.py
from pysnit import snippet
@snippet(prefix='hw')
def hello_world():
print('hello world')
snippet管理用ファイルを作成します。
snippet.toml
というファイル(デフォルトでこの名前の設定ファイルを読み込みこんで設定します)を作成し、登録したい関数、クラスが含まれたファイルへのパスを記述します。その際、セクションの名前は[module]
である必要があるので注意してください。
なお、インライン形式のスニペットを直接記述することもできます。セクションの名前は[module]
以外であれば何でもOKで、そのままスニペットの名前として登録されます。
[module]
sample = './sample.py'
# 他にもモジュールがある場合はこのセクション内に続けて記述する
[print_var]
prefix = "printv"
body = """
print('$1: {}'.format($1))
$0"""
[if_main]
prefix = "ifmain"
body = """
def main():
$0
if __name__ == '__main__':
main()
"""
現状のプロジェクトディレクトリは下記のようになっています。
python-snippet/
- sample.py
- snippet.toml
snippet.toml
ファイルの準備ができたら、pysnit snpt
コマンドを実行します。
デフォルトでは、カレントディレクトリにあるsnippet.toml
ファイルを読み込むようになっています。今回はプロジェクトのルートでコマンドを実行してください。
$ pysnit snpt
...
特に問題がなければスニペットが登録されているはずです!