Só porque você correu
vi demo.c
não significa que o arquivo demo.c
foi criado. Não é criado até que você escreva o buffer no disco pela primeira vez.
Basta escrever o buffer no disco antes de compilar:
:w
Isso é confirmado pela mensagem [No write since last change]
que você vê. Esta mensagem significa que o buffer foi alterado (em que você criou o buffer chamado demo.c
), mas não foi gravado no disco após modificações.