はじめに
- Vimのことをもっと知りたいと思い、PythonでVim Pluginを書いてみた(Neovim使ってるけど...)
- 人生初のVim Plugin
作ったもの
- これ https://github.com/shase/passgen.vim
- 指定桁のパスワードを生成して、vimのbufferにinsertしてるだけ
ディレクトリ、ファイル
.
├── autoload
│ └── passgen.vim
├── plugin
│ └── passgen.vim
└── python3
└── passgen.py
- Pluginとして動かすだけなら、最低限3つのファイルがあれば良さそう
- もちろんテストもあったほうがよい
- 公開するのであれば、更にdocやREADMEやLICENCEも合ったほうが良い
作成の流れ
まずmainの処理を普通のPythonとして書く
python3/passgen.py
importsecretsimportstringdefpassgenvim_generate_password(size=''):chars=string.ascii_letters+string.digitsreturn''.join(secrets.choice(chars)forxinrange(int(size)))
Pythonを呼び出すVimscriptをautoload配下に書く
autoload/passgen.vim
lets:save_cpo=&cpo
set cpo&vim
py3file <sfile>:h:h/python3/passgen.pypython3 import vimfunction! passgen#passgen(size)python3vim.command("call setline('.', '%s')" % passgenvim_generate_password(vim.eval('a:size')))endfunctionlet&cpo =s:save_cpo
unlet s:save_cpo
autoloadに書いた関数を、コマンドから呼び出す
plugin/passgen.vim
lets:save_cpo=&cpo
set cpo&vim
command!-nargs=1 PASSGEN call passgen#passgen(<f-args>)let&cpo =s:save_cpo
unlet s:save_cpo
こんな感じでOK