창이 맨 아래, 맨 위, 왼쪽 또는 오른쪽인지 알 수 있습니까?


13

창 위치를 확인하는 기능이 있는지 모르겠습니다. 현재 왼쪽 또는 오른쪽, 왼쪽 또는 오른쪽에 앉아 있습니까?

__________________________
|           |            |
|           |            |
|  left     |   right    |
|           |            |
|           |            |
|___________|____________|

__________________________
|                        |
|          top           |
|________________________|
|                        |
|         bottom         |
|_______________________ |

무엇을하려고합니까? (XY Problem)
mMontu

현재 레이아웃이 가로이면 창 분할을 세로로 회전하고 두 개의 창이있는 경우 그 반대로 회전하는 함수를 작성하려고합니다. 따라서 현재 분할 레이아웃이 무엇이며 현재 창이 어디에 있는지 알아야합니다.
Aaron Shen

3
왜 간단하게 사용하지 ctrl-W_L않습니까? (또는 ctrl-W_R)
Vitor

나는 편리한 토글 기능을 원합니다. 자동으로 현재 레이아웃을 감지하고 대신 내 두뇌에서 생각하고 올바른 명령을 선택 해야하는 대신 올바른 회전을 수행합니다. 내가해야 할 일은 항상 동일한 키 매핑을 누르는 것입니다.
Aaron Shen

@AaronShen 창 복원 명령을 살펴보십시오 .
muru December

답변:


4

질문에 대한 의견을 요약하면 다음과 같습니다.

-현재 레이아웃이 가로이면 창 분할을 세로로 회전하고 두 개의 창이있는 경우 그 반대로 회전하는 함수를 작성하려고합니다.

-왜 단순히 ctrl-W_L을 사용하지 않습니까? (또는 ctrl-W_R)

-편리한 토글 기능이 필요합니다. 현재 레이아웃을 자동으로 감지하고 대신 내 뇌에서 생각하고 올바른 명령을 선택 해야하는 대신 올바른 회전을 수행합니다. 내가해야 할 일은 항상 동일한 키 매핑을 누르는 것입니다.

두 개의 창만 포함 된 레이아웃의 경우 다음 기능이 작동해야합니다.

function! Rotate()
   " save the original position, jump to the first window
   let initial = winnr()
   exe 1 . "wincmd w"

   wincmd l
   if winnr() != 1
      " succeeded moving to the right window
      wincmd J " make it the bot window
   else
      " cannot move to the right, so we are at the top
      wincmd H " make it the left window
   endif

   " restore cursor to the initial window
   exe initial . "wincmd w"
endfunction

nnoremap <F3> :call Rotate()<CR>

멋진 기능이지만 모든 vim 스크립트를 모르지만 완벽하게 작동합니다. btw, 나는 단지 두 개의 창이있을 때만 작동하는지 추가 검사를 하나 추가합니다.
Aaron Shen

6

불행히도 이것을 확인할 수있는 방법이 없다고 생각합니다.

이를 확인하는 사용자 정의 기능을 만드는 방법이있을 수 있습니다. 창 번호는 항상 왼쪽 상단의 1부터 오른쪽 하단의 n 까지 번호가 매겨집니다 . 아마도 하나의 형상 데이터와 결합이 사용 winwidth(), winheight()및의 값 &lines&columns원하는 맵을 만들?

일반적으로 더 복잡한 레이아웃을 지원해야합니다. 예를 들어 왼쪽이 2 개로 분할 된 경우 출력은 어떻게됩니까? 아마도 이것이 기능이 처음에 존재하지 않는 이유 일 것입니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.