종료 후 Vim 텍스트를 표시하지 않도록 bash 디스플레이를 설정하는 방법은 무엇입니까?


28

내 질문은 간단하지만 쉽게 프레임 / 설명하기가 어렵습니다.

다른 계정으로 여러 유닉스 박스에 로그인합니다. vim에서 텍스트 파일을 편집하는 동안 user1user2에 대한 두 가지 다른 점이 있습니다.

user1

를 입력 vim filename하면 vim이 열리고 파일을 편집합니다. 파일을 닫으면 파일의 전체 텍스트가 사라지고 이전에 있었던 Teminals의 명령 / 출력을 볼 수 있습니다.

user2

를 입력 vim filename하면 vim이 열리고 파일을 편집합니다. 파일을 닫으면 디스플레이에 있던 파일의 일부가 vim여전히 디스플레이에 표시되고 이전의 모든 터미널 디스플레이가 스크롤됩니다. 파일이 단 한 줄인 경우에도 vim을 종료 한 후 디스플레이에 첫 번째 줄이 표시되고 나머지는 모두 ~표시되고 화면 하단에 명령 프롬프트가 표시됩니다.

세부

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)

vimrc두 사용자 의 파일을 비교 한 결과 모든 설정을 알고 있으며이 동작과 관련된 설정 / 구성을 찾지 못했습니다.

이 동작은 쉘 구성과 관련이 있습니까? user1시나리오에 표시된 것처럼 동작을 얻도록 설정하는 방법은 무엇입니까?

이러한 행동을 찾기 위해 어떤 키워드를 알지 못하기 때문에 이것을 쉽게 설명 할 수 없으며 Google에 찾기가 어렵습니다. 좀 더 자세히 설명하면 알려주세요.


인가 user1user2동일하거나 다른 시스템에 계정?
jasonwryan

@jasonwryan 같은 컴퓨터에 로그온해도 같은 시나리오가 표시됩니다. @ warl0ck 감사합니다.
mtk

1
이 동작을 강제하고 싶지만 터미널 유형을 유지하려면 alias vi = "/ usr / bin / vi $ *; clear"라는 행을 .bashrc 또는 .profile에 추가하십시오
Criggie

답변:


24

그 동작의 이유 중 하나는 각 사용자에 대한 터미널 설정 때문입니다.

예를 들면 다음과 같습니다.

  • User1은 TERM = xterm을 사용 하고 있습니다.이 경우 vim을 종료하면 터미널이 지워집니다.
  • User2는 TERM = vt100을 사용 하고 있습니다.이 경우 vim을 종료하면 터미널이 지워지지 않습니다.

user1이 어떤 터미널을 사용하는지 확인하고 echo $TERMuser2에 동일하게 설정하십시오. bash의 경우 :

TERM = xterm; TERM 내보내기


+1 정확하고 완벽한 솔루션. 감사 !!! 그렇게 쉬운 줄은 몰랐어요. 무엇인지 자세히 설명해 주 TERM시겠습니까? 또는 일부 리소스 링크를 가리 킵니까? 나는 이것을 이해해야한다. 이것은 우리가 통해 연결할 때만 영향을 줍니까 putty?
mtk

퍼티 세션에 터미널 설정을 지정할 수 있지만 사용자는 환경 변수에 지정할 수 있습니다. TERM은 터미널 유형을 정의하고 일부는 xterm이 색상을 지원하고 행과 열을 자동으로 업데이트하는 기능과 같은 더 많은 기능을 갖습니다. vt100을 사용하는 경우 터미널 크기를 조정할 때 24x80 열로 기본 설정되어 24x80에 고정되어 있음을 알 수 있습니다. 이 unix.stackexchange.com/questions/43945/…를 확인하십시오 . 저보다 더 잘 설명되어 있습니다.
BitsOfNix

쉘이 아닌 터미널 동작입니다. 터미널 에뮬레이터 설정은 연결하는 데 사용하는 도구와 동일합니다. 차이점은 여기에 자세히 설명되어 있습니다 : unix.stackexchange.com/questions/4126/…
Leonid

퍼티를 사용하는 경우 @Leonid가 아니라 정확하게 정의 할 수 있으며 사용자가 TERM 정의를 정의하지 않으면 연결시 업데이트됩니다. 사용자가 정의한 경우 어떤 도구를 사용하든 사용자 환경 설정이 우선합니다.
BitsOfNix

이 솔루션에 대한 참고 사항 : YMMV. 항상 "xterm"은 아닙니다. FreeBSD 10에서 dmenu와 함께 dwm (Dynamic Window Manager)을 사용하여 시나리오 1을 얻기 위해 "rxvt"를 사용하여 터미널을 위조해야했습니다. ~ / .vimrc 파일에 "set term = rxvt"를 추가하여 용어 설정을 건너 뛸 수도 있습니다. .
Ryder

18

그러한 행동은 나를 사용하지 못하게하는 유일한 것이었다 screen. "screen"터미널을 사용하고 "xterm"으로 변경해도 도움이되지 않습니다.

altscreen on~ / .screenrc에 옵션을 추가하면 해결되었습니다. 화면 매뉴얼에서 :

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.

@Fox OP는 그가 사용하고있는 TERM에 대해서는 언급하지 않았기 때문에 대안적인 대안이 될 수 있습니다. 어쨌든이 페이지는 화면 문제에 대해 인터넷 검색을하는 동안 맨 위에 있습니다.
BartBiczBoży

2
이 트릭을했다! 키워드 : "vim quit은 시각적 인 유물 터미널을 떠난다"
Jay Taylor

0

나는이 모든 옵션을 시도했지만 결과는 내가 기대 한 것이 아닙니다. !clear전체 화면을 지우고 이전 bash 명령을 남기지 않습니다.

간단하고 올바른 해결책은 연결-> 데이터 아래 퍼티 설정의 터미널 세부 정보에서 터미널 유형 문자열을 설정 xterm하고 터미널 속도를 38400,38400설정하는 것입니다.

설정을 저장하면 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.