はじめに
こんにちは、野村です。
今回は、Vimで定形文字列を挿入するスクリプトをPython3で書いてみます。
いろいろ応用ができるのですが、基本は文字列挿入。ではないでしょうか?
スクリプト
デレクトリ「~/.vim/plugin/」内にファイル「ZZZ.vim」を作成しました。
内容は以下の通り。
function! ZZZ#html() python3 << EOF import vim import re htm = '''<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <title>TITLE</title> </head> <body> </body> </html> ''' line = int(vim.eval("line('.')")) ht = re.split(r'\n',htm) for i,h in enumerate(ht): vim.current.buffer.append(h, line+i-1) EOF endfunction function! ZZZ#css() python3 << EOF import vim import re htm = '''* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } .cf:after { content: ""; clear: both; display: block; } body{ font-family:"ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, sans-serif; } ''' line = int(vim.eval("line('.')")) ht = re.split(r'\n',htm) for i,h in enumerate(ht): vim.current.buffer.append(h, line+i-1) EOF endfunction
使い方
コマンドモードに入って「:call ZZZ#html()」もしくは「:call ZZZ#css()」と入力してEnter。
解説
基本はこんな感じです。
function! ZZZ#YYY() python3 << EOF import vim import re tmpl = ''' ここに 文書のテンプレートを 書き込む ''' line = int(vim.eval("line('.')")) ht = re.split(r'\n',tmpl) for i,h in enumerate(ht): vim.current.buffer.append(h, line+i-1) EOF endfunction
・ZZZの部分はファイル名に合わせる。
・複数のファンクションを設定する場合は、#YYYの部分が必要。
終わりに
以上、Vimで定形文字列を挿入するスクリプトをPython3で書く方法を紹介しました。
本来はVimScriptという言語で書くものだけど、新たにVimScriptを習得するのが手間であればPython3で書くのがてっとり早いです。
とはいえ、PythonだけではVimを制御できません。
一応、『Vim script テクニックバイブル ~Vim使いの魔法の杖』(技術評論社)という本を手元に置いておくのもいいかも。僕も持ってます。
というわけで、今回はこれにて。