Vim で、mpl::string を使いやすくしてみる
mpl::string は、4文字ごとに分割しないとダメなので、コードを書くのがめんどくさかったりします。
// 4文字数えるのなんてめんどくさいよ!! mpl::string<'yaki','niku','tabe','taiJ','P'> yakinikutabetaiJP;
こんな時は、Vim Script でやっちゃいましょう!って事で書いてみました。
Vim Script の内容はお察し下さい。
[_vimrc]
" mpl::string を4文字ごとに分割 " コマンドの呼び出し順がアレでアレです。 nnoremap <silent> <Space>s :BoostMPLStringSlice1<CR>:BoostMPLStringSlice2<CR> " di' の後に getreg("*") で、削除した文字列を取得したかったので変な書き方に…… command! \ -nargs=* BoostMPLStringSlice1 \ execute "normal! di'" command! \ -nargs=* BoostMPLStringSlice2 \ execute "normal! i".s:slice(getreg("*")) function! s:slice(str) let l:result = strpart(a:str,0,4) let l:tmp = strpart(a:str, 4) while strlen(l:tmp) != 0 let l:result = l:result."','".strpart(l:tmp, 0, 4) let l:tmp = strpart(l:tmp, 4) endwhile return l:result endfunction " mpl::string の表記を見やすくする " set conceallevel=2 で、余計な、',' を消す syntax match mpl_string /'\s*,\s*'\ze.*'\s*>/ transparent conceal
[使い方]
- mpl::string<'yakinikutabetaiJP'> と分割しないで書く
- ' 内にカーソルを合わせる
- mpl::string<'{ここ}'>
s で文字列を分割- mpl::string<'yaki','niku','tabe','taiJ','P'> に変換される!!
あんまりテストしてないけど多分動くはず。
ものすごい遠回りでめんどくさいことをやってるけど、これ以上思いつかなかった……。
ん、文字の結合?知りませぬー。
しかし、normal モードのコマンドと Vim Script の連携難しい(気がする。
Vim Script は書くの大変だけど、便利だなー。
ああ、楽がしたいです。
[おまけ]
set conceallevel=2
で、mpl::string の表記を見やすくする。