창에 여러 개의 분할이있는 경우를 고려하십시오. vim은 현재 분할을 "최대화"하여 전체 창을 통해 전체 창을 차지합니다 <C-W>
o
.
vim이 전에 존재했던 스플릿을 "기억"하고 실행 후이 상태로 되돌릴 수있는 방법이 <C-W>
o
있습니까?
편집 : 명확히하기 위해 타사 플러그인을 사용하지 않고이를 수행 할 수있는 방법을 찾고 있습니다.
창에 여러 개의 분할이있는 경우를 고려하십시오. vim은 현재 분할을 "최대화"하여 전체 창을 통해 전체 창을 차지합니다 <C-W>
o
.
vim이 전에 존재했던 스플릿을 "기억"하고 실행 후이 상태로 되돌릴 수있는 방법이 <C-W>
o
있습니까?
편집 : 명확히하기 위해 타사 플러그인을 사용하지 않고이를 수행 할 수있는 방법을 찾고 있습니다.
답변:
이 작업을 수행하는 가장 간단한 방법은 아마도 이전 편집 환경을 복원 할 vim 스크립트 (vim 스크립트가 자동으로 생성 할 수있는) 인 세션 파일을 사용하는 것입니다.
을 사용하여 새 세션 파일을 만들 수 있습니다 :mksession <filename>
. 생성 된 세션 스크립트를 실행하여 해당 세션을 복원 할 수 있습니다 :source <filename>
.
따라서 창을 최대화하기 전에 현재 세션을 저장하고 창을 "최대화 해제"하려는 경우 복원 할 수 있습니다.
이를 사용하여 적절한 창 명령을 다시 맵핑하여 세션을 미리 저장하고 세션을 복원하여 마지막 창 명령을 "실행 취소"할 새 맵핑을 추가 할 수 있습니다. 예를 들면 다음과 같습니다.
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
지원하려는 모든 윈도우 명령에 대해서도 마찬가지입니다 (참조 :help CTRL-W
). !
기존의 세션 파일을 덮어 쓰기에 관한 방지 오류.nnoremap <C-w>u :source ~/session.vim<CR>
마지막 윈도 잉 명령을 "실행 취소"합니다.특히 강력 해지기를 원한다면 세션 파일을 스택에 저장하기 위해 함수를 통해 이것을 확장하고 풀 실행 취소 체인을 얻기 위해 팝업을 해제 할 수 있습니다. 메모리에 창 명령 기록 ...이 시점에서 이미 이런 종류의 일을하는 플러그인을 복제 할 가능성이 있습니다.
정확히이 시나리오에 ZoomWin 플러그인 ( https://github.com/itspriddle/ZoomWin )을 사용합니다 . CtrlW-을 O다시 누르면 창 레이아웃이 복원됩니다.
당신이 묘사하는 것은 "zooming"이라는 이름으로가는 기능과 똑같습니다. SO에 대한 훌륭한 답변이 이미 있습니다.
편집 : 명시 적 답변, SO 에서 복사하여 붙여 넣습니다 . 내 스 니펫을 .vimrc에 넣고 호출합니다.
:ZoomToggle
내 vim 명령 프롬프트에서.
" Zoom / Restore window.
function! s:ZoomToggle() abort
if exists('t:zoomed') && t:zoomed
execute t:zoom_winrestcmd
let t:zoomed = 0
else
let t:zoom_winrestcmd = winrestcmd()
resize
vertical resize
let t:zoomed = 1
endif
endfunction
command! ZoomToggle call s:ZoomToggle()
nnoremap <silent> <C-A> :ZoomToggle<CR>
이 게시물은 오래되었으며 허용되는 답변은에 대해 걱정하지 않습니다 terminal buffer
.
허용 된 답변 session
은 트릭을 수행하는 데 사용 되지만 session
완전히 복원 할 수는 없습니다 terminal buffer
.
*terminal-session*
A terminal window will be restored when using a session file, if possible and
wanted.
If "terminal" was removed from 'sessionoptions' then no terminal windows will
be restored.
If the job in the terminal was finished the window will not be restored.
...
Tommcdo의 답변은 여전히 작동하며 <c-w>:tab split
잘 작동합니다 terminal buffer
. 지도가 필요합니다 :
nnoremap <c-w><space> :tab split<cr>
tnoremap <c-w><space> <c-w>:tab split<cr>