Para que o mesmo parágrafo apareça igual em outras ferramentas, definimos as regras da tecla Enter
Você já pressionou Enter uma vez em um editor Markdown e a tela desceu duas linhas, ou viu parágrafos que estavam separados na tela se juntarem em um só bloco no GitHub? Essas são duas faces da mesma questão.

O que deveria acontecer quando você pressiona Enter em um editor Markdown?
Na tela, deveria descer apenas uma linha. Mas, no arquivo, são necessárias duas quebras de linha para separar os parágrafos. Essa diferença aparentemente simples determina a natureza do editor.
O mote optou por uma maneira de escrever parágrafos naturalmente sem deixar de preservar o arquivo exatamente como ele é.
Ao pressionar uma vez, você desce uma linha
No mote, Enter cria um novo parágrafo.
Na tela, você desce uma linha, e duas quebras de linha são inseridas no arquivo. Se já houver uma quebra de linha ao lado do cursor, ela conta como metade da separação. Assim, independentemente do que estiver ao redor, pressionar uma vez sempre resulta em uma linha.
Se quiser apenas mudar de linha dentro do mesmo parágrafo, pressione Shift+Enter. Uma única quebra de linha é inserida no arquivo, e a linha seguinte permanece no mesmo bloco. Isso é útil quando é necessário escrever linhas juntas, como em endereços ou poemas.
A linha vazia entre os parágrafos não aparece separadamente na tela. Isso acontece porque ela é o separador que divide os parágrafos. O cursor também não permanece sobre ela. Ao pressionar Backspace, a separação entre os parágrafos desaparece de uma só vez.
A cada entrada, a tela também se move uma linha por vez.
O arquivo também permanece como um verdadeiro Markdown
O Markdown separa parágrafos com duas quebras de linha.
Tratar uma única quebra de linha como um parágrafo causa problemas. Em arquivos criados por outras pessoas, o espaçamento entre os parágrafos dobra, e os arquivos criados no mote aparecem como um único parágrafo no GitHub ou no Pandoc.
Para lidar com esse modelo, o Typora normaliza o arquivo ao salvá-lo. Por exemplo, reduz três linhas vazias a uma só. O mote não corrige o arquivo em seu lugar. Isso ocorre porque seu princípio é não adicionar nem excluir bytes que o usuário não escreveu.
Em vez disso, estabelecemos mais uma regra.
Não criamos linhas que existam no arquivo, mas que não possam ser vistas nem editadas. Ocultamos apenas a única linha vazia que separa os parágrafos e mostramos todas as demais na tela.
Até as linhas vazias precisavam de regras
No início, considerávamos apenas a primeira de uma sequência de linhas vazias como separador de parágrafos.
Então algo estranho começou a acontecer. Ao escrever em uma linha vazia, o texto se juntava ao parágrafo abaixo, e era necessário pressionar Enter mais uma vez para criar um novo parágrafo. Depois de apagar um parágrafo, às vezes também restava uma linha vazia.
Havia uma única causa. A separação entre parágrafos é formada por um par de duas quebras de linha, mas apenas uma delas estava sendo contada como separador.
Agora, dentro de uma sequência de linhas vazias, separadores e parágrafos vazios aparecem alternadamente. Três linhas vazias no arquivo se tornam uma linha vazia na tela. Como um parágrafo vazio também ocupa uma linha, ele precisa de separadores dos dois lados.
Também deixamos claro quando o Enter reutiliza as quebras de linha ao redor. Ele reutiliza apenas a quebra de linha que conecta duas linhas do mesmo parágrafo. Uma quebra de linha que já esteja sendo usada para separar parágrafos não é reutilizada.
O Backspace segue o mesmo princípio. Ao apagar um parágrafo vazio, essa linha e os separadores ao redor desaparecem juntos. Ao pressioná-lo uma vez, apenas uma linha é removida.
Esse comportamento é verificado tanto na tela quanto no arquivo. No mesmo teste, verificamos não apenas a altura das linhas na tela, mas também os bytes realmente armazenados no arquivo.
No modo de código-fonte, o arquivo é mostrado exatamente como é
As regras de parágrafo se aplicam apenas aos modos ao vivo e de leitura.
No modo de código-fonte, cada linha ocupa uma linha na tela. As linhas vazias também aparecem exatamente como são, e o cursor pode ir a qualquer lugar. Ao pressionar Enter, apenas uma quebra de linha é inserida.

Se acrescentamos uma interpretação à tela, também deve haver um lugar onde seja possível remover essa interpretação e ver o original. É por isso que o modo de código-fonte também é necessário ao trabalhar com tabelas ou blocos de código.
Mostrar tudo exatamente como é também traz limitações
Se o arquivo terminar com uma quebra de linha, uma linha vazia aparecerá no final.
A última quebra de linha não é um separador entre dois blocos. É um lugar onde o próximo caractere pode ser digitado. Por isso, não a ocultamos.
Documentos separados por uma única quebra de linha em versões antigas do mote agora aparecem como um só parágrafo. Esse é o resultado que segue as regras do Markdown. Para separar os parágrafos, basta pressionar Enter mais uma vez no local correspondente. O mote não corrige o arquivo às escondidas.
Um parágrafo não existe apenas na tela nem apenas no arquivo. O mote foi criado para que a escrita seja natural na tela e permaneça como um verdadeiro Markdown no arquivo.