ইন করতে Shift + আপ টার্মিনালে গিয়ে Emacs দ্বারা স্বীকৃত হয় না আমি কিভাবে ব্যাখ্যা টার্মিনাল পালাবার ক্রম মধ্যে সবচেয়ে ফাংশন কি অনুবাদ কারণ অ্যাপ্লিকেশন এবং টার্মিনাল প্রেরণ অক্ষর (বরং বা বাইটস), না কী মধ্যে ইন্টারফেস। কেবলমাত্র কয়েকটি সংশোধক + অক্ষর সংমিশ্রণের নিজস্ব চরিত্র রয়েছে:
- Ctrlবরাবর একটি চিঠি বা একটিতে
@[\]^_
বাইট 0-03 (এএসসিআইআই নিয়ন্ত্রণ অক্ষর ) রূপান্তর করে ।
- প্রায়শই Ctrl+ ?বাইট 127 এ পরিবর্তিত হয় এবং Ctrl+ + (বাইট 0) এর Spaceসমান ।Ctrl@
- কিছু ফাংশন কীগুলি অক্ষর নিয়ন্ত্রণের সমতুল্য: Tab= Ctrl+ I, Return= Ctrl+ M, Esc= Ctrl+ [।
- এবং Backspace= Ctrl+ Hবা Ctrl+ ?কনফিগারেশনের উপর নির্ভর করে। ইম্যাক্সের জন্য Ctrl+ ?আরও সুবিধাজনক, যেহেতু Ctrl+ Hসাহায্য help
- Meta+ চরিত্র অনুসারেcharacter প্রেরণ করা Escহয় ।
সুতরাং অন্যান্য সংমিশ্রণগুলি যেমন Ctrl+ ;বা Ctrl+ Shift+ সম্পর্কে letterকী? যেহেতু কোনও অনুরূপ অক্ষর নেই, টার্মিনালটি হয় একটি অক্ষর পুনরায় ব্যবহার করতে হবে বা একটি পালানোর ক্রম পাঠাতে হবে। অনেকগুলি টার্মিনাল প্রাসঙ্গিক অক্ষর না থাকায় সংশোধকগুলিকে অগ্রাহ্য করে, সুতরাং আপনি Ctrl+ ;প্রেরণ ;
, Ctrl+ Shift+ letterসমতুল্য Ctrl+ letterইত্যাদি সমাপ্ত হন
টার্মিনাল বিক্রেতারা দীর্ঘদিন ধরে সাধারণ কাজটি করে চলেছেন। পালানোর ক্রমগুলির জন্য কোনও মানদণ্ড ছিল না, যা স্ব-স্থায়ী ছিল - টার্মিনাল বিক্রেতারা এটি প্রয়োগ করে না, অ্যাপ্লিকেশনগুলি এটি সমর্থন করে না, ব্যবহারকারীরা এটি আশা করে না expect কিছু টার্মিনাল এমুলেটরগুলি নির্বিচারে পালানোর সিকোয়েন্সগুলি প্রেরণের জন্য কনফিগার করা যেতে পারে, তাই আপনার যদি এটি করতে পারে তবে আপনি এটিটি কনফিগার করতে পারেন এবং ইমাকগুলিতে এস্কেপ সিকোয়েন্সগুলি ঘোষণা করতে পারেন (আরও পরে এটি)।
ইদানীং, পরিস্থিতি পরিবর্তিত হচ্ছে, কারণ পালানোর ক্রমকে মানিক করার জন্য দুটি প্রস্তাব এসেছে। একটি সিনট্যাক্স সহ লিওনার্ডের লিবার্টার্মকি । অন্যটি সিনট্যাক্স সহ টমাস ডিকির এক্সটার্ম । এক্সটার্মের বর্তমান সংস্করণগুলি (≥216) রিসোর্স সেট করে উভয়ই সিনট্যাক্সের জন্য কনফিগার করা যেতে পারে ; কোনও ননজারো মান সেট করে বৈশিষ্ট্যটি অবশ্যই সক্রিয় করতে হবে ।ESC [ codepoint ; modifier u
ESC [ 2 7 ; modifier ; codepoint ~
formatOtherKeys
modifyOtherKeys
যদি আপনার টার্মিনাল এমুলেটর এই সিনট্যাক্সগুলিকে সমর্থন করে না তবে কনফিগার করা যায় তবে তা বেছে নিন।
Emacs 24.4 যেহেতু, modifyOtherKeys
টার্মিনালটি xterm সংস্করণ ≥216 হয় তা সনাক্ত করে ইমাসগুলি স্বয়ংক্রিয়ভাবে বৈশিষ্ট্যটি চালু করে । এনকোড কীগুলির জন্য ইমাক্সের এস্কেপ সিকোয়েন্সগুলি সনাক্তকরণ ভেরিয়েবলের মাধ্যমে কাজ করে local-function-key-map
। Emacs 24.4 হিসাবে, সমস্ত পালানোর ক্রম সমর্থিত নয়। কাজটি শেষ করতে আপনি আপনার ডিআইডি ফাইলে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।
;; xterm with the resource ?.VT100.modifyOtherKeys: 1
;; GNU Emacs >=24.4 sets xterm in this mode and define
;; some of the escape sequences but not all of them.
(defun character-apply-modifiers (c &rest modifiers)
"Apply modifiers to the character C.
MODIFIERS must be a list of symbols amongst (meta control shift).
Return an event vector."
(if (memq 'control modifiers) (setq c (if (or (and (<= ?@ c) (<= c ?_))
(and (<= ?a c) (<= c ?z)))
(logand c ?\x1f)
(logior (lsh 1 26) c))))
(if (memq 'meta modifiers) (setq c (logior (lsh 1 27) c)))
(if (memq 'shift modifiers) (setq c (logior (lsh 1 25) c)))
(vector c))
(defun my-eval-after-load-xterm ()
(when (and (boundp 'xterm-extra-capabilities) (boundp 'xterm-function-map))
(let ((c 32))
(while (<= c 126)
(mapc (lambda (x)
(define-key xterm-function-map (format (car x) c)
(apply 'character-apply-modifiers c (cdr x))))
'(;; with ?.VT100.formatOtherKeys: 0
("\e\[27;3;%d~" meta)
("\e\[27;5;%d~" control)
("\e\[27;6;%d~" control shift)
("\e\[27;7;%d~" control meta)
("\e\[27;8;%d~" control meta shift)
;; with ?.VT100.formatOtherKeys: 1
("\e\[%d;3u" meta)
("\e\[%d;5u" control)
("\e\[%d;6u" control shift)
("\e\[%d;7u" control meta)
("\e\[%d;8u" control meta shift)))
(setq c (1+ c))))))
(eval-after-load "xterm" '(my-eval-after-load-xterm))
যদি TERM
পরিবেশের পরিবর্তনশীলকে সেট করা না হয় xterm
বা যেমন কোনও বৈকল্পিক থাকে xterm-256color
, তবে ইমাসগুলি সেগুলিগুলি সক্রিয় করবে না। যদি ইমাক্স এর মান ইতিমধ্যে আপনার মানটির জন্য TERM
সমর্থন করে থাকে তবে আপনি উপরের মত অনুরূপ একটি ফাংশন সংজ্ঞায়িত করে সমর্থন যোগ করতে পারেন, যার নামটির মান লিস্প ফাইলটি লোড করারTERM
পরে কার্যকর করা হবে । এ গিয়ে Emacs ধরনের কোনো সমর্থন থাকে, তাহলে আপনি এটি একটি সাব নামক তৈরি করে যুক্ত করতে পারেন term
আপনার কোথাও load-path
, এবং নামক একটি পাতার মর্মর ফাইল তৈরি term/$TERM.el
যেখানে $TERM
মান TERM
, একটি ফাংশন বলা সংজ্ঞা terminal-init-$TERM
।
আমি যেমন লিখছি, দেখে মনে হচ্ছে যে এক্সটার্ম ব্যতীত কয়েকটি টার্মিনাল এমুলেটরগুলি এই পালানোর ক্রমগুলি গ্রহণ করেছে। ওএসএক্স-এ, আপনি প্রতিটি কী সংমিশ্রনের জন্য একটি করে একটি এস্কেপ সিকোয়েন্সটি নির্বাচন করে আইটির্ম 2 কনফিগার করতে পারেন ।
C-;
এবং তারপরেM-x view-lossage
এটি ইমাসেও পৌঁছেছে কিনা তা দেখতে ব্যবহার করুন ।