読者です 読者をやめる 読者になる 読者になる

しまてく

学んだ技術を書きためるブログ

VimM#2に行ってきたよ

神降臨と聞いて

今回のメンバーにはなんと@kana1が参加していました\(^0^)/

加えて@ujmも参加していてとてもVim濃度が濃かったです。

神によるVimプラグイン書き方講座

プラグイン初心者の僕もすんなり書けました!


今日書いたプラグインはこんな感じ↓
Hello World!するだけなんだから///

"vimm.vim
"see :help user_functions

"ここでリロード防止をすると「:so vimm.vim」で読み込めない
if exists('g:loaded_vimm')
    finish
endif
let g:loaded_vimm = 1

let s:cpoptions = &cpoptions
set cpoptions&vim


function! Hello(...)
    if a:0 == 0
        echo "Hello World"
    else
        echo "Hello" a:1
    endif
endfunction

":Exコマンドを作る
":Hello
" -nargs=+ 引数必要
" -nargs=* 引数省略可
" <args> 引数がそのまま展開される
" -bang・<bang> [!]が展開される
command! -bang -nargs=+ Hello  call Hello(<q-args> . '<bang>')
" :Hello ujihisa ==> Hello ujihisa

"マッピング
"<Leader>h       do hello world
nnoremap <Plug>h :<c-u>call Hello()<Return>
nmap <Leader>h <Plug>Hello


augroup AutocmdVimm
    autocmd!
    autocmd BufEnter *.vim call Hello()
    autocmd BufEnter * call Hello()
augroup end

"今回あつかわなかったところ
"変数のスコープとかfiletypeplugin syntax indent
"多言語の組み込み(:help python)

"まとめ
"問題はUIとキーマップぐらい

let &cpoptions = s:cpoptions

" __END__


本当にHelloWorldだけですw
でも夢が広がるなぁ、楽しい楽しいっ



さてこれからVimRubyのプログラム書いてVimプラグインから
呼んでみるってのをやろうかな。