Key mappingの罠
';'と':'の位置を入れ替えようと以下の記述を.vimrcに追加した。
" ';'と':'の位置を入れ替え noremap ; : noremap : ;
そうしたら、sokoban.vimでユニットの移動操作ができなくなったわ。
sokoban.vim
http://www.vim.org/scripts/script.php?script_id=211
586-598行目までが:mapコマンドで定義されているのが原因のよう。
':'が';'にremapされちゃってるっぽい。
ためしに':call'の箇所を';call'に変更したところ、ユニットの移動操作ができた。
ただ、nnoremapに変更するのが正しい修正と思われる(。・_・)ノ
http://whileimautomaton.net/2008/07/diary#d20-150335
function! <SID>SetupMaps() nnoremap <buffer> h :call <SID>MoveLeft()<CR> nnoremap <buffer> <Left> :call <SID>MoveLeft()<CR> nnoremap <buffer> j :call <SID>MoveDown()<CR> nnoremap <buffer> <Down> :call <SID>MoveDown()<CR> nnoremap <buffer> k :call <SID>MoveUp()<CR> nnoremap <buffer> <Up> :call <SID>MoveUp()<CR> nnoremap <buffer> l :call <SID>MoveRight()<CR> nnoremap <buffer> <Right> :call <SID>MoveRight()<CR> nnoremap <buffer> u :call <SID>UndoMove()<CR> nnoremap <buffer> r :call Sokoban("", b:level)<CR> nnoremap <buffer> n :call Sokoban("", b:level + 1)<CR> nnoremap <buffer> p :call Sokoban("", b:level - 1)<CR> endfunction
あと:setでmodifiableとか操作しているせいで、別のbufferを開くと変更不可にされてしまうので
スクリプト中の全:setコマンドをすべてsetlに変更したほうがいい。
setl modifiable setl nomodifiable
ついでに、Sokoban起動時の処理に以下も追加
setl tabstop=8 setl nolist
ソース置いときたかったけど、はてなってファイルアップロードできんの?Σ(゜ロ゜;)!!