ব্যাশে শর্টকাটগুলির পুনর্নির্মাণের জন্য টার্মিনাল কী কোডগুলির একটি তালিকা আমি কোথায় পাই?


42

উদাহরণ স্বরূপ:

"\e[1;5C"
"\e[Z"
"\e-1\C-i"

আমি কেবল বিট এবং টুকরোগুলি জানি, যেমন \eপালানোর C-জন্য এবং এর জন্য দাঁড়ায় Ctrlতবে এই সংখ্যাগুলি ( 1) এবং বর্ণগুলি ( Z) কী? কি কি ;, [এবং -এর পথচিহ্ন?

কেবলমাত্র পরীক্ষা এবং ত্রুটি রয়েছে, বা বাশ কী কোডগুলির একটি সম্পূর্ণ তালিকা এবং তাদের সিনট্যাক্সের ব্যাখ্যা রয়েছে?


2
প্রকৃত readline তালিকা জন্য একটি অতিরিক্ত ডগা বাইন্ডিং শেল হল bind -p

1
এই জাতীয় বেশিরভাগ কোডগুলি আপনার টার্মিনাল দ্বারা ব্যাখ্যা করা হয়; একটি বৃহত তালিকার জন্য উইকিপিডিয়ায় এএনএসআই পলায়নের কোডগুলি পড়ুন ।
চিপনার

stty -a টার্মিনালের লাইন সেটিংস প্রদর্শন করে
বাগ

উত্তর:


52

এগুলি হ'ল আপনার প্রদত্ত কী টিপলে আপনার টার্মিনালের পাঠানো অক্ষরের ক্রম ences প্রতি সেফ বাশ বা রিডলাইনের সাথে কিছুই করার নেই, তবে আপনি যদি readlineকোনও প্রদত্ত কী প্রেসের উপর কিছু করার জন্য কনফিগার করতে চান তবে প্রদত্ত কী বা কী সংমিশ্রণগুলি অক্ষরগুলির ক্রমটি পাঠায় তা আপনি জানতে চাইবেন ।

আপনি Aকী aটিপলে , সাধারণত টার্মিনালগুলি (0x61) অক্ষরটি প্রেরণ করে । আপনি টিপলে <Ctrl-I>বা <Tab>, তারপর সাধারণত পাঠাতে ^Iচরিত্র নামেও পরিচিত TABবা \t(0x9)। বেশিরভাগ ফাংশন এবং নেভিগেশন কীগুলি অক্ষরের একটি ক্রম প্রেরণ করে যা ^[(কন্ট্রোল- [) থেকে শুরু হয় ESCবা \e(0x1 বি, 033 অক্টাল) নামে পরিচিত , তবে সঠিক ক্রমটি টার্মিনালে পরিবর্তিত হয়।

কী বা কী সংমিশ্রণটি আপনার টার্মিনালের জন্য কী প্রেরণ করে তা চালানোর সেরা উপায় এবং এটি কী -বোর্ডে sed -n lটাইপ করার পরে Enter। তারপরে আপনি এমন কিছু দেখতে পাবেন:

$ sed -n l
^[[1;5A
\033[1;5A$

প্রথম লাইনটি echoটার্মিনাল ডিভাইস দ্বারা স্থানীয় টার্মিনাল দ্বারা সৃষ্ট হয় (এটি নির্ভরযোগ্য না কারণ টার্মিনাল ডিভাইস সেটিংস এটি প্রভাবিত করে)।

দ্বিতীয় লাইনটি আউটপুট হয় sed$অন্তর্ভুক্ত করা হয় না করা, এটি শুধুমাত্র আপনাকে দেখাতে যেখানে লাইন শেষ হয় না।

সর্বোপরি তার মানে Ctrl-Up(যা আমি চাপা থাকেন) 6 অক্ষর পাঠাতে ESC, [, 1, ;, 5এবং A(0x1b 0x5b 0x31 0x3b 0x35 0x41)

terminfoডাটাবেসের টার্মিনাল একটি নম্বর (উপর ভিত্তি করে সাধারণ চাবি একটি সংখ্যা জন্য ক্রম একটি সংখ্যা রেকর্ড $TERMমান)।

এই ক্ষেত্রে:

TERM=rxvt tput kdch1 | sed -n l

আপনি বলবেন কি পালাবার ক্রম দ্বারা পাঠাতে হবে rxvtটিপে উপর Deleteকী।

আপনার বর্তমান টার্মিনালের সাথে প্রদত্ত ক্রমের সাথে কী কী সামঞ্জস্য করে তা আপনি এখানে দেখতে পারেন infocmp(এখানে ncursesইনফোক্যাম্প ধরে নিচ্ছেন):

$ infocmp -L1 | grep -F '=\E[Z'
    back_tab=\E[Z,
    key_btab=\E[Z,

মূল সংমিশ্রণের মতো ডাটাবেসে Ctrl-Upসংশ্লিষ্ট এন্ট্রি নেই terminfo, সুতরাং তারা কী প্রেরণ করে তা সন্ধানের জন্য, সংশ্লিষ্ট টার্মিনালের উত্স বা নথিপত্র পড়ুন বা sed -n lউপরে বর্ণিত পদ্ধতিতে এটি ব্যবহার করে দেখুন।


এটি একটি দুর্দান্ত ব্যাখ্যা, ধন্যবাদ! এখন এটি সমস্ত স্থানে পড়ে, \e-1\C-iএকটি পিছনের ট্যাব, কারণ controlএবং iএকটি ট্যাব সন্নিবেশ করায় এবং escapeএরপরে -1এটি একবার পিছনে করার জন্য বাশ বলে (আমি এটি গুগল করেছিলাম এবং কিছু জিনিস পেয়েছি digit-arguments)।
বাগ

$ sed -n 1 sed: -e expression #1, char 1: missing command
cnvzmxcvmcx

3
@vib। এটি ছোট হাতের
এলটি

1
@ ব্যবহারকারী367890, এটি কিপ্যাড মোডের নিচে । আপনি সম্ভবত যে পরে পাবেন tput smkx, আপনার টার্মিনাল পাঠায় \e[OD( kcub1) এবং পরে tput rmkx, \e[D( cub1, ক্রম হিসাবে একই কোডটি প্যাচসমূহ বাঁদিকে কার্সার, যাতে প্রতিধ্বনি ঐ কি কার্সার সরানোর নেই। চেষ্টা করে দেখুন stty -echoctl; tput rmkx; sleep infএবং আপনি দেখতে পাবেন কিপ্যাড মোডে না থাকলে তীর কীগুলি কার্সারটি সরিয়ে দেয় )।
স্টাফেন চেজেলাস

1
@ ইউজার 367890, থমাস যা বলেছে তা থেকে (ncurses এবং xterm রক্ষণাবেক্ষণকারী) আপনি যে উত্তরটি যুক্ত করেছেন তাতে হ্যাঁ, এটি কাজ করা উচিত। কীপ্যাড মোড বা অ্যাপ্লিকেশন মোড একই জিনিসকে বোঝায়, সুতরাং (আবার, থমাসের মতে) টার্মিনো ডাটাবেসের মূল স্পেসিফিকেশন যখন স্মোকএক্স সক্ষম করা থাকে তখন।
স্টাফেন চেজেলাস

4

এটি gnu রিডলাইন লাইব্রেরির মাধ্যমে সরবরাহ করা হয়। আপনি মধ্যে হওয়া উচিত ম্যান 3 readline সেখানের বর্ণনা খুঁজে বের করতে।

দেখে মনে হচ্ছে এস্কেপ কোডের পছন্দগুলি \[Aকী বোঝায় সে সম্পর্কে আপনারও তথ্য দরকার । আপনি উইকিপিডিয়া এএনএসআই এসাকাপ কোড নিবন্ধে এই তথ্যটি পেতে পারেন ।


এটি আমার উদাহরণগুলি ব্যাখ্যা করে না।
বাগ

দেখে মনে হচ্ছে এটি ছোট ভুল বোঝাবুঝি। উত্তর আপডেট দেখুন।
রাশ

নিবন্ধে আমার নির্দিষ্ট উদাহরণ সম্পর্কে কোনও তথ্য নেই। "[এ" - এর জন্য একটি পৃষ্ঠাগুলি অনুসন্ধানের ফলে কিছুই ফেরেনি।
বাগ

1
@ বাগ দয়া করে নিবন্ধটি মনোযোগ সহকারে পড়ুন। \[Aসারণির মধ্যে "সিএসআই কোডস" সারণিতে রয়েছে: "সিএসআই এন এ"
রাশ

ধন্যবাদ নলখাগড়া, কিন্তু আমি ব্যাখ্যা খুঁজে না [Z, [1;5Cঅথবা -1?
বাগ

3

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


আমি "\ e [1; 5C" টি সিটিআরএল-তীর ফরোয়ার্ড শব্দের চলনের জন্য এবং অন্যান্য টিউটোরিয়ালে মেনু-সম্পূর্ণ-পিছনের দিকে "\ e [Z" এবং "\ e-1 \ Ci" ব্যবহার করতে পেলাম। এগুলি সমস্ত .inputrc ফাইলের অভ্যন্তরে ব্যবহৃত হয়েছে।
বাগ

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

0

কোনও কী বা কী কম্বো দ্বারা কী পালানো সিকোয়েন্স তৈরি হয় তা যাচাই করার সহজতম উপায়টি হ'ল টার্মিনালে Ctrl+ টিপুন vএবং তারপরে আপনি যে কী / কম্বোটি জানতে চান সেটি টিপুন।

তোমার মত ক্রম পাবেন ^[Oaএবং আপনার অনুবাদ করতে হবে ^[মধ্যে \eবা \033বা \x1bএস্কেপ অক্ষর জন্য আপনার keybinding সিস্টেম আশা বা যাই হোক না কেন অন্য উপস্থাপনা।

এটি quoted-insertইম্যাকস নামের একটি ফাংশন হিসাবে শুরু হয়েছিল এবং যেহেতু বাশ এবং জ্যাশ মিমিক ইমাক্সের জন্য ডিফল্ট কীবাইন্ডগুলি রয়েছে, তারা এটিও অনুলিপি করে।

বাশ এটি জিএনইউ রিডলাইন ইনপুট লাইব্রেরির মাধ্যমে পায় যা পাইথনের import rlcompleterবর্ধিতকরণের মতো অন্যান্য জিনিসও ব্যবহার করে।

রিডলাইন ম্যানুয়াল থেকে বর্ণনা এখানে দেওয়া হয়েছে :

quoted-insert( C-qবা C-v)

লাইনের ভার্ব্যাটিমে টাইপ করা পরবর্তী অক্ষর যুক্ত করুন। C-qউদাহরণস্বরূপ কী কী সিকোয়েন্সগুলি সন্নিবেশ করা যায় এটি ।

এটি জিএনইউ রিডলাইন ভিত্তিক যে কোনও ক্ষেত্রে কাজ করা উচিত ।

জেডএসের ক্ষেত্রে, যা জেডএলই নামের নিজস্ব বিকল্প ব্যবহার করে, এটি কেবলমাত্র C-qভায়ো মোডে থাকার সময় মূল ইম্যাক্স বন্ডিংকে সম্মান করে, এটি যথেষ্ট যথেষ্ট, তবে C-vতবুও ডিফল্ট ইম্যাক্স-এর মতো ইনপুট মোডে কাজ করে। (জন্য অনুসন্ধান করুন quoted-insertমধ্যে zshzleবা zshall` manpages এবং ফলাফল ডিফল্ট keybinds তালিকা উচিত thesecond যুগল।)

একটি স্মৃতিসম্বন্ধীয় জন্য, আমি চিন্তা উপদেশ Ctrl+ + vএটা জন্য জিজ্ঞাসা হিসাবে বনাম erbatim।

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