Lingr の Vim 部屋で次のようなコードが投げられました。 http://lingr.com/room/vim/archives/2013/12/22#message-17893985 let g:queue = range(9) command! WHILE while !empty(g:queue) command! END endwhile " echo g:queue WHILE echo remove(g:queue, 0) END このコードがエラーになるのは Vim script が行単位で読み込まれるためです。 つまり WHILE が読み込まれて while !empty(g:queue) が実行された時にまだ END は読み込まれておらず endwhile が見つからなくてエラーになります。 なので while 1 echo "homu" execute "endw