Ctrl-Backspace এবং Ctrl-Bash এ মুছুন


14

দেবিয়ান 8.3 লাগানো

stty werase '^H'

বা আর্ক লিনাক্স 2/2016 এ

stty werase '^?'

ইন .bashrc(উদাহরণস্বরূপ) তোলে Ctrl- Backspaceটার্মিনালের শেষ শব্দটি মুছুন। তবুও এটি আধুনিক জিইউআই অ্যাপ্লিকেশনগুলির মতো একই আচরণ নয় (যেমন ফায়ারফক্স): এটি শেষ শ্বেত স্পেস- বিভক্ত শব্দটি মুছে দেয় , এবং শেষ শব্দটি সাদা স্থান বা অক্ষরের দ্বারা পৃথক করা নয় . : , ; " ' & / ( )

আধুনিক জিইউআই অ্যাপ্লিকেশনগুলির অনুরূপ টার্মিনালে তৈরি করা Ctrl- Backspaceআচরণ করা কি সম্ভব ? এছাড়াও, করতে কোন উপায় আছে কি Ctrl- Deleteকার্সার সামনে অবিলম্বে শব্দ মুছে ফেলতে চান?


1
আপনার শেলটি সেই ক্রিয়াগুলিকে সমর্থন করতে পারে, যা প্রদত্ত কীতে আবদ্ধ হতে পারে।
টমাস ডিকি

@ থমাসডিকি: আমি ব্যাশ ব্যবহার করছি। এটি ঠিক বাশে কাজ করলে এটি ঠিক আছে।
নেকড়ে-রেভো-বিড়াল

উত্তর:


27

খেলতে এখানে দুটি লাইন সম্পাদক রয়েছে: কার্নেল (ক্যানোনিকাল মোড টিটিআই লাইন সম্পাদক) এবং বশের লাইন সম্পাদক (পঠন পাঠাগারটির মাধ্যমে প্রয়োগ করা হয়েছে) দ্বারা সরবরাহ করা বুনিয়াদি লাইন সম্পাদক। এগুলির উভয়েরই মুছা-পূর্ব-শব্দ কমান্ড রয়েছে যা ডিফল্টরূপে Ctrl+ এ আবদ্ধ W। ক্যানোনিকাল মোড টিটিআই লাইন সম্পাদকের মাধ্যমে কীটি কনফিগার করা যেতে পারে stty werase; বাশ তার নিজস্ব কনফিগারেশনে ওভাররাইড না করা হলে টিটি সেটিংসে এটি কী-র বাইন্ডিংটি সন্ধান করে।

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

পূর্ববর্তী শব্দটি মুছে ফেলতে বাশ দুটি কমান্ড সরবরাহ করে : unix-word-rubout( Ctrl+ wঅথবা সেট করা হিসাবে stty werase), এবং backward-kill-word( M-DEL, অর্থাত Esc Backspace) যা কোনও শব্দকে বর্তমান লোকালে এবং বর্ণচিহ্নের ক্রম হিসাবে বিবেচনা করে_ । আপনি যদি বর্ণমালার অক্ষরের আগের ক্রমটি মুছতে Ctrl+ চান Backspace, সেট করবেন না stty weraseএবং এর পরিবর্তে নিম্নলিখিত লাইনটি আপনারটিতে রাখুন .inputrc:

"\C-h": backward-kill-word

মনে রাখবেন যে এই ধরে নেয় যে আপনার টার্মিনাল জন্য জন্য Ctrl + এইচ চরিত্র পাঠায় Ctrl+ + Backspace। দুর্ভাগ্যক্রমে এটি এমন কোনও কীগুলির কোনও স্ট্যান্ডার্ড বাঁধাই না করে (এবং Backspaceবিশেষত historicalতিহাসিক কারণে বিশৃঙ্খলা )।

এখানে একটি প্রতিসম কমান্ডও রয়েছে kill-wordযা ডিফল্টরূপে M-d( Alt+ D) এ আবদ্ধ । এটি Ctrl+ তে বাঁধার জন্য Delete, আপনাকে প্রথমে আপনার টার্মিনালটি কী পলায়নের অনুক্রম প্রেরণ করবে তা নির্ধারণ করতে হবে, তারপরে আপনার মধ্যে একটি সম্পর্কিত লাইন যুক্ত করুন .inputrc। টাইপ Ctrl+ Vতারপর Ctrl+ Delete; ^[[3;5~এটি প্রাথমিক যেখানে ^[পলায়ন চরিত্রের চাক্ষুষ উপস্থাপনা যেখানে এমন কিছু প্রবেশ করানো হবে । তারপরে বাঁধাই হয়

"\e[3;5~": kill-word

আপনি যদি কোনও শব্দের সংজ্ঞা দিয়ে সন্তুষ্ট না হন তবে আপনি আপনার নিজের মতামত সরবরাহ করতে পারেন: ব্যাশে ইমাসিক-স্টাইলের কীবাইন্ডিংসের বিভ্রান্তিকর আচরণ দেখুন


2
চমৎকার ব্যাখ্যা! Ctrl+Delভাল কাজ করেন। তবে আমি কাজে যেতে পারছি না Ctrl+Backspace। জন্য Ctrl+v, Ctrl+Backspaceআমার টার্মিনাল বলছেন ^?। আমি কি করা উচিত .inputrc? আপনাকে ধন্যবাদ
সিপরিয়ান টমোইগা

3
@CiprianTomoiaga "\C-?": backward-kill-wordবা যাই হোক না কেন readline ফাংশন আপনি চান। তবে আপনি কেবলমাত্র Ctrl + ব্যাকস্পেসের জন্য একটি বাঁধাই সংজ্ঞায়িত করতে পারেন যা ব্যাকস্পেসের জন্য বাইন্ডিংয়ের থেকে পৃথক পৃথক অক্ষর প্রেরণ করলে আলাদা। যদি আপনার টার্মিনালটি ^?ব্যাকস্পেস এবং সিটিআরএল + ব্যাকস্পেস উভয়ের জন্য প্রেরণ করে তবে টার্মিনালে চলমান অ্যাপ্লিকেশনগুলিকে আলাদা করার কোনও উপায় নেই। কিছু টার্মিনাল কনফিগার করা যায় (যেমন xterm, urxvt), অন্যরা (যেমন ভিটিই-ভিত্তিক টার্মিনাল এমুলেটর) পারেন না can't
গিলস

4
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে সংজ্ঞাটি ~/.inputrcডিফল্টটিকে অক্ষম করে /etc/inputrc। : এই সমাধানের জন্য আপনি যে ফাইল অন্তর্ভুক্ত করা আছে $include /etc/inputrc(থেকে এখানে )
Ciprián Tomoiagă

Esc + ব্যাকস্পেসের জন্য +1
সেলাল এরগান

6

চেষ্টা

alt+ +backspace

প্রাথমিক ওএসে এটি আপনার যেমনভাবে চান ঠিক তেমনভাবে কাজ করে (ঠিক যেমন ctrl+ backspace)


1

রান্না করা মোড টার্মিনাল প্রসেসিংয়ে WERASE চরিত্রের আচরণটি হার্ডকোডযুক্ত , কমপক্ষে লিনাক্সে:

           if (kill_type == WERASE) {
                   /* Equivalent to BSD's ALTWERASE. */
                   if (isalnum(c) || c == '_')
                           seen_alnums++;
                   else if (seen_alnums)
                           break;
           }

সুতরাং শব্দ হ'ল অক্ষর, অঙ্ক এবং আন্ডারস্কোর। লিনাক্সের টার্মিনালে সর্বদা এটিই হবে যখন কোনও অ্যাপ্লিকেশন যা নিজের রান্না করা মোড প্রসেসিং চালায় না।

পঠনের সংস্করণ (ব্যাশ এবং অন্যান্যরা ব্যবহৃত) কার্নেলের সংস্করণ থেকে কিছুটা আলাদা বলে মনে হচ্ছে, তবে এটি হার্ডকোডযুক্ত বলে মনে হচ্ছে :

শব্দগুলি অক্ষর এবং অঙ্ক নিয়ে গঠিত।

তবে এটি bashআসলে আমার জন্য যা করে তা মিলছে বলে মনে হচ্ছে foo+bar^Wনা: কেবল নয়, সমস্ত কিছু মুছে দেয় bar। এখানে আরও তথ্য আছে


১. vi ব্যবহারকারী সম্ভবত এর পরিবর্তে কেবলমাত্র backward-kill-word(ডিফল্ট বাইন্ডিং M-DEL) সন্ধান করছে unix-word-rubout
গিলস 21'8
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.