Em vez do desvio através do registrador, você provavelmente também pode usar feedkeys()
para isso, para evitar que o registro seja danificado. Isso tem apenas a desvantagem de não funcionar quando gravado e reproduzido como uma macro.
Em geral, recomendo repensar sua abordagem geral; Eu não vejo como é útil trocar os modos de linha de comando assim. Quem inicia uma busca apenas para perceber no meio do caminho que ele quer que seja executado como um comando?!