Primeiro, as configurações t_ti
e t_te
parecem boas.
Mas, para verificar o que é óbvio (desculpe) ...
Quando você diz ^[
, este deve ser um único caracter de controle (Escape),
não dois caracteres ( ^
e [
). Não sei como verificar isso especificamente
de dentro do vim, mas no meu vim com :set t_ti?
mostra o ^[
em uma cor diferente, o que sugere que é
um caractere de controle.
Além disso, você não mencionou qual emulador de terminal e plataforma está sendo executado.
Pode ter um impacto e você deve colocá-lo em sua pergunta, junto com
versões do vim e tmux. No entanto, se você está dizendo que você já pode
demonstrar os dois tipos de comportamento (desejado e indesejado) no mesmo problema
terminal usando o comando less
( sem e com -X
, respectivamente), então
isso sugeriria que suas configurações de emulador de terminal e tmux estão corretas,
e minha suspeita vai para o vim.
Confirme isto da seguinte maneira (lembre-se que ^[
deve ser inserido como um controle
caractere, e. Ctrl-v
seguido por Escape
):
less /etc/hosts # should use alternate screen (desired)
less -X /etc/hosts # should leave it's output on screen (undesired)
echo -n "^[[?1049h"; less -X /etc/hosts; echo -n "^[[?1049l"
# should use alternate screen (desired)
Se esse último comando der o comportamento desejado com menos. Tente a mesma abordagem com o vim:
echo -n "^[[?1049h"; vim /etc/hosts; echo -n "^[[?1049l"
# should use alternate screen (desired)
Depois de sair do vim, a tela deve ser restaurada para o conteúdo anterior (seu comportamento desejado). Se assim for, então você poderia usar isso para montar um solução muito cludenta com um alias ou um script de wrapper. Mas se você chegar a esta fase em seu diagnóstico, é quase certamente um problema com o vim ou parte de sua configuração não enviando o t_te sequência que sai, e eu começaria movendo meu .vimrc e .vim para fora do caminho e testando com uma configuração limpa:
cd
mv .vimrc .vimrc-safe
mv .vim .vim-safe
Então é o tempo de corte binário, que deve ser divertido. :-) Espero que isso ajude.