종료 후 vim 화면 버퍼를 이전 bash 활동으로 바꾸는 방법은 무엇입니까?

종료 후 vim 화면 버퍼를 이전 bash 활동으로 바꾸는 방법은 무엇입니까?

bash(또는 vim) 기능이 무엇인지 알아보려고 합니다. 시나리오는 다음과 같습니다. 저는 bash 터미널에 있고 vim으로 무언가를 편집한 다음 bash로 다시 종료합니다. 일부 터미널에서는 이전 bash 셸 활동을 표시하기 위해 vim 세션 화면이 사라집니다(이것이 내가 원하는 것입니까?).

다른 경우에는 vim 세션 화면 버퍼가 그대로 유지됩니다(이전 bash 셸 활동 숨김). 화면을 지우거나 bash 활동이 해당 vim 세션 버퍼를 화면 밖으로 밀어낼 때까지 기다려야 합니다.

vim 세션 버퍼를 이전 bash 활동으로 대체하기 위해 이 동작을 어떻게 제어할 수 있습니까?

감사합니다 팀

답변1

Vim은 세션이 시작될 때 와 끝날 때 터미널에 t_tiand 를 보냅니다 . 및 시퀀스 를 사용하면 터미널이 대체 화면으로 전환됩니다.t_kst_tet_ket_tit_te

파일 에 다음 줄을 포함하면 문서가 종료될 때 화면에 문서를 그대로 ~/.vimrc둘 수 있습니다 .vim

set t_ti=""

이와 유사한 줄이 있는 경우 이를 제거하면 종료할 때 이전 터미널 내용이 나타나게 됩니다 vim.

답변2

~/.bash_profile로그인할 때마다 TERM을 xterm으로 내보내려면 파일 에 한 줄을 추가하기만 하면 됩니다 . 다음과 같이 하십시오;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

이제 다음에 로그인하면 문제가 해결될 것입니다. 다시 로그인하고 싶지 않으면 다음 중 하나를 수행할 수 있습니다.

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

답변3

이 문제의 원인은 프로그램을 사용하는 것일 수 있습니다 screen. 나는 세션에 있을 때 screenvim이 터미널 상태를 반환할 수 없다는 것을 발견했습니다.

Ubuntu 15.10의 screen 또는 screen/vim 콤보에만 해당되는지 확실하지 않습니다. 위에서 설명한 것과 동일한 원인이지만 screentermcap이 다른 것 같습니다.

답변4

팀. 위의 답변은 모두 맞습니다. $TERM에 대한 termcap 항목에 해당 기능이 정의되어 있으면 Vim은 터미널을 "대체 화면"으로 전환합니다.

"일부 터미널에서는 (...제대로 작동합니다...)" 및 "다른 터미널에서는 (...잘못 작동합니다...)"라고 말합니다.

모든 터미널에 대해 정확히 동일한 터미널 에뮬레이터를 실행하고 있습니까?

예를 들어, 내 집 Linux 상자에는 ctrl-alt-F1과 관련된 "가상 터미널"과 함께 gnome-terminal, xterm, Konsole, yakuake 및 아마도 잊어버린 몇 가지가 더 있습니다. ctrl-alt-F6 정도. 이들 중 대부분은 "xterm"에 대한 "표준" termcap 항목과 함께 작동할 수 있습니다. - "linux"라는 터미널 정의가 있는 가상 터미널은 제외됩니다.

터미널 에뮬레이터 자체를 확인하고 작동하는 터미널과 작동하지 않는 터미널에서 $TERM 값을 확인하여 차이점을 확인하세요. 또한 때때로 다른 사용자로 로그인하는 경우 문제의 핵심이 될 수 있습니다. 각 사용자는 자신만의 .bashrc를 갖고 있으므로 다양한 설정이 사용자마다 다를 수 있습니다.

도움이 되었기를 바랍니다!
-pbr

관련 정보