Ok, descobri como posso fazer isso com a ajuda de Gary Johnson nos Grupos do Google vim_use group. Ele ajudou a dizer como executar os comandos tput
do vim. Aqui está minha solução final:
-
Tenha o seguinte script de função na memória vim:
function! ShowTerm() call system(">/dev/tty tput rmcup") call input("") call system(">/dev/tty tput smcup") redraw! endfunction
-
Mapeie o script para uma sequência de teclas de comando como esta:
map [= :call ShowTerm()<CR>
Eu usei a sequência [=
, mas você pode usar o que quiser.
Agora digite a sequência de teclas e você verá a outra tela. Pressione Enter e você está de volta à tela do vim. O Enter não adiciona um avanço de linha à tela do terminal, então não há linhas de marcha.
Nice! :) Note que provavelmente não é assim que foi feito 15-20 anos atrás, mas funciona.
EDITAR
Para não depender de tput
estar disponível, descobri que o @MarkPlotnick inferiu os trabalhos da mesma maneira. Basta substituir a função ShowTerm()
acima por:
function! ShowTerm()
silent !read -sN 1
redraw!
endfunction
Isso depende do bash
sendo usado como o shell (ou outros que possuem uma chamada de leitura semelhante).
2ª edição
Além disso, você pode automatizá-lo colocando um arquivo .vim
em sua pasta ~ / .vim / plugins que contém o seguinte:
" Function that allows viewing command line display last time it was seen.
" Note: Will only work on terminals that allow saving/restoring the display.
function! ShowTerm()
" This will invoke the command shell and call the read function.
" Will exit when a key is pressed. This is specific to bash and
" and may have to be changed if using a different shell.
silent !read -sN 1
redraw!
endfunction
" Maps [= sequence to view command line display last time it was seen.
map [= :call ShowTerm()<CR>