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

ソース置いときたかったけど、はてなってファイルアップロードできんの?Σ(゜ロ゜;)!!