나는 emacs를 사용하고 있는데 때때로 2 개의 파일이 2 개의 창으로 분리되어 있다는 것을 알았습니다.
예 : 다음을 사용하여 1 개의 파일을 엽니 다. C-x C-f file1.c RET
프레임을 두 개의 창으로 분할했습니다. C-x 3
그런 다음 다른 파일을 엽니 다. C-x C-f file2.c RET
그래서 2 개의 파일이 있습니다.
창 1 (왼쪽) file1.c
창 2 (오른쪽) file2.c
파일을 교체 할 키 조합이 있는지 궁금합니다. 보통 저는 2 개의 창이있을 때 왼쪽 창에서 작업하는 것을 좋아합니다. C-x o커서를 오른쪽 창으로 쉽게 이동할 수 있다는 것을 알고 있습니다 .
그러나 file2.c
왼쪽 창 file1.c
에 있고 오른쪽 창에 있도록 파일을 바꿀 수 있는지 궁금합니다 .
답변
이를 위해 buffer-move 를 사용합니다. 이제 왼쪽에있는 버퍼에서 작업하는 경우 ‘buf-move-right’를 호출하면 오른쪽에있는 버퍼와 바뀝니다. 나는 이것이 당신이 원하는 것 같아요.
답변
트랜스 프레임 라이브러리는 틀지 또는 프레임에서 윈도우 준비를 회전 기능의 매우 포괄적 인 세트를 제공합니다.
M-x flop-frame
RET 이 특정 질문에 필요한 것을 수행합니다.
다음 다이어그램은 라이브러리 (및 EmacsWiki 페이지)의 주석에서 가져온 것입니다.
‘transpose-frame’ … Swap x-direction and y-direction
+------------+------------+ +----------------+--------+
| | B | | A | |
| A +------------+ | | |
| | C | => +--------+-------+ D |
+------------+------------+ | B | C | |
| D | | | | |
+-------------------------+ +--------+-------+--------+
‘flip-frame’ … Flip vertically
+------------+------------+ +------------+------------+
| | B | | D |
| A +------------+ +------------+------------+
| | C | => | | C |
+------------+------------+ | A +------------+
| D | | | B |
+-------------------------+ +------------+------------+
‘flop-frame’ … Flop horizontally
+------------+------------+ +------------+------------+
| | B | | B | |
| A +------------+ +------------+ A |
| | C | => | C | |
+------------+------------+ +------------+------------+
| D | | D |
+-------------------------+ +-------------------------+
‘rotate-frame’ … Rotate 180 degrees
+------------+------------+ +-------------------------+
| | B | | D |
| A +------------+ +------------+------------+
| | C | => | C | |
+------------+------------+ +------------+ A |
| D | | B | |
+-------------------------+ +------------+------------+
‘rotate-frame-clockwise’ … Rotate 90 degrees clockwise
+------------+------------+ +-------+-----------------+
| | B | | | A |
| A +------------+ | | |
| | C | => | D +--------+--------+
+------------+------------+ | | B | C |
| D | | | | |
+-------------------------+ +-------+--------+--------+
‘rotate-frame-anti-clockwise’ … Rotate 90 degrees anti-clockwise
+------------+------------+ +--------+--------+-------+
| | B | | B | C | |
| A +------------+ | | | |
| | C | => +--------+--------+ D |
+------------+------------+ | A | |
| D | | | |
+-------------------------+ +-----------------+-------+
답변
Emacs 26.1 NEWS 파일에는 다음 항목이 있습니다.
+++
*** New command 'window-swap-states' swaps the states of two live
windows.
비슷한 기능을 제공하는 것처럼 crux-transpose-windows
보이지만 높이 / 너비 조옮김도 할 수있는 것은 무엇입니까?
답변
당신이 사용하는 경우 서곡을 그냥 사용할 수 있습니다 C-c s
( prelude-swap-windows
). Prelude 문서에서 :
C-c s
명령 실행crux-swap-windows
(발견prelude-mode-map
의 별칭)crux-transpose-windows
에 crux.el을 .
답변
이 작업을 수행하는 내장 기능을 알지 못합니다.
그러나 그것을하기 위해 약간의 elisp를 채찍질하는 것은 그리 어렵지 않은 것 같습니다. 하지만 악마는 세부 사항에 있습니다.
(defun swap-buffers-in-windows ()
"Put the buffer from the selected window in next window, and vice versa"
(interactive)
(let* ((this (selected-window))
(other (next-window))
(this-buffer (window-buffer this))
(other-buffer (window-buffer other)))
(set-window-buffer other this-buffer)
(set-window-buffer this other-buffer)
)
)
특히, 이것은 캐럿이 끝나는 위치와 관련하여 원하는 것을 수행하지 않을 수 있습니다. 그러나 먼저 원하는 것을 말해야합니다.
답변
전주곡이있는 경우에서 ace-window를 사용할 수 있습니다 S-w
. 거기에서 문서에 나열된 많은 작업을 수행 할 수 있습니다 .
ace-window를 호출하여 시작한 다음 액션을 삭제 또는 교체 등으로 전환 할 수도 있습니다. 기본적으로 바인딩은 다음과 같습니다.
x-창 삭제
m-스왑 (이동) 창
c-창을 수직 또는 수평으로 공정하게 분할
v-창을 수직으로 분할
b-창을 가로로 분할
n-이전 창 선택
…
그래서 그것은 S-w m
답변
다음 코드 조각은 버퍼 전환을 수행 할 수 있습니다.
(defun ab/switch-buffer-each-other (arg)
"switch current buffer with other window buffer
right-2-left and up-2-down"
(interactive "p")
(cond
((windmove-find-other-window 'right) (buf-move-right))
((windmove-find-other-window 'left) (buf-move-left))
((windmove-find-other-window 'up) (buf-move-up))
((windmove-find-other-window 'down) (buf-move-down)))
(message "switch buffer done"))