কিভাবে ইম্যাক্সে একাধিক শেল চালানো যায়


147

আমি উইন্ডোজ E-এ ইম্যাক্স 23.3.1 ব্যবহার করছি I আমি জানি যে আমি এমএক্স শেল ব্যবহার করে ইম্যাক্স থেকে শেল চালাতে পারি। আমি একই সাথে একাধিক শেল উইন্ডো রাখতে চাই তবে এমএক্স শেলটি দ্বিতীয়বার টাইপ করলে ঠিক একই শেল উইন্ডোটি খোলে।

বিভিন্ন শেল উইন্ডো থাকার কোনও উপায় আছে কি?

উত্তর:


210

C-u M-x shell এটা করবো.

এটি নতুন শেলের একটি নামের জন্য অনুরোধ করবে, কেবলমাত্র ডিফল্টর জন্য ফিরে আসবে (যা এরকম কিছু হবে *shell*<2>

এছাড়াও eshell সঙ্গে কাজ করে।

আরেকটি কৌশল, যদি আপনি এসেল ব্যবহার করেন: ঠিক যেমনটি M-x eshellআপনাকে পুনরায় নিয়ে যায় *eshell*(নতুন এসেল শুরু করার পরিবর্তে), আপনি যদি একটি সংখ্যার উপসর্গ যুক্তি ব্যবহার করেন তবে আপনাকে সেই এসেল বাফারে নিয়ে যাবে। উদাহরণস্বরূপ, C-3M-xeshellআপনাকে নিতে হবে *eshell*<3>। দুর্ভাগ্যক্রমে আপনি শেল ব্যবহার না করে (এসেলের পরিবর্তে), এই কৌশলটি কাজ করে না বলে মনে হচ্ছে (আমার এম্যাক্স 24.0.50.1 এ কমপক্ষে)


1
ঠিক আছে, এটি কাজ করে। Cu Mx শেলটি আমাকে নতুন শেলের নাম জিজ্ঞাসা করে। ধন্যবাদ!
এস 4 এম

1
কোনও সমস্যা নেই S4M। আমি এসহেলের জন্য একটি টিপ যোগ করেছি; যেমন আপনি শেল সম্পর্কে জিজ্ঞাসা করেছিলেন আমি জানি না আপনি এটি দরকারী খুঁজে পেয়েছেন কিনা, তবে একই প্রশ্ন সহ অন্যান্য ব্যবহারকারীরা এটি দরকারী বলে মনে করতে পারেন।
ম্যাট কার্টিস

ধন্যবাদ, ম্যাট কিউ এখানে / কি মানে?
টিম

4
C-uকমান্ড চালায় universal-argument। এটি পরবর্তী কমান্ডে একটি যুক্তি ইনজেকশনের একটি উপায়। আপনি এটির সাথে আরও পড়তে পারেন C-h k C-u( C-h kরানগুলি describe-key, খুব সহজ!)
ম্যাট কার্টিস

তারপরে C-h f eshell( C-h fরান describe-function) দেখায় যে ফাংশনটি eshellএকটি alচ্ছিক আর্গুমেন্ট নেয়। উদ্ধৃতি: একটি সংখ্যার উপসর্গ আর্গ (যেমন হিসাবে C-u 42 M-x eshell RET) সেই সংখ্যাটি নিয়ে সেশনে স্যুইচ করে, প্রয়োজনে এটি তৈরি করে। একটি সংখ্যাসূচক উপসর্গটির অর্থ একটি নতুন সেশন তৈরি করা।
ম্যাট কার্টিস

34

আপনি নিজের শেলটির বাফারের সাথে নাম পরিবর্তন করতে পারেন M-x rename-buffer। তারপরে আপনি দ্বিতীয় শেলটি চালু করতে সক্ষম হবেন।


2
আমি ম্যাট কার্টিসের সমাধান নিয়ে যেতে পছন্দ করি। নতুন নামের অধীনে শেল চালানো আমার কাছে বর্তমানের নাম পরিবর্তন করে তারপরে একটি নতুন চালনার চেয়ে সহজ বলে মনে হচ্ছে।
এস 4 এম



5

চার বছরেরও বেশি সময় পরে, আমি দেখতে পাচ্ছি যে কিছু লোক এখনও মাঝে মাঝে এই সমস্যাটি দেখছে, তাই আমি একটি শেল লোড করতে এবং এর নাম জিজ্ঞাসা করার জন্য লিখেছিলাম একটি দ্রুত ফাংশন প্রকাশ করব। এইভাবে আপনি কোনও শেলটির নাম রাখতে পারেন "বাছাই করা ফাইলগুলি" যদি এটি ফাইলগুলি বাছাই করার জন্য উত্সর্গীকৃত হয় এবং অন্য একটি "মধুচন্দ্রি" যদি এটি মাতাল কোয়েরি চালাতে উত্সর্গীকৃত হয়। আমি এখন প্রতিদিন ব্যবহার করি (ইমেক্স 24 এ):

(defun create-shell ()
    "creates a shell with a given name"
    (interactive);; "Prompt\n shell name:")
    (let ((shell-name (read-string "shell name: " nil)))
    (shell (concat "*" shell-name "*"))))

4

আপনি যে কোনও বাফার ব্যবহার করছেন না কেন এটি এটি একটি নতুন শেল উদাহরণ স্বয়ংক্রিয়ভাবে উত্পন্ন করবে; এটি এমএস বা এর মতো কিছুতে এবং তাত্ক্ষণিক আনন্দের সাথে আবদ্ধ করুন:

(defun new-shell ()
  (interactive)

  (let (
        (currentbuf (get-buffer-window (current-buffer)))
        (newbuf     (generate-new-buffer-name "*shell*"))
       )

   (generate-new-buffer newbuf)
   (set-window-dedicated-p currentbuf nil)
   (set-window-buffer currentbuf newbuf)
   (shell newbuf)
  )
)

ফলাফল আরও ভয়াবহ প্রথম বন্ধনীর পরেও চলুন, লেট ব্যবহার করে পুনর্লিখনের জন্য সুপারিশ করার জন্য ফিলসকে অনেক ধন্যবাদ ...: \


1
আপনার letযদি ভেরিয়েবলগুলি স্থানীয় ব্যবহারের উদ্দেশ্যে তৈরি করা হয় তবে তাদের বেঁধে রাখতে হবে। যেমনটি এখন আপনার কাছে বৈশ্বিক মান আছে currentbufএবং newbuf
ফিল্ডস

নতুন শেল ফাংশনটি কীভাবে আমার তৈরি শেল ফাংশনটির সাথে তুলনা করে?
এস

1
@ এস 4 এম এটি মূলত পছন্দের ইস্যু, আমি অলস এবং অবিলম্বে আমার শেলটি চাই, বর্তমানে সক্রিয় উইন্ডোতে এবং সামনে কোনও বারফের্নাম টাইপ না করেই shell
বিজেডদইয়ু

@ ফিলিপস টিপটির জন্য ধন্যবাদ, আমি লিস্পের সাথে মোটেও পরিচিত নই তাই স্থানীয় অ্যাসাইনমেন্টটি ব্যবহার করে এটি পুনরায় কাজ করবে: :-)
বিজেডডায়ু

হুম, আমি মনে করি আপনি আমার ফাংশনটি গ্রহণ করতে পারেন এবং একটি ডিফল্ট নাম যুক্ত করতে পারেন যা শেল_এন এর মতো কিছু হবে , যেখানে এন- থ্রি শেল খোলা থাকবে, যখন সি- ক্রু -শেল শেলের জন্য একটি নাম প্রম্পট করবে।
এস

0

এটি প্রতিবার আপনি যখন ফাংশনটি শুরু করবেন তখন একটি নতুন শেল খুলবে এবং প্রয়োজনে স্বয়ংক্রিয়ভাবে এটির পুনরায় নামকরণ করবে। যুক্ত হওয়া যুক্তটি হ'ল যদি আপনি ফাইলগুলি দূর থেকে সম্পাদনা করেন (ডায়ার্ড / ট্রাম্প ...), এটি দূরবর্তী হোস্টের একটি শেল খুলবে এবং রিমোট হোস্টনামের সাথে এটি স্বয়ংক্রিয়ভাবে নাম পরিবর্তন করবে:

(defun ggshell (&optional buffer)
(interactive)
(let* (
       (tramp-path (when (tramp-tramp-file-p default-directory)
             (tramp-dissect-file-name default-directory)))
       (host (tramp-file-name-real-host tramp-path))
       (user (if (tramp-file-name-user tramp-path)
         (format "%s@" (tramp-file-name-user tramp-path)) ""))
       (new-buffer-nameA (format "*shell:%s*" host))
       (new-buffer-nameB (generate-new-buffer-name new-buffer-nameA))
       (currentbuf (get-buffer-window (current-buffer)))
       )
  (generate-new-buffer new-buffer-nameB)
  (set-window-dedicated-p currentbuf nil)
  (set-window-buffer currentbuf new-buffer-nameB)
  (shell new-buffer-nameB)
  ))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.