Перекодировка в vim сделана через iconv, а он отличается тем, что не хочет перекодировать весь файл, если есть хоть один глючный по его мнению символ, не входящий в кодировку (типа псевдографики и т.д.). Так что все зависит от открывемого файла.
Попробуй для начала iconv -f=cp866 -t=koi8-r file.txt
Если ругнется и не перекодирует до конца -- это как раз такой случай.