Bölünmüş ekran emacs pencerelerinin boyutunu nasıl değiştirebilirim?


172

Yatay olarak bölünmüş emacs var - üstte Perl kodunu düzenliyorum, alt kabuk. Varsayılan olarak emacs iki pencereyi eşit yapar, ancak kabuk arabelleğini daha küçük (belki yarısı boyut?) İstiyorum. Bunu nasıl yapabileceğimi merak ediyordum.

Yanıtlar:


294

Fare ile pencere boyutlarını sürükleyebilirsiniz.

Mod satırında aksi halde 'etkin' olmayan herhangi bir yeri tıklatın (arabellek adı güvenlidir veya sağ taraftaki kullanılmayan herhangi bir alan) ve yukarı veya aşağı sürükleyebilirsiniz.

Yan yana sürükleme, iki mod çizgisinin birleştiği noktaya çok hassas bir tıklama gerektirir.

C-x -( shrink-window-if-larger-than-buffer) bir pencereyi içeriğine sığacak şekilde küçültür.

C-x +( balance-windows) pencereleri aynı yükseklik ve genişliklerde yapar.

C-x ^( enlarge-window) yüksekliği 1 satır veya ön ek arg değeri artırır. Negatif bir arg pencereyi küçültür. örneğin C-- C-1 C-6 C-x ^16 sıra küçülür C-u - 1 6 C-x ^.

(İçin varsayılan ciltleme yoktur shrink-window.)

C-x }( enlarge-window-horizontally) aynı şekilde yatay olarak yapar.
C-x {( shrink-window-horizontally) de varsayılan olarak bağlıdır.

Bu komutlardan birini repeat( C-x zbaşlatmak ve sadece ztekrar etmek için) takip etmek, tam olarak istediğiniz boyuta ulaşmayı kolaylaştırır.

Bunu düzenli olarak belirli bir değerle yapmak istiyorsanız, bunu yapmak için bir klavye makrosu kaydedebilir veya
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

Veya bu:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

Hangi bir smidgen hacky, bu yüzden daha iyi olurdu:

(defun halve-other-window-height ()
  "Expand current window to use half of the other window's lines."
  (interactive)
  (enlarge-window (/ (window-height (next-window)) 2)))

(global-set-key (kbd "C-c v") 'halve-other-window-height)

Teğetsel olarak, winner-modepencere yapılandırmalarındaki değişiklikleri tekrar tekrar 'geri almanıza' izin veren de seviyorum C-c left(değişiklik, pencerelerin boyutu / sayısı / düzenlemesi mi, yoksa sadece hangi arabellek görüntüleniyorsa). C-c rightsizi en son yapılandırmaya döndürür. İle küresel olarak ayarlayın(winner-mode 1)


3
Harika, tam olarak ne istediğimi! Çok teşekkür ederim!
Steve

1
+1: 'geri al' kazanan mod ipucu için teşekkürler. btw, benim durumumda arabellek adına tıklamak bir sonraki arabelleği açar. Ancak, fare imleci şekline bakarak ne zaman yeniden boyutlandırabileceğinizi görmek kolaydır.
jfs

34

Bunları benim yerime koydum .emacs:

(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
(global-set-key (kbd "<C-left>") 'shrink-window-horizontally)
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)

Mac OSX 10.9.1
Oskar Persson

1
@OskarPersson Küresel kısayollarla çelişki olabilir. Bunu tercih edin ya da kumandayı kilitlemek için kontrolü yeniden kontrol edin (benim yolum), o zaman çalışmalıdır.
wilbeibi

Aynı sorunu yaşadım ve C-left ve C-right'nin @Wilbeibi tarafından açıklandığı gibi OS X Sistem Tercihleri'ndeki Görev Kontrolü kısayollarıyla çakıştığını öğrendim.
Doug Richardson

1
Bu tuşlar zaten tanımlanmıştır, önce ayarlanmadan (global-set-key (kbd "<C-up>") nil)önce tuşları ayarlayın, ancak M-leftbunun yerine daha iyi kullanılır
Mauricio Cortazar

@MauricioCortazar Emacs'i yıllardır kullanmıyorum. Bu cevap şimdi geçerli olmayabilir. Güncellemek için çekinmeyin.
wilbeibi

14

emacs yardım belgesini kullanmaya çalışalım.

C-h a

Sonra "büyüt" veya "pencere" yazın

Ne istediğinizi bulacaksınız.

Zevk almak!


C-hMevcut olmayan bir ortamda çalışmak mümkündür . Sonra ne?
Derrell Durrett

1
Eğer bağlayıcı standart yardım harita clobbered ettiyseniz, o zaman mutlaka bunu clobbered kadarıyla farkında olmalı ile . (Başarısız olursa, diğer standart yardım haritası bağlayıcısı <f1>olanı deneyin .)
phil

6

C-x oboyutunu genişletmek istediğiniz pencereye getirin. Oradan, C-x ^genişletmek için.


3
Bağlamaların farklı olması durumunda (benimki) komut enlarge-window. Ek ipucu, genişletme miktarını kontrol etmek için bir önek argümanı kullanmaktır.
Joseph Gay

Müthiş! Çok teşekkür ederim!
Steve

6

C-x ^pozitif ve negatif sayısal argümanlar alır. Özellikle, imlecinizin o anda dört satır olduğu pencereyi küçültmek isterseniz tuşuna basabilirsiniz C-u -4 C-x ^.


2

Aradığınız cevap tam olarak bu değil, ama işlevselliği ararken bu soruya tökezledim, bu spacemacsyüzden cevabımı sadece tamlık uğruna yazacağım.

Seçenek kullanmaktır <SPC> + w + .(vanilya uzay haritalarında çalışır)

Bu, []{}parçalı bir boyutta yeniden boyutlandırmak için kullanabileceğiniz geçici bir pencere açar .

Cx veya Mouse'a gerek yok ...

Pencere düzenleme geçici durumu


düzenli emacs benzer bir şey varsa?
krokodil

Muhtemelen orada değil, bu yüzden Drew bu soruyu ilk etapta sordu ...
Yesh

0

Aynı soruyu aldım. İşte benim çözümüm.
İlk olarak yeni bir işlev tanımlarım:

(defun buffer-resize ()
  (delete-other-windows)
  (split-window-vertically (floor (* 0.68 (window-height))))
  (other-window 1)
  (switch-to-buffer buf)
  (other-window 1))

Örneğin, bir arabellek şemasını çalıştırmak istiyorum, Bu yüzden yeniden yazmak.
Ve işte tanım, daha önce tanımlanan işlevle:

(defun run-scheme-here ()
  "Run a new scheme process at the directory of the current buffer.
   If a process is already running, switch to its buffer."
  (interactive)
  (let* ((proc (format "scheme: %s" default-directory))
         (buf (format "*%s*" proc)))
    (unless (comint-check-proc buf)
      (let ((cmd (split-string scheme-program-name)))
        (set-buffer
         (apply 'make-comint-in-buffer proc buf (car cmd) nil (cdr cmd)))
        (inferior-scheme-mode)
        (buffer-resize)))
    (pop-to-buffer buf)))

Şimdi girdiğimde: Mx run-scheme-here, buffer yeniden boyutlandırıldı!
Ve işte benim yapılandırma dosyası, bunun yardımcı olacağını umuyorum. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el


3
bağlantınız koptu :(
Ciprian Tomoiagă
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.