다음은 현재 창의 구조입니다.
+ ----- + ---------------------------- | | | A | | | + ----- + | | | B |
A와 B의 순서는 자연스럽지 않습니다. B가 위에 있으면 더 좋을 것입니다.
그러나 내가 가면 <C-w>K
B는 모든 창의 맨 꼭대기가 될 것입니다. B를 A 위에 놓을 수는 있지만 이미 A 위에있는 다른 창 위에 놓을 수는 없습니까?
두 개의 창이 세로로 분할 된 경우 어떻게 가로로 분할하도록 변경할 수 있습니까?
답변
분할 창의 두 부분을 바꾸려면 간단히 다음을 수행하십시오. <C-w> <C-r>
답변
window
위치 를 바꾸기 위해 , 그 효과는이 두 개의 창이 보여주는 버퍼를 바꾸는 것과 같습니다.
예를 들어, 창 A에 버퍼 2가 있고 창 B에 버퍼 8이 있으면 창 A로 이동하여 버퍼 8을 선택한 다음 창 B로 이동하여 버퍼 2를 선택하십시오.
이 아이디어는 스크립트를 작성하도록 영감을 주었으며 이미 내 도구 상자에도 있습니다.
기능 코드 :
function! WinBufSwap()
let thiswin = winnr()
let thisbuf = bufnr("%")
let lastwin = winnr("#")
let lastbuf = winbufnr(lastwin)
exec lastwin . " wincmd w" ."|".
\ "buffer ". thisbuf ."|".
\ thiswin ." wincmd w" ."|".
\ "buffer ". lastbuf
endfunction
command! Wswap :call WinBufSwap()
map <Leader>bs <C-c>:call WinBufSwap()<CR>
- 창 A 선택
- 창 B 선택
:call WinBufSwap()
커서는 원래 창에 그대로두고 미리 선택된 두 개의 창에서 버퍼를 교체합니다.
Vim이 작업 할 창을 지정하는 데 필요하므로 미리 교체 할 두 개의 창을 선택하는 것이 핵심 세부 사항입니다.
답변
CTRL-W x 창 N과 현재 창 교환 (기본 : 다음 창)
( index.txt
2.2 절. “창 명령”)
A가 현재 창이면 다음은 B가되므로 필요한 것만 <C-w> x
B가 현재 창이고 (아래에 더 많은 창이있는 경우) 먼저 A로 이동 한 다음 교환해야합니다. <C-w> k <C-w> x
답변
창을 바꾸거나 버퍼를 바꾸는 또 다른 대안은 파일에서 위치를 표시하고 ( 대문자 사용 ) 선택한 창에서 해당 표시를 여는 것입니다.
예를 들어 file_A 와 file_B 라는 두 개의 파일이있는 경우 :
- file_A 가있는 창으로 이동하여 표시합니다.
mA
- file_B 가있는 창으로 이동하여 표시하십시오.
mB
- 그런 다음 file_A 의 마크 를 해당 창으로 가져옵니다 .
'A
- 그런 다음 첫 번째 창으로 돌아가서 거기에서 file_B 의 마크를 가져옵니다
'B
.
이 방법의 장점은 어떤 이유로 창을 두 번 이상 분할하고 12시와 7시에 창을 바꾸려는 경우와 같이 창을 바꾸는 명확한 논리가없는 경우 ‘ t 창을 돌리면 버퍼를 쉽게 교체 할 수 있습니다.
답변
다음 기능을 사용하여 두 창 사이에서 버퍼를 교환 할 수 있습니다.
function! SwitchWindow(count) abort
let l:current_buf = winbufnr(0)
exe "buffer" . winbufnr(a:count)
exe a:count . "wincmd w"
exe "buffer" . l:current_buf
wincmd p
endfunction
nnoremap <C-w>x :<C-u>call SwitchWindow(v:count1)<CR>
이제는 버퍼를 바꾸는 것이 기술적으로 스와핑 윈도우처럼 작동합니다. 창을 수동으로 추적하지 않기 때문에 어떤 버퍼가 어떤 창을 보유하고 있는지 추적합니다. 따라서 위의 기능은 대부분의 상황에서 도움이 될 것입니다.