vim pluginの作り方
やっぱなんでも最初はhello worldから入りますよね。 というわけで以下の記事を参考にはじめてvim pluginを作りたいと思います!
ソースコード
pluginは以下に置いてあります。 zを押すとHello World!と表示されるプラグインです。
https://github.com/aoi1/helloworld-vim
解説
ディレクトリ構成
ファイルとディレクトリ構成は以下のようになっています
helloworld-vim
├── README.md
├── autoload
│ └── helloworld.vim
└── plugin
└── helloworld.vim
起動をなるべく早くする、余計な関数は読み込まないというお作法にのっとりディレクトリを2つにわけています。
このようにプラグイン実行時に呼び出される関数はautoloadに出します。
READMEを書くのもお作法のようです。今回ちゃんと書いてないですが…
vimスクリプト
plugin/helloworld.vim
" hello world for vim plugin
" Version: 0.1
scriptencoding utf-8←お作法:エンコーディングを指定する
if exists('g:loaded_helloworld')←あまりよくわかってない。多分helloworldがloadされていたら何もしないってことかな
finish
endif
let g:loaded_helloworld = 1
" ユーザー設定を一時退避←お作法:ユーザー設定が悪影響を及ぼさないよう一時退避
let s:save_cpo = &cpo
set cpo&vim
:nmap z :call helloworld#helloworld()<CR>←実際のプラグインの関数呼び出し
" ユーザー設定を元に戻す←お作法
let &cpo = s:save_cpo
unlet s:save_cpo
autoload/helloworld.vim
scriptencoding utf-8
if !exists('g:loaded_helloworld')←helloworldが読み込まれていなかったら何もしない?
finish
endif
let g:loaded_helloworld = 1
" ユーザー設定を一時退避←お作法
let s:save_cpo = &cpo
set cpo&vim
function! helloworld#helloworld()←functionのビックリマークがわからない。ファイル名#関数名で呼び出し
echo "Hello World!"
endfunction
" ユーザー設定を元に戻す←お作法
let &cpo = s:save_cpo
unlet s:save_cpo
コメントにある通りまだよくわかっていないところもあって 勉強不足ではありますが、これで動きました!!!やったね!!!!!!!
自分がネットにあげたプラグインが自分の環境で動くのってなんだかすごく感動しますね。 これを機にもうちょっと実用的なプラグイン作って見たいです!!!
簡単なプラグインではありましたが、プラグインに対する考えが変わりました!
←プラグインを作る前のイメージ プラグインを作った後のイメージ→

余談
とある日
