카테고리 보관물: vi

vi

두 창의 위치를 ​​바꾸십시오 | A와 B의 순서는 자연스럽지 않습니다. B가 위에

다음은 현재 창의 구조입니다.

+ ----- + ----------------------------
| |
| A |
| |
+ ----- +
| |
| B |

A와 B의 순서는 자연스럽지 않습니다. B가 위에 있으면 더 좋을 것입니다.

그러나 내가 가면 <C-w>KB는 모든 창의 맨 꼭대기가 될 것입니다. 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>
  1. 창 A 선택
  2. 창 B 선택
  3. :call WinBufSwap()
    커서는 원래 창에 그대로두고 미리 ​​선택된 두 개의 창에서 버퍼를 교체합니다.

Vim이 작업 할 창을 지정하는 데 필요하므로 미리 교체 할 두 개의 창을 선택하는 것이 핵심 세부 사항입니다.


답변

CTRL-W x 창 N과 현재 창 교환
                   (기본 : 다음 창)

( index.txt2.2 절. “창 명령”)

A가 현재 창이면 다음은 B가되므로 필요한 것만 <C-w> x

B가 현재 창이고 (아래에 더 많은 창이있는 경우) 먼저 A로 이동 한 다음 교환해야합니다. <C-w> k <C-w> x


답변

창을 바꾸거나 버퍼를 바꾸는 또 다른 대안은 파일에서 위치를 표시하고 ( 대문자 사용 ) 선택한 창에서 해당 표시를 여는 것입니다.

예를 들어 file_Afile_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>

이제는 버퍼를 바꾸는 것이 기술적으로 스와핑 윈도우처럼 작동합니다. 창을 수동으로 추적하지 않기 때문에 어떤 버퍼가 어떤 창을 보유하고 있는지 추적합니다. 따라서 위의 기능은 대부분의 상황에서 도움이 될 것입니다.


답변