Ctrl-Z
계속해서 누르고 이 화면 사이를 전환하는 것은 짜증나는 일 입니다 fg
(여기서 Command Terminal은 호출하는 데 사용하는 명령줄입니다) vim
. 또한 fg
내 콘솔에 원치 않는 줄이 생성됩니다. 대학에서 했던 일이 기억나기 때문에 할 수 있다고 확신합니다. 하지만 어떻게 했는지 기억이 나지 않습니다.
터미널 및 vim과의 관계에 대한 정보
vt100 터미널과 다른 터미널에는 화면을 변경하기 전에 저장하고 필요할 때 복원하는 방법이 있습니다. 이 작업을 수행한 후 vim
진입한 다음 껍질을 벗기거나 종료하는지 확인할 수 있습니다. 대부분의 경우 화면을 그리기 전에 저장하여 이전 화면에 있던 내용을 표시합니다. 터미널이 이를 지원하지 않으면 화면 바로 아래에 명령줄을 배치하고 위로 스크롤합니다. 이는 덜 기능적인 터미널 에뮬레이션을 TERM 변수로 내보내거나 이를 지워 보면 알 수 있습니다(비록 이를 지우면 라인 모드로 들어갈 수도 있고 구현에 따라 가장 기본적인 터미널 코드를 사용할 수도 있음). 화면 저장/복원에 대한 자세한 내용은 다음을 참조하세요.vim
Ctrl-Z
vim
vim
vim
vim
터미널 코드 소개(ANSI/VT100), 제목 아래저장/복원 화면.
답변1
시작 시 gvim
새 창이 열리 므로 터미널 창에서 명령을 계속 사용할 수 있습니다. 중간 "쉘 이스케이프"의 경우 :sh
쉘 세션에 액세스하고 <Ctrl>-D
종료를 입력합니다. not require fg
. 그러나 이 경우 콘솔 쉘에 프롬프트를 추가합니다. 실행 하지 않고 X
두 개의 콘솔을 시작합니다. 하나는 vim이 실행되고 다른 하나는 셸이 실행되고 있습니다. 제 경우에는 <Ctrl>-<Alt>-<F1>
다음과 같이 콘솔을 전환합니다. (실제 요구 사항에 따라 이러한 옵션 중 하나가 적합할 것입니다. 희망합니다.)
답변2
좋아, Gary Johnson의 도움으로 이 작업을 수행하는 방법을 알아냈습니다.Google 그룹스 vim_use그룹. 그는 vim에서 명령을 실행하는 방법을 설명하여 tput
도움을 줍니다 . 이것이 나의 최종 해결책입니다.
vim 메모리에는 다음과 같은 함수 스크립트가 있습니다:
function! ShowTerm() call system(">/dev/tty tput rmcup") call input("") call system(">/dev/tty tput smcup") redraw! endfunction
다음과 같이 스크립트를 특정 명령 키 시퀀스에 매핑합니다.
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에서 분할 창 사이를 전환하는 데 사용할 수 있으며 터미널 분할에서도 작동합니다.