터미널 및 vim과의 관계에 대한 정보

터미널 및 vim과의 관계에 대한 정보

Ctrl-Z계속해서 누르고 이 화면 사이를 전환하는 것은 짜증나는 일 입니다 fg(여기서 Command Terminal은 호출하는 데 사용하는 명령줄입니다) vim. 또한 fg내 콘솔에 원치 않는 줄이 생성됩니다. 대학에서 했던 일이 기억나기 때문에 할 수 있다고 확신합니다. 하지만 어떻게 했는지 기억이 나지 않습니다.

터미널 및 vim과의 관계에 대한 정보

vt100 터미널과 다른 터미널에는 화면을 변경하기 전에 저장하고 필요할 때 복원하는 방법이 있습니다. 이 작업을 수행한 후 vim진입한 다음 껍질을 벗기거나 종료하는지 확인할 수 있습니다. 대부분의 경우 화면을 그리기 전에 저장하여 이전 화면에 있던 내용을 표시합니다. 터미널이 이를 지원하지 않으면 화면 바로 아래에 명령줄을 배치하고 위로 스크롤합니다. 이는 덜 기능적인 터미널 에뮬레이션을 TERM 변수로 내보내거나 이를 지워 보면 알 수 있습니다(비록 이를 지우면 라인 모드로 들어갈 수도 있고 구현에 따라 가장 기본적인 터미널 코드를 사용할 수도 있음). 화면 저장/복원에 대한 자세한 내용은 다음을 참조하세요.vimCtrl-Zvimvimvimvim터미널 코드 소개(ANSI/VT100), 제목 아래저장/복원 화면.

답변1

시작 시 gvim새 창이 열리 므로 터미널 창에서 명령을 계속 사용할 수 있습니다. 중간 "쉘 이스케이프"의 경우 :sh쉘 세션에 액세스하고 <Ctrl>-D종료를 입력합니다. not require fg. 그러나 이 경우 콘솔 쉘에 프롬프트를 추가합니다. 실행 하지 않고 X두 개의 콘솔을 시작합니다. 하나는 vim이 실행되고 다른 하나는 셸이 실행되고 있습니다. 제 경우에는 <Ctrl>-<Alt>-<F1>다음과 같이 콘솔을 전환합니다. (실제 요구 사항에 따라 이러한 옵션 중 하나가 적합할 것입니다. 희망합니다.)

답변2

좋아, Gary Johnson의 도움으로 이 작업을 수행하는 방법을 알아냈습니다.Google 그룹스 vim_use그룹. 그는 vim에서 명령을 실행하는 방법을 설명하여 tput도움을 줍니다 . 이것이 나의 최종 해결책입니다.

  1. vim 메모리에는 다음과 같은 함수 스크립트가 있습니다:

    function! ShowTerm()
        call system(">/dev/tty tput rmcup")
        call input("")
        call system(">/dev/tty tput smcup")
        redraw!
    endfunction
    
  2. 다음과 같이 스크립트를 특정 명령 키 시퀀스에 매핑합니다.

    map [= :call ShowTerm()<CR>
    

저는 이 시퀀스를 사용했지만 [=원하는 대로 사용할 수 있습니다.

지금 입장하세요키 시퀀스그러면 또 다른 화면이 나타납니다. ~에 따르면입력하다그런 다음 vim 화면으로 돌아갑니다. Enter는 또한 터미널 화면에 개행 문자를 추가하지 않으므로 행진하는 줄이 없습니다.

좋아요! :) 이것이 15-20년 전에는 수행되었던 방식이 아닐 수도 있지만 작동한다는 점에 유의하십시오.

편집하다

가용성 에 의존하지 않기 위해 tput@MarkPlotnick이 추론한 다음이 똑같이 잘 작동한다는 것을 알았습니다. 위의 기능을 ShowTerm()다음으로 바꾸십시오.

function! ShowTerm()
    silent !read -sN 1
    redraw!
endfunction

bash이는 사용 중인 셸(또는 유사한 읽기 호출을 사용하는 다른 셸) 에 따라 다릅니다 .

두 번째 편집

또한 .vim다음 내용이 포함된 파일을 ~/.vim/plugins 폴더에 배치하여 이를 자동화할 수 있습니다.

" 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>

답변3

Vim 명령이 :shell예상대로 작동하나요? :shell<return>Vim이 $SHELL을 실행하도록 하세요. 셸을 종료하면 정확히 중단했던 위치인 Vim으로 다시 돌아옵니다.

답변4

Ctrl+ w+ wvim에서 분할 창 사이를 전환하는 데 사용할 수 있으며 터미널 분할에서도 작동합니다.

관련 정보