Hatena::Groupfizzbuzz

id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記

 | 

2016-12-18

Vim のマッピングとバッファを使って FizzBuzz

23:18 | はてなブックマーク - Vim のマッピングとバッファを使って FizzBuzz - id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記 Vim のマッピングとバッファを使って FizzBuzz - id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記 のブックマークコメント

https://gist.github.com/tyru/6e17ca16203f0e1a3a26c95e30c94e3c

"
" fizzbuzz-buffer.vim - FizzBuzz by mappings & buffer content
"
" Rules:
" * No <expr>
" * Of course no Vim script expressions in normal mode, too
"
" Mapping Flow:
" 1. doit
" 2. getchar:{numchar}
" 3. getchar{n % 3}{n % 5 == 0 ? 1 : 0}:{numchar}
" 4. Result
"   1. <SID>(result:fizz)
"   2. <SID>(result:buzz)
"   3. <SID>(result:fizzbuzz)
"   4. <SID>(result:number)
"

" nmap     <expr> doit join(map(range(1, 100), '"<SID>getchar:entry:".v:val."\<Esc>"'),'')
nmap doit <SID>getchar:1<Esc><SID>getchar:2<Esc><SID>getchar:3<Esc><SID>getchar:4<Esc><SID>getchar:5<Esc><SID>getchar:6<Esc><SID>getchar:7<Esc><SID>getchar:8<Esc><SID>getchar:9<Esc><SID>getchar:10<Esc><SID>getchar:11<Esc><SID>getchar:12<Esc><SID>getchar:13<Esc><SID>getchar:14<Esc><SID>getchar:15<Esc><SID>getchar:16<Esc><SID>getchar:17<Esc><SID>getchar:18<Esc><SID>getchar:19<Esc><SID>getchar:20<Esc><SID>getchar:21<Esc><SID>getchar:22<Esc><SID>getchar:23<Esc><SID>getchar:24<Esc><SID>getchar:25<Esc><SID>getchar:26<Esc><SID>getchar:27<Esc><SID>getchar:28<Esc><SID>getchar:29<Esc><SID>getchar:30<Esc><SID>getchar:31<Esc><SID>getchar:32<Esc><SID>getchar:33<Esc><SID>getchar:34<Esc><SID>getchar:35<Esc><SID>getchar:36<Esc><SID>getchar:37<Esc><SID>getchar:38<Esc><SID>getchar:39<Esc><SID>getchar:40<Esc><SID>getchar:41<Esc><SID>getchar:42<Esc><SID>getchar:43<Esc><SID>getchar:44<Esc><SID>getchar:45<Esc><SID>getchar:46<Esc><SID>getchar:47<Esc><SID>getchar:48<Esc><SID>getchar:49<Esc><SID>getchar:50<Esc><SID>getchar:51<Esc><SID>getchar:52<Esc><SID>getchar:53<Esc><SID>getchar:54<Esc><SID>getchar:55<Esc><SID>getchar:56<Esc><SID>getchar:57<Esc><SID>getchar:58<Esc><SID>getchar:59<Esc><SID>getchar:60<Esc><SID>getchar:61<Esc><SID>getchar:62<Esc><SID>getchar:63<Esc><SID>getchar:64<Esc><SID>getchar:65<Esc><SID>getchar:66<Esc><SID>getchar:67<Esc><SID>getchar:68<Esc><SID>getchar:69<Esc><SID>getchar:70<Esc><SID>getchar:71<Esc><SID>getchar:72<Esc><SID>getchar:73<Esc><SID>getchar:74<Esc><SID>getchar:75<Esc><SID>getchar:76<Esc><SID>getchar:77<Esc><SID>getchar:78<Esc><SID>getchar:79<Esc><SID>getchar:80<Esc><SID>getchar:81<Esc><SID>getchar:82<Esc><SID>getchar:83<Esc><SID>getchar:84<Esc><SID>getchar:85<Esc><SID>getchar:86<Esc><SID>getchar:87<Esc><SID>getchar:88<Esc><SID>getchar:89<Esc><SID>getchar:90<Esc><SID>getchar:91<Esc><SID>getchar:92<Esc><SID>getchar:93<Esc><SID>getchar:94<Esc><SID>getchar:95<Esc><SID>getchar:96<Esc><SID>getchar:97<Esc><SID>getchar:98<Esc><SID>getchar:99<Esc><SID>getchar:100<Esc>

nmap <SID>getchar: <SID>getchar00:

nmap <SID>getchar00:0 <SID>append:0<SID>getchar01:
nmap <SID>getchar00:1 <SID>append:1<SID>getchar10:
nmap <SID>getchar00:2 <SID>append:2<SID>getchar20:
nmap <SID>getchar00:3 <SID>append:3<SID>getchar00:
nmap <SID>getchar00:4 <SID>append:4<SID>getchar10:
nmap <SID>getchar00:5 <SID>append:5<SID>getchar21:
nmap <SID>getchar00:6 <SID>append:6<SID>getchar00:
nmap <SID>getchar00:7 <SID>append:7<SID>getchar10:
nmap <SID>getchar00:8 <SID>append:8<SID>getchar20:
nmap <SID>getchar00:9 <SID>append:9<SID>getchar00:
nmap <SID>getchar00:<Esc> <SID>(result:fizz)
nmap <SID>getchar01:0 <SID>append:0<SID>getchar01:
nmap <SID>getchar01:1 <SID>append:1<SID>getchar10:
nmap <SID>getchar01:2 <SID>append:2<SID>getchar20:
nmap <SID>getchar01:3 <SID>append:3<SID>getchar00:
nmap <SID>getchar01:4 <SID>append:4<SID>getchar10:
nmap <SID>getchar01:5 <SID>append:5<SID>getchar21:
nmap <SID>getchar01:6 <SID>append:6<SID>getchar00:
nmap <SID>getchar01:7 <SID>append:7<SID>getchar10:
nmap <SID>getchar01:8 <SID>append:8<SID>getchar20:
nmap <SID>getchar01:9 <SID>append:9<SID>getchar00:
nmap <SID>getchar01:<Esc> <SID>(result:fizzbuzz)
nmap <SID>getchar10:0 <SID>append:0<SID>getchar11:
nmap <SID>getchar10:1 <SID>append:1<SID>getchar20:
nmap <SID>getchar10:2 <SID>append:2<SID>getchar00:
nmap <SID>getchar10:3 <SID>append:3<SID>getchar10:
nmap <SID>getchar10:4 <SID>append:4<SID>getchar20:
nmap <SID>getchar10:5 <SID>append:5<SID>getchar01:
nmap <SID>getchar10:6 <SID>append:6<SID>getchar10:
nmap <SID>getchar10:7 <SID>append:7<SID>getchar20:
nmap <SID>getchar10:8 <SID>append:8<SID>getchar00:
nmap <SID>getchar10:9 <SID>append:9<SID>getchar10:
nmap <SID>getchar10:<Esc> <SID>(result:number)
nmap <SID>getchar11:0 <SID>append:0<SID>getchar11:
nmap <SID>getchar11:1 <SID>append:1<SID>getchar20:
nmap <SID>getchar11:2 <SID>append:2<SID>getchar00:
nmap <SID>getchar11:3 <SID>append:3<SID>getchar10:
nmap <SID>getchar11:4 <SID>append:4<SID>getchar20:
nmap <SID>getchar11:5 <SID>append:5<SID>getchar01:
nmap <SID>getchar11:6 <SID>append:6<SID>getchar10:
nmap <SID>getchar11:7 <SID>append:7<SID>getchar20:
nmap <SID>getchar11:8 <SID>append:8<SID>getchar00:
nmap <SID>getchar11:9 <SID>append:9<SID>getchar10:
nmap <SID>getchar11:<Esc> <SID>(result:buzz)
nmap <SID>getchar20:0 <SID>append:0<SID>getchar21:
nmap <SID>getchar20:1 <SID>append:1<SID>getchar00:
nmap <SID>getchar20:2 <SID>append:2<SID>getchar10:
nmap <SID>getchar20:3 <SID>append:3<SID>getchar20:
nmap <SID>getchar20:4 <SID>append:4<SID>getchar00:
nmap <SID>getchar20:5 <SID>append:5<SID>getchar11:
nmap <SID>getchar20:6 <SID>append:6<SID>getchar20:
nmap <SID>getchar20:7 <SID>append:7<SID>getchar00:
nmap <SID>getchar20:8 <SID>append:8<SID>getchar10:
nmap <SID>getchar20:9 <SID>append:9<SID>getchar20:
nmap <SID>getchar20:<Esc> <SID>(result:number)
nmap <SID>getchar21:0 <SID>append:0<SID>getchar21:
nmap <SID>getchar21:1 <SID>append:1<SID>getchar00:
nmap <SID>getchar21:2 <SID>append:2<SID>getchar10:
nmap <SID>getchar21:3 <SID>append:3<SID>getchar20:
nmap <SID>getchar21:4 <SID>append:4<SID>getchar00:
nmap <SID>getchar21:5 <SID>append:5<SID>getchar11:
nmap <SID>getchar21:6 <SID>append:6<SID>getchar20:
nmap <SID>getchar21:7 <SID>append:7<SID>getchar00:
nmap <SID>getchar21:8 <SID>append:8<SID>getchar10:
nmap <SID>getchar21:9 <SID>append:9<SID>getchar20:
nmap <SID>getchar21:<Esc> <SID>(result:buzz)

nnoremap <SID>append:0 a0<Esc>
nnoremap <SID>append:1 a1<Esc>
nnoremap <SID>append:2 a2<Esc>
nnoremap <SID>append:3 a3<Esc>
nnoremap <SID>append:4 a4<Esc>
nnoremap <SID>append:5 a5<Esc>
nnoremap <SID>append:6 a6<Esc>
nnoremap <SID>append:7 a7<Esc>
nnoremap <SID>append:8 a8<Esc>
nnoremap <SID>append:9 a9<Esc>

nnoremap <SID>(result:fizz) ccFizz<CR><Esc>
nnoremap <SID>(result:buzz) ccBuzz<CR><Esc>
nnoremap <SID>(result:fizzbuzz) ccFizzBuzz<CR><Esc>
nnoremap <SID>(result:number) o<Esc>
 |