Vimで定形文字列を挿入するスクリプトをPython3で書く

はじめに

こんにちは、野村です。

今回は、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使いの魔法の杖』(技術評論社)という本を手元に置いておくのもいいかも。僕も持ってます。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。