Isso é possível com a configuração virtualedit . Experimente, por exemplo
:set virtualedit=onemore e leia mais em :h 'virtualedit'
Note que isso pode quebrar plugins ou outros cantos menos testados no Vim.
Se você também quiser que x exclua a nova linha final nesse modo, talvez seja possível mapear x para fazer algo mais inteligente, por exemplo,
:nnoremap <expr> x col('$')==col('.')?'gJ':'x'
Isso basicamente mapeia x para uma expressão, que verifica se o cursor está no último caractere (a nova linha) da linha e, se estiver, ele será mapeado para o comando gJ . x será executado.
(Nota: não totalmente testado, pode haver alguns casos de borda)