
bash(또는 vim) 기능이 무엇인지 알아보려고 합니다. 시나리오는 다음과 같습니다. 저는 bash 터미널에 있고 vim으로 무언가를 편집한 다음 bash로 다시 종료합니다. 일부 터미널에서는 이전 bash 셸 활동을 표시하기 위해 vim 세션 화면이 사라집니다(이것이 내가 원하는 것입니까?).
다른 경우에는 vim 세션 화면 버퍼가 그대로 유지됩니다(이전 bash 셸 활동 숨김). 화면을 지우거나 bash 활동이 해당 vim 세션 버퍼를 화면 밖으로 밀어낼 때까지 기다려야 합니다.
vim 세션 버퍼를 이전 bash 활동으로 대체하기 위해 이 동작을 어떻게 제어할 수 있습니까?
감사합니다 팀
답변1
Vim은 세션이 시작될 때 와 끝날 때 터미널에 t_ti
and 를 보냅니다 . 및 시퀀스 를 사용하면 터미널이 대체 화면으로 전환됩니다.t_ks
t_te
t_ke
t_ti
t_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
. 나는 세션에 있을 때 screen
vim이 터미널 상태를 반환할 수 없다는 것을 발견했습니다.
Ubuntu 15.10의 screen 또는 screen/vim 콤보에만 해당되는지 확실하지 않습니다. 위에서 설명한 것과 동일한 원인이지만 screen
termcap이 다른 것 같습니다.
답변4
팀. 위의 답변은 모두 맞습니다. $TERM에 대한 termcap 항목에 해당 기능이 정의되어 있으면 Vim은 터미널을 "대체 화면"으로 전환합니다.
"일부 터미널에서는 (...제대로 작동합니다...)" 및 "다른 터미널에서는 (...잘못 작동합니다...)"라고 말합니다.
모든 터미널에 대해 정확히 동일한 터미널 에뮬레이터를 실행하고 있습니까?
예를 들어, 내 집 Linux 상자에는 ctrl-alt-F1과 관련된 "가상 터미널"과 함께 gnome-terminal, xterm, Konsole, yakuake 및 아마도 잊어버린 몇 가지가 더 있습니다. ctrl-alt-F6 정도. 이들 중 대부분은 "xterm"에 대한 "표준" termcap 항목과 함께 작동할 수 있습니다. - "linux"라는 터미널 정의가 있는 가상 터미널은 제외됩니다.
터미널 에뮬레이터 자체를 확인하고 작동하는 터미널과 작동하지 않는 터미널에서 $TERM 값을 확인하여 차이점을 확인하세요. 또한 때때로 다른 사용자로 로그인하는 경우 문제의 핵심이 될 수 있습니다. 각 사용자는 자신만의 .bashrc를 갖고 있으므로 다양한 설정이 사용자마다 다를 수 있습니다.
도움이 되었기를 바랍니다!
-pbr