2013-07-01 10 views
7

Jeśli pracuję w Emacs (terminal) i miał 2 bufory na ekranie za pomocą poziomego dzielone: ​​Emacs zmieniania rozmieszczenia Podział szyby

+--------------------------+ 
|       | 
|       | 
|       | 
|       | 
+--------------------------+ 
|       | 
|       | 
|       | 
|       | 
+--------------------------+ 

Wtedy zdecyduję się otworzyć repl śluzu, Emacs podzieli jedną z tych, szyby poziome pionie:

+--------------------------+ 
|       | 
|       | 
|       | 
|       | 
+-------------+------------+ 
|    |   | 
|    | slime  | 
|    |   | 
|    |   | 
+-------------+------------+ 

Ale co ja chcę to mieć szlam po prawej stronie, przy użyciu pełnej wysokości okna:

+-------------+------------+ 
|    |   | 
|    |   | 
|    |   | 
|    |   | 
+-------------+ slime  | 
|    |   | 
|    |   | 
|    |   | 
|    |   | 
+-------------+------------+ 

Czy jest jakiś łatwy sposób, aby uzyskać od układu Emacs automatycznie dał mi, do tego, którego chcę (np. układ obracania), czy też mogę samodzielnie zamknąć i ponownie podzielić okna?

EDYCJA | Ciekawe, czy mogę bezpośrednio otworzyć pełny podział pionowy, jeśli aktualnie używam pełnego podziału poziomego lub jeśli jest to faktycznie niemożliwe.

Odpowiedz

3

Z pewnością istnieją biblioteki do przekształcania konfiguracji okna ramki (obracanie, obracanie itp.) I innych bibliotek do obracania widocznych buforów przez dostępne okna. Połączenie tych osiągnie twój cel.

Lubię TransposeFrame dla tych pierwszych, i widzę co najmniej kilka opcji dla tych drugich:

w ogóle, CategoryWindows na Wiki powinna bądź dla ciebie przydatny.

Należy zauważyć, że konfiguracja okna przekształca do należy usunąć i ponownie utworzyć podziały, aby oryginalne obiekty okienne nie przetrwały całego procesu. Pod tym względem jest to naprawdę możliwe, aby zrobić to, o co prosisz; ale dla większości celów wystarczające jest "fałszowanie".

4

Jeśli lubisz wstępnie ustawić konfiguracje szyb, spojrzeć na „zarządzanie roboczy” pakages:

  • Perspective daje nazwanych obszary robocze
  • Equilibrium Emacs Window Manager jest podobny, ale bardziej zaawansowane narzędzie, które pozwala na skonfigurowanie okienko miejsce docelowe, konfiguracja okna, bufory, czcionki i skróty klawiaturowe.

Jest więcej na stronie project management na EmacsWiki.

do drugiego pytania, tutaj jest to, co mam w konfiguracji flip Poziomy/Pionowy podział (Credit: https://github.com/yyr/emacs.d):

+0

Nie mogę znaleźć "podzielonego okna-func-with-other-buffer"? Czy to z [tutaj] (https://github.com/yyr/emacs.d/blob/master/init-windows.el)? –

+0

Przykro mi, że zapomniałem włączyć funkcję. To pochodzi ze źródła, o którym wspomniałeś. Zobacz edytowaną wersję. –

1

Oto funkcja, która robi to, co chcesz. Po załadowaniu go do emacsa, wybierz bufor, który chcesz zmienić i wykonaj M-x my-shift-window-right. Możesz również powiązać go z kluczem za pomocą global-set-key.

(defun my-shift-window-right (&optional start-window) 
    "Reset the current window configuration with START-WINDOW 
on the right and the rest of the windows on the left. START-WINDOW defaults to 
the selected window. Return START-WINDOW, or nil if START-WINDOW isn't live or 
if there is only one visible window." 
    (interactive (list (selected-window))) 
    (if (or (one-window-p) 
      (and start-window 
       (not (window-live-p start-window)))) nil 
    (let ((other-buffers '()) 
      (start-window (or start-window (selected-window)))) 
     ;; add all visible buffers other than the current one to other-buffers list 
     (walk-windows #'(lambda (window) 
         (when (not (eq window start-window)) 
          (add-to-list 'other-buffers (window-buffer window))))) 
     (delete-other-windows) 
     ;; pop the first "other buffer" into a split window on the left 
     (set-window-buffer (select-window (split-window start-window nil 'left)) 
         (pop other-buffers)) 
     ;; make a split window for each buffer in the "other-buffers" list 
     ;; select the start-window and return it when finished 
     (dolist (buffer other-buffers (select-window start-window)) 
     (set-window-buffer (split-window (selected-window) nil 'above) buffer))))) 

Funkcja ta powoduje przechodzenie przez innych widocznych okien i sklepów każdego ze swoich buforów na liście nazywa other-buffers. Następnie przestawia okna zgodnie z opisem, wykonując iteracje na liście other-buffers.

Powiązane problemy