পাশ থেকে পাশের স্প্লিট বাফারগুলিতে ইমাসকে সেট করা


92

অনেকগুলি ইমাক্স ফাংশন স্বয়ংক্রিয়ভাবে স্ক্রিনকে বিভক্ত করে। যাইহোক, তারা সবাই এমনটি করে যাতে উইন্ডোগুলি একে অপরের উপরে থাকে। এগুলি বিভক্ত করার কোনও উপায় নেই যে পরিবর্তে তারা পরিবর্তে ডিফল্ট হিসাবে পাশাপাশি রয়েছে?


12
আমি এই প্রশ্নে অনুভূমিক এবং উল্লম্ব ব্যবহারের পরিবর্তন করব - আমি বলব ডিফল্ট আচরণটি অনুভূমিকভাবে বিভক্ত হওয়া (বিভাজনটি স্ক্রিন জুড়ে একটি অনুভূমিক রেখা)।
স্কিলড্রিক

22
Cx 3 কমান্ডটি বিভাজন-উইন্ডো-অনুভূমিকভাবে চালিত করে, কমান্ডের জন্য যা পাশের পাশাপাশি উইন্ডো দেয়, তাই আমি এটি ব্যবহার করছি।
নিকউইন

@ স্কিলড্রিক "উল্লম্ব" এবং "অনুভূমিক" অস্পষ্ট এবং পৃথকভাবে ব্যাখ্যা করা যেতে পারে; তারা বর্ণনা করতে পারে যে কীভাবে বিভাজকমুখী হয় বা পার্টিশনগুলি কীভাবে ওরিয়েন্টেড হয়। আমার স্বাভাবিক প্রবণতাটি মূল প্রশ্নের শব্দের সাথে একমত হওয়া (যা আমি সাধারণত "স্প্লিটটি উল্লম্বভাবে" "উল্লম্ব স্থানটি বিভাজন" হিসাবে ব্যাখ্যা করব)।
জেমসডলিন

উত্তর:


94
(setq split-height-threshold nil)
(setq split-width-threshold 0)

জিএনইউ ইমাস লিস্প রেফারেন্স ম্যানুয়াল: উইন্ডো বিকল্প নির্বাচন করা


8
নোট করুন যে তারা কীভাবে বিভক্ত-উইন্ডো-পছন্দসই-ফাংশন এবং স্প্লিট-উইন্ডো-সংবেদনশীল ফাংশনকে সেট করে তা কীভাবে প্রভাবিত করে - কারণ আপনি যদি সেটির জন্য ডকগুলি পড়েন, তবে আপনি আবিষ্কার করতে পারবেন কীভাবে এই পরিবর্তনশীলগুলি সেট করা হচ্ছে সেগুলিকে কীভাবে প্রভাবিত করে। আমাদের মধ্যে যারা ডিফল্টরূপে উল্লম্ব বিভাজন পছন্দ করে তাদের জন্য আমরা কেবল ব্যবহার করতে পারি (setq split-split-threshold nil) যা উইন্ডোজকে অনুভূমিকভাবে বিভক্ত করতে দেয় না split
কেন্ডাল হেলমেস্টেটার জেলনার

4
দস্তাবেজগুলি পড়ার পরে এবং কিছুটা ঘনিয়ে নেওয়ার পরে, আমি স্প্লিট-উচ্চতা-প্রান্তিক স্থির করে নিলে এবং স্প্লিট-প্রস্থ-প্রান্তিকে 80 এ সেট করে রেখেছি যাতে এটি প্রথমে দেখতে পাবে যে এটি অনুভূমিকভাবে বিভক্ত হতে পারে এবং কেবল তখনই উল্লম্বভাবে চেষ্টা করা উচিত। উইন্ডোটি সরু হয়ে যাওয়ার সাথে সাথে এটি কেবল উল্লম্বভাবে বিভক্ত হওয়া প্রায়শই কুশ্রী হয়ে যায়।
নিকউইন

এটি খুব প্রশংসনীয় শোনাচ্ছে। তবে এটি ইমাসে জিডিবি / জিইউডি সংহতকরণের জন্য কাজ করছে না। যদি আমার একটি একক উইন্ডো থাকে তবে ডিবাগার শুরু করুন, ইমাস সর্বদা উল্লম্বভাবে বিভক্ত হয়। এর জন্য কি কোনও জিইডি / জিডিবি-নির্দিষ্ট সেটিং আছে?
mefiX

@ নিকউইন: আমার ক্ষেত্রে, এই সমাধানটি "সিক্স 4 বি" কে দুটি 80 কলামের উইন্ডো পাশাপাশি পাশাপাশি সীমাবদ্ধ করেছে (আমার বর্তমান পর্দার রিয়েল এস্টেট কেবল এটি যথেষ্ট পরিমাণে ফিট করতে পারে)। দ্বিতীয়বার "Cx 4 b" চালনা নতুন উল্লম্বভাবে বিভক্ত "অন্যান্য" উইন্ডোটি খুলবে না। পরিবর্তে, এটি বর্তমানে উপলব্ধ "অন্যান্য" উইন্ডোতে বাফারটি খুলবে। আপনি বর্ণিত হিসাবে আমি কীভাবে এটি আচরণ করতে পারি (অনুভূমিকভাবে তারপর উলম্বভাবে চেষ্টা করুন)?
অ্যাভেন্ডেল

এটি পরিচিত সিএক্স-তে আমার পরিচিত কিছু বিন্যাসে নেই। আমি এই আদেশগুলি কীভাবে কার্যকর করব?
ব্যবহারকারী 1552512

8

দুটি সমাধান এখানে আপনার পছন্দ মতো যেকোন একটি ব্যবহার করুন:

উত্তর: ডিফল্টরূপে উল্লম্বভাবে (বাম / ডান):

(setq split-height-threshold nil)
(setq split-width-threshold 0)

বি: বর্তমান উইন্ডো যথেষ্ট প্রশস্ত থাকলে স্বয়ংক্রিয়ভাবে উইন্ডোটি উল্লম্বভাবে (বাম / ডানদিকে) বিভক্ত করুন

(defun display-new-buffer (buffer force-other-window)
  "If BUFFER is visible, select it.
If it's not visible and there's only one window, split the
current window and select BUFFER in the new window. If the
current window (before the split) is more than 100 columns wide,
split horizontally(left/right), else split vertically(up/down).
If the current buffer contains more than one window, select
BUFFER in the least recently used window.
This function returns the window which holds BUFFER.
FORCE-OTHER-WINDOW is ignored."
  (or (get-buffer-window buffer)
    (if (one-window-p)
        (let ((new-win
               (if (> (window-width) 100)
                   (split-window-horizontally)
                 (split-window-vertically))))
          (set-window-buffer new-win buffer)
          new-win)
      (let ((new-win (get-lru-window)))
        (set-window-buffer new-win buffer)
        new-win))))
;; use display-buffer-alist instead of display-buffer-function if the following line won't work
(setq display-buffer-function 'display-new-buffer)

আপনার মধ্যে যে কোনও একটি রাখুন .emacs/init.el ফাইলের । আপনার পর্দার উপর নির্ভর করে আপনি নিজের পছন্দমতো মানটিতে "100" পরিবর্তন করতে পারেন।

যদি আপনি একটি ফ্রেমে দুটি উইন্ডো পেয়ে থাকেন এবং আপনি লেআউটটি উল্লম্ব থেকে অনুভূমিক বা উপবৃত্তে পরিবর্তন করতে চান তবে এখানে একটি সমাধান দেওয়া হয়েছে:

(defun toggle-window-split ()
  (interactive)
    (if (= (count-windows) 2)
      (let* ((this-win-buffer (window-buffer))
            (next-win-buffer (window-buffer (next-window)))
            (this-win-edges (window-edges (selected-window)))
            (next-win-edges (window-edges (next-window)))
            (this-win-2nd
             (not (and (<= (car this-win-edges)
                        (car next-win-edges))
                    (<= (cadr this-win-edges)
                        (cadr next-win-edges)))))
         (splitter
          (if (= (car this-win-edges)
                 (car (window-edges (next-window))))
              'split-window-horizontally
            'split-window-vertically)))
    (delete-other-windows)
    (let ((first-win (selected-window)))
      (funcall splitter)
      (if this-win-2nd (other-window 1))
      (set-window-buffer (selected-window) this-win-buffer)
      (set-window-buffer (next-window) next-win-buffer)
      (select-window first-win)
      (if this-win-2nd (other-window 1))))))
;; C-x 4 t 'toggle-window-split
(define-key ctl-x-4-map "t" 'toggle-window-split)

এটি আপনার .emacs/init.elফাইলে রাখুন C-x 4 t, আপনার উইন্ডোগুলির বিন্যাস টগল করতে ব্যবহার করুন ।


সমাধান দেখতে যখন আমি ব্যবহার করছিলেন উপর undo-treeটিপে qবাফার Cluse নেই
Alper

4
(setq split-height-threshold 0) (setq split-width-threshold 0)

পছন্দসই আচরণটি পেতে আমার কী ব্যবহার করতে হয়েছিল (কোনও অনুভূমিক বিভাজন নেই)


4

কখনও কখনও আমাদের বর্তমান প্রদর্শন এবং আমাদের প্রয়োজন অনুসারে অনুভূমিক এবং উল্লম্বের মধ্যে পরিবর্তন প্রয়োজন (আরও লাইন বা আরও কলাম)।

আমি দুর্দান্ত টগল উইন্ডোস্প্লিটকে পুনঃসামন্ডিত করি এবং আমি " সিসি ওয়াই" -তে কী বাঁধাই করি

http://www.emacswiki.org/emacs/ টগল উইন্ডোস্প্লিট


4
বা ট্রান্সপোজ-ফ্রেম , যা আরও মার্জিত।
xuhdev

1

2 ভেরিয়েবলগুলি শূন্য এবং 0 এ সেট করার সহজ উত্তরটি আমার পক্ষে কাজ করে নি, তাই আমি 2 টি সহজ ফাংশন লিখেছি: একটি কেবল উইন্ডোটিকে এনএক্স উল্লম্ব বাফারে বিভক্ত করে এবং ফাইল ফাইল খোলে (উদাহরণস্বরূপ) ফাইল 1 ফাইল 2 .. ফাইল.এনএক্স এবং একে অপরকে একই ধারণা করা হয়, এটি 2D (এফ 1 f.2 ... f। [এনএক্স * এনওয়াই] খোলার জন্য এনএক্স কলাম দ্বারা এনএইচ সারি) করে না করে except ইনস্টল করতে, এই কোডটি .emacs এ যুক্ত করুন:

    (defun grid-files-h (nx wx pfx)
  "Using dotimes, split the window into NX side-by-side buffers of width WX and load files starting with prefix PFX and ending in numbers 1 through NX"
  (let (ox fn k)  ; ox is not used, but fn is used to store the filename, and k to store the index string
    (dotimes (x (- nx 1) ox) ; go through buffers, x goes from 0 to nx-2 and ox is not used here
;     (print x)
      (setq k (number-to-string (+ x 1) ) )  ; k is a string that goes from "1" to "nx-1"
;     (print k)
      (setq fn (concat pfx k) ) ; fn is filename - concatenate prefix with k
;     (print fn)
      (find-file fn) ; open the filename in current buffer
      (split-window-horizontally wx) ; split window (current buffer gets wx-columns)
      (other-window 1) ; switch to the next (right) buffer
      )
    (setq k (number-to-string nx )) ; last (rightmost) buffer gets the "nx" file
    (setq fn (concat pfx k) ) ; fn = "pfx"+"nx"
    (find-file fn ) ; open fn
    (other-window 1) ; go back to the first buffer
    )  
  )

   (defun grid-files-sq (ny wy nx wx pfx)
      "Using dotimes, split the window into NX columns of width WX and NY rows of height WY and load files starting with prefix PFX and ending in numbers 1 through NX*NY"
      (let (oy ox fn k)  
        (dotimes (y ny oy) ; go through rows, y goes from 0 to ny-1 and oy is not used here
          (split-window-vertically wy) ; create this row
          (dotimes (x (- nx 1) ox) ; go through columns, x goes from 0 to nx-2 and ox is not used here
        (setq k (number-to-string (+ 1 (+ x (* y nx) ) ) ) ) ; k must convert 2 indecies (x,y) into one linear one (like sub2ind in matlab)
        (setq fn (concat pfx k) ) ; filename
        (find-file fn ) ; open
        (split-window-horizontally wx) ; create this column in this row (this "cell")
        (other-window 1) ; go to the next buffer on the right 
        )
          (setq k (number-to-string (+ nx (* y nx) ) ) ) ; rightmost buffer in this row needs a file too
          (setq fn (concat pfx k) ) ; filename
          (find-file fn ) ; open
          (other-window 1) ; go to next row (one buffer down)
          )
        )
      )

এবং তারপরে উল্লম্বটি ব্যবহার করতে, আমি * স্ক্র্যাচ * ( C-x b *scratch* RET, C-x 1) এ যাব , (grid-files-h 3 20 "file.")তখন টাইপ করুন C-x C-eবা আপনি যদি বর্গাকার কুইরিডটি পরীক্ষা করতে চান তবে C-x 1টাইপ করুন (grid-files-sq 2 15 3 20 "f.")এবং তারপরেC-x C-e আপনার কিছু দেখতে হবে 2x3 গ্রিড

এটি সম্ভবত আরও ভাল / আরও দক্ষতার সাথে করা যেতে পারে, তবে এটি একটি শুরু এবং এটি আমার যা করা দরকার তা করে (ক্রমান্বয়ে নামযুক্ত ছোট ফাইলগুলির একটি গুচ্ছ প্রদর্শন করুন)। উন্নত বা পুনঃব্যবহার করতে নির্দ্বিধায়


1

আমি বিভিন্ন প্রকল্পের জন্য নিয়মিত ইম্যাক্সে একাধিক ফ্রেম (ওএসএক্স উইন্ডোজ) ব্যবহার করি। আমি প্রথমে কিছু ফ্রেম সেটআপ করে কীভাবে বাম এবং ডান উইন্ডোতে বিভক্ত করেছিলাম তা এখানে।

  (defun make-maximized-split-frame (name)
    (let (( f (make-frame (list (cons 'name  name))) ))
      (maximize-frame f)
      (split-window (frame-root-window f) nil t)
      ))

  (make-maximized-split-frame "DocRaptor")
  (make-maximized-split-frame "Gauges")
  (make-maximized-split-frame "Instrumental")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.