শিফট-অ্যারো টিএমাক্সের মধ্যে ইম্যাকগুলিতে কাজ করছে না


26

আমি সম্প্রতি tmux ব্যবহার করা শুরু করেছি (এর আগে স্ক্রিন ব্যবহারকারী ছিল) এবং একটি ছোট সমস্যা বাদে আমি এটি ভালবাসি। আমি আমার টিএমউक्स সেশনের মধ্যে ইম্যাক্স ব্যবহার করি এবং আমি ইমাস উইন্ডোজ (টিএমউक्स উইন্ডো নয়) এর মধ্যে স্থানান্তর করতে শিফট-তীর কী ব্যবহার করতে অভ্যস্ত। Tmux- র মধ্যে চলার সময়, এই বাইন্ডিংগুলি সম্পূর্ণরূপে কাজ করা বন্ধ করে দেবে বলে মনে হচ্ছে (এগুলি এ্যাম্যাক্সে নিবন্ধন করার মতো নয়)। যদি আমি tmux থেকে প্রস্থান করি এবং আমার শেলটিতে কেবল ইম্যাকগুলি চালাই তবে তারা ঠিকঠাক কাজ করে।

আমি আইটির্ম 2 ব্যবহার করছি, লিনাক্স বাক্সে ssh'd করব, সেখানে tmux / emacs চালাচ্ছি। আমার .emacs এ নিম্নে শিফট-তীর কী বাইন্ডিংস সেট আপ হয়েছে:

(global-set-key "\M-[1;2A" 'windmove-up)
(global-set-key "\M-[1;2B" 'windmove-down)
(global-set-key "\M-[1;2C" 'windmove-right)
(global-set-key "\M-[1;2D" 'windmove-left)

Tmux এ চলমান না থাকাকালীন, আমি নিশ্চিত করতে পারি যে এগুলি হ'ল শিফট-তীর কী সংমিশ্রণের জন্য ইম্যাক্সে সিকিউ করে এবং তারপরে কী সিকোয়েন্সটি টিপে সঠিক চরিত্রের অনুক্রমগুলি। Tmux এর মধ্যে, এমনকি এটি কাজ করে না কারণ এটি শিফট-অ্যারো কীপ্রেস থেকে কোনও ইনপুট দেখায় না বলে মনে হয় (এটি কেবল সিকিউ প্রম্পটে বসে)।

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

শিফট-তীর কীগুলি টিএমউক্সের মধ্যে আবার কীভাবে কাজ করা যায় সে সম্পর্কে কোনও ধারণা?


1
আমি আসলে উত্তরটি নিজেই পেয়েছি তবে স্ট্যাক এক্সচেঞ্জ আমাকে আরও 7 ঘন্টা আমার নিজের প্রশ্নের উত্তর আনুষ্ঠানিকভাবে দিতে দেবে না কারণ এখনও আমার যথেষ্ট সুনাম নেই। যাইহোক যদি কেউ আগ্রহী হন, সেট-উইন্ডো-অপশন এক্সটারম-কীগুলি এটি করা ঠিক করে মনে হচ্ছে। উপর সেট উইন্ডো-বিকল্প -G xterm-কী-সমূহ: আমি আমার .tmux.conf এই নির্বাণ দ্বারা একটি বিশ্বব্যাপী বিকল্প হিসাবে এই সেট এবং স্বাভাবিক অবস্থায় ফিরিয়ে আনব হবে বলে মনে হচ্ছে
triangle_man

আপনি যদি সত্যিই না পারেন তবে প্রশ্নটি বন্ধ করার জন্য ভোট দেওয়ার চেষ্টা করুন
Eir Nym

উত্তর:


13

প্রথমে আপনার টিআরএম প্রতিটি অবস্থানে সঠিক কিনা তা নিশ্চিত করুন:

  • xtermxterm-256colorআপনার আইটার্ম 2 উইন্ডোতে আপনার স্থানীয় শেলটির অভ্যন্তরে কিছু (উদাহরণস্বরূপ )
  • xtermলিনাক্স সিস্টেমে SSHing পরে আপনার শেল ভিতরে -something
    এই যাই হোক না কেন আপনি স্থানীয়ভাবে ব্যবহার করছেন হিসাবে একই হওয়া উচিত iTerm2 , যেহেতু, SSH দূরবর্তী পাশ থেকে বরাবর এটি ক্ষণস্থায়ী হবে (এবং, সবচেয়ে গুরুত্বপূর্ণভাবে, দূরবর্তী পাশ অন্ধ অগ্রাহ্য করা উচিত হবে না শেল প্রারম্ভিকরণ ফাইলের মান)।
  • screenলিনাক্স সিস্টেমে tmux এরscreen-256color আওতায় চলতে থাকা আপনার শেলের ভিতরে কিছু (যেমন ) আপনার সর্বদা tmux এর ভিতরে একটি বেসড TERM ব্যবহার করা উচিত ।
    screen

একটি হচ্ছে xtermশব্দটি অবিলম্বে বাইরে tmux অনুমতি দেবে tmux নির্দেশক তীরচিহ্নগুলি পরিবর্তিত চিনতে, কিন্তু এটা মাধ্যমে যদি না আপনি তার আছে তাদের পাস করা হবে না xterm-keysউইন্ডোতে বিকল্প চালু হয়েছে। ~/.tmux.confএটি আপনার লিনাক্স সিস্টেমে রাখুন :

set-window-option -g xterm-keys on

স্থানান্তরিত কীগুলির ক্রমগুলি এখন এটি ইম্যাক্সের মাধ্যমে করা উচিত , একটি এসটিএইচ সংযোগ জুড়ে, আইটিার্ম 2 উইন্ডোর অভ্যন্তরে tmux এর মধ্যে চলছে ।


Tmux এ টেক্সটএডপেট ব্যবহার করার জন্য আমার ঠিক এটি দরকার ছিল।
উইলিয়াম হিলটন

1
এই সমাধানটি আমার পক্ষে কার্যকর হয়নি। আমি জিনোম-টার্মিনাল ব্যবহার করে ফেডোরা -৩৩ এ আছি। আমার TERM এবং .tmux.conf উত্তরে বর্ণিত হিসাবে সেট করা আছে। প্রশ্নে বর্ণিত বাইন্ডিংগুলি সেট করা কাজ করে। আমি সত্যিই এই রহস্যটি সমাধান করতে চাই যেহেতু এটি যে ncurses অ্যাপ্লিকেশনটিতে কাজ করছি তাও তৈরি করছে।
গোগেটর

1
@gogators এখানে একই; উপরোক্ত সমাধানটি আমার পক্ষে কার্যকর হয় না যদিও আমার কাছে যা প্রস্তাবিত হয়েছিল ঠিক তেমনটিই ছিল।
ফিঙ্গলফিন

Ctrl + Shift কাজ করে না, Ctrl + <f #> কাজ করে না ইত্যাদি ইত্যাদি। Ctrl + d যদিও কাজ করে।
এভিপি

অনুশীলনে এর অর্থ: export XTERM=xterm-256color(আমি এই ইঙ্গিতটি লিখছি কারণ উত্তরে "আপনার টিআরএম" এর অর্থ কী তা আমি জানতাম না, আমি এমন একটি মন্তব্য খুঁজছিলাম যার ব্যাখ্যা দিয়েছিলাম যে ... সেখানে কিছুই ছিল না, এবং এখন একটি আছে।)
জেগেদাস

3

প্রথমে আপনাকে অবশ্যই xterm-keysআপনার টিএমউক্স কনফিগারেশনে সক্ষম করতে হবে । সুতরাং নিম্নলিখিত লিখুন~/.tmux.conf

setw -g xterm-keys on

তবে, এটি অন্যান্য কী সংমিশ্রণগুলি ভেঙে দেবে। এগুলি ঠিক করতে আপনার ~/.emacsবা ~/.emacs.d/init.elকনফিগারেশনে নিম্নলিখিতটি লিখুন

;; handle tmux's xterm-keys
;; put the following line in your ~/.tmux.conf:
;;   setw -g xterm-keys on
(if (getenv "TMUX")
    (progn
      (let ((x 2) (tkey ""))
    (while (<= x 8)
      ;; shift
      (if (= x 2)
          (setq tkey "S-"))
      ;; alt
      (if (= x 3)
          (setq tkey "M-"))
      ;; alt + shift
      (if (= x 4)
          (setq tkey "M-S-"))
      ;; ctrl
      (if (= x 5)
          (setq tkey "C-"))
      ;; ctrl + shift
      (if (= x 6)
          (setq tkey "C-S-"))
      ;; ctrl + alt
      (if (= x 7)
          (setq tkey "C-M-"))
      ;; ctrl + alt + shift
      (if (= x 8)
          (setq tkey "C-M-S-"))

      ;; arrows
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d A" x)) (kbd (format "%s<up>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d B" x)) (kbd (format "%s<down>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d C" x)) (kbd (format "%s<right>" tkey)))
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d D" x)) (kbd (format "%s<left>" tkey)))
      ;; home
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d H" x)) (kbd (format "%s<home>" tkey)))
      ;; end
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d F" x)) (kbd (format "%s<end>" tkey)))
      ;; page up
      (define-key key-translation-map (kbd (format "M-[ 5 ; %d ~" x)) (kbd (format "%s<prior>" tkey)))
      ;; page down
      (define-key key-translation-map (kbd (format "M-[ 6 ; %d ~" x)) (kbd (format "%s<next>" tkey)))
      ;; insert
      (define-key key-translation-map (kbd (format "M-[ 2 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
      ;; delete
      (define-key key-translation-map (kbd (format "M-[ 3 ; %d ~" x)) (kbd (format "%s<delete>" tkey)))
      ;; f1
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d P" x)) (kbd (format "%s<f1>" tkey)))
      ;; f2
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d Q" x)) (kbd (format "%s<f2>" tkey)))
      ;; f3
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d R" x)) (kbd (format "%s<f3>" tkey)))
      ;; f4
      (define-key key-translation-map (kbd (format "M-[ 1 ; %d S" x)) (kbd (format "%s<f4>" tkey)))
      ;; f5
      (define-key key-translation-map (kbd (format "M-[ 15 ; %d ~" x)) (kbd (format "%s<f5>" tkey)))
      ;; f6
      (define-key key-translation-map (kbd (format "M-[ 17 ; %d ~" x)) (kbd (format "%s<f6>" tkey)))
      ;; f7
      (define-key key-translation-map (kbd (format "M-[ 18 ; %d ~" x)) (kbd (format "%s<f7>" tkey)))
      ;; f8
      (define-key key-translation-map (kbd (format "M-[ 19 ; %d ~" x)) (kbd (format "%s<f8>" tkey)))
      ;; f9
      (define-key key-translation-map (kbd (format "M-[ 20 ; %d ~" x)) (kbd (format "%s<f9>" tkey)))
      ;; f10
      (define-key key-translation-map (kbd (format "M-[ 21 ; %d ~" x)) (kbd (format "%s<f10>" tkey)))
      ;; f11
      (define-key key-translation-map (kbd (format "M-[ 23 ; %d ~" x)) (kbd (format "%s<f11>" tkey)))
      ;; f12
      (define-key key-translation-map (kbd (format "M-[ 24 ; %d ~" x)) (kbd (format "%s<f12>" tkey)))
      ;; f13
      (define-key key-translation-map (kbd (format "M-[ 25 ; %d ~" x)) (kbd (format "%s<f13>" tkey)))
      ;; f14
      (define-key key-translation-map (kbd (format "M-[ 26 ; %d ~" x)) (kbd (format "%s<f14>" tkey)))
      ;; f15
      (define-key key-translation-map (kbd (format "M-[ 28 ; %d ~" x)) (kbd (format "%s<f15>" tkey)))
      ;; f16
      (define-key key-translation-map (kbd (format "M-[ 29 ; %d ~" x)) (kbd (format "%s<f16>" tkey)))
      ;; f17
      (define-key key-translation-map (kbd (format "M-[ 31 ; %d ~" x)) (kbd (format "%s<f17>" tkey)))
      ;; f18
      (define-key key-translation-map (kbd (format "M-[ 32 ; %d ~" x)) (kbd (format "%s<f18>" tkey)))
      ;; f19
      (define-key key-translation-map (kbd (format "M-[ 33 ; %d ~" x)) (kbd (format "%s<f19>" tkey)))
      ;; f20
      (define-key key-translation-map (kbd (format "M-[ 34 ; %d ~" x)) (kbd (format "%s<f20>" tkey)))

      (setq x (+ x 1))
      ))
    )
  )      

আর্চলিনাক্স উইকিতে আমার সমাধান রয়েছে


@ জেফক্লুকাসের মন্তব্যটি রেখে গেছে: "উইন্ডোতেও পুটইয়ের মাধ্যমে এই কাজটি করার জন্য তির্যকের উত্তরটি কেবল আমার দরকার ছিল (এটিকে মন্তব্য হিসাবে যুক্ত করার মতো খ্যাতি আমার নেই, পরিবর্তে একটি উত্তর দেওয়ার জন্য)। আমি যখন চালু করি তখন tmux- এ এক্সটার্ম-কি বিকল্পটি, শিফট-তীরটি ইমাসে 2 সি এর মতো পাঠ্য তৈরি করতে পারে my উপরের এলিজপ কোডটি আমার ইন.এল-এ যুক্ত করে, আমি প্রত্যাশিত কার্যকারিতা (বিশেষত org মোডে দরকারী) পাই। "
slm

1

tmux প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী নিম্নলিখিত এন্ট্রি ধারণ করে :

আমি কীভাবে সিআরটিএল এবং শিফট তীর কীগুলি ইমাসে কাজ করতে পারি?

terminal-init-screenফাংশন term/screen.elনতুন ফ্রেমের জন্য বলা হয়, কিন্তু এটি কোনো ফাংশন কি কনফিগার করে না।

Tmux xterm-keysবিকল্পটি চালু থাকলে, এটি xterm হিসাবে একই কীগুলি সংজ্ঞায়িত করার জন্য যথেষ্ট। এটি করতে init.elবা এটি .emacsকরতে নিম্নলিখিতগুলি যুক্ত করুন :

(defadvice terminal-init-screen
  ;; The advice is named `tmux', and is run before `terminal-init-screen' runs.
  (before tmux activate)
  ;; Docstring.  This describes the advice and is made available inside emacs;
  ;; for example when doing C-h f terminal-init-screen RET
  "Apply xterm keymap, allowing use of keys passed through tmux."
  ;; This is the elisp code that is run before `terminal-init-screen'.
  (if (getenv "TMUX")
    (let ((map (copy-keymap xterm-function-map)))
    (set-keymap-parent map (keymap-parent input-decode-map))
    (set-keymap-parent input-decode-map map))))

এবং নিশ্চিত .tmux.conf" set -g xterm-keys on" রয়েছে ।

বিকল্পভাবে, screen.elফাইলটি লোডের পথে অনুলিপি করা যায় এবং কাস্টমাইজ করা যায়।

আমি FAQ এন্ট্রির পুনঃস্থাপনের অনুরোধ করতে tmux ইস্যু # 1349 খুলেছি ।


0

সাধারণ ক্ষেত্রে, টার্মিনাল এমুলেটর কী প্রেরণ করে এবং ক্লায়েন্টের অ্যাপ্লিকেশন কী প্রত্যাশা করে তার মধ্যে মেলে না বলে এই জাতীয় সমস্যা দেখা দেয় happen

বিভিন্ন টার্মিনাল এমুলেটরগুলির স্বনির্ধারিততার বিভিন্ন ডিগ্রি থাকে, তাই নির্দিষ্ট ব্যক্তির এমুলেশন টিউনবলের সাথে নিজেকে পরিচিত করা প্রয়োজনীয়।

ক্লায়েন্ট অ্যাপ্লিকেশনগুলি (বা ) ডাটাবেসে $TERMটার্মিনাল (এমুলেটর) এর দক্ষতাগুলি অনুসন্ধান করতে ব্যবহৃত মানের উপর নির্ভর করে ।terminfotermcap

আপনার ক্ষেত্রে, আপনার ইমাস বাইন্ডিংগুলি সুস্পষ্ট সিকোয়েন্সগুলি এভাবে ব্যবহার করে $TERMএবং টার্মিনো অপ্রাসঙ্গিক: একটি নির্দিষ্ট টার্মিনাল এমুলেটর আশা করা যায় - যেমন আপনি ইতিমধ্যে আবিষ্কার করেছেন, এটি একটি xtermসামঞ্জস্যপূর্ণ।


ফিক্স টার্মিনালগুলি দেখুন - টার্মিনাল ইনপুটগুলির মধ্যে এই কয়েকটি পার্থক্য / ঘাটতিগুলিকে মানিক করার কোনও প্রস্তাবের জন্য দয়া করে । এটি উত্স 2-আলোচনায় উত্থাপিত হয়েছে তবে আমি মনে করি না কেউ এখনও এটি প্রয়োগ করেছে।
ephemient
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.