পশ্চাদপদ-কিল-শব্দটি Ctrl + w তে আবদ্ধ করা


23

আমি Tcsh এর দীর্ঘ ব্যবহার থেকে বাশের সাম্প্রতিক অনুসন্ধানে স্যুইচ করার চেষ্টা করছি।

Ctrl + w ব্যতীত আমি আমার সমস্ত প্রিয় বৈশিষ্ট্যগুলি পোর্ট করতে সক্ষম হয়েছি যা স্পেস এবং স্ল্যাশগুলিকে শব্দের সীমানা হিসাবে গণ্য করে, সম্ভবত সম্ভবত পশ্চাতে-হত্যা শব্দটি। বাশে তবে পঠনক্ষেত্রটি প্রথম স্থান পর্যন্ত সমস্ত পথ মুছে ফেলে, এর মধ্যে সমস্ত স্ল্যাশ মুছে দেয়।

আমি বাইন্ড ব্যবহার করে .inputrc এবং .bashrc উভয় ক্ষেত্রে \ Cw: পশ্চাদপদ-কিল-শব্দটির অনেকগুলি সংমিশ্রণ চেষ্টা করেছি কিন্তু আমি এটি যেভাবে চাই তা কাজ করতে পারি না।

যথেষ্ট মজার বিষয়, উইন্ডোজ থেকে কর্মক্ষেত্রে পুট্টির মাধ্যমে আমি আল্ট + ব্যাকস্পেস ব্যবহার করতে পারি, যা ম্যানুয়ালটিও বলেছে যে আমার পছন্দসই আচরণটি উত্পাদন করতে ডিফল্ট বাঁধাই। তবে বাড়িতে আমার ম্যাকগুলিতে টার্মিনাল.এপ এ কাজ করে না। টার্মিনাল.অ্যাপ থেকে লগইন হওয়া আমার যে কোনও ফ্রিবিএসডি বা লিনাক্স সার্ভারের ক্ষেত্রে একই।

সুতরাং আমি সাহায্যের জন্য সুপারইউসারটিতে ঘুরছি।

উত্তর:


40

readlineআবদ্ধ হয় না Ctrl- Wযেহেতু এটি টার্মিনাল ড্রাইভার দ্বারা ডিফল্টরূপে পরিচালিত হয়:

$ stty -a
(...) werase = ^W; (...)

এটি অক্ষম করতে, আপনাকে চালাতে হবে (ইন ~/.bashrc):

stty werase undef
bind '"\C-w": backward-kill-word'

.inputrcএখানে সাহায্য করবে না যেহেতু এটি যখন পড়া হয় Ctrl- Wএখনও নির্ধারিত হয় werase

এছাড়াও নোট করুন যে \C-wফর্ম্যাট কীসেকগুলি অবশ্যই উপরের মতো ডাবল-কোটে আবদ্ধ থাকতে হবে।


বিভিন্ন টার্মিনাল হ্যান্ডেল করতে পারে Alt- Backspaceভিন্নভাবে।

  • পুটি এবং জিনোম টার্মিনাল (ডিফল্ট সেটিংস সহ) প্রেরণ 1b 7f( ESC DEL)
  • সঙ্গে xterm metaSendsEscape: trueপাঠায় 1b 08( ESC BS)।
  • Xterm প্রেরণ ছাড়াই ( বা সর্বোচ্চ বিট সেট সহ)।metaSendsEscape88HTSBS

কীটির আচরণ নিয়ন্ত্রণের জন্য এক্সটার্মের কয়েকটি সেটিংস রয়েছে Alt( Metaসাধারণভাবে এক্সটারেম এবং এক্স 11 নামে পরিচিত )। সহ metaSendsEscape, হোল্ডিং Altএকটি ESC(হেক্স 1b) সহ কী টিপস উপসর্গ করা হবে । বিন্যাস ছাড়াই (ডিফল্ট মোড), Altইনপুট চরিত্রের সর্বোচ্চ বিট সেট করবে, যার ফলে বিশেষ অক্ষর হবে। (উদাহরণস্বরূপ, Alt- Nফলাফল ESC nএবং îযথাক্রমে।)

যতদূর আমি মনে করতে পারি, মেটা / অল্ট / যা-কিছু-ম্যাক-ব্যবহার ব্যবহার নিয়ন্ত্রণ করতে টার্মিনাল.এপ-তেও একই ধরণের सेटिंग রয়েছে।


এটি কেবল সেরা উত্তরই নয় তবে অত্যন্ত তথ্যপূর্ণ, আপনাকে ধন্যবাদ!
স্টিফান এম

1
@ শুরেন: "মুছে ফেলা" শব্দটি মুছে ফেলুন, নরমাল ইরেজের মতো (ব্যাকস্পেস) ওএস নিজেই প্রয়োগ করে, "টিটি ডিভাইস" ড্রাইভারের মধ্যে - লক্ষ্য করুন যে তারা এমন প্রোগ্রামগুলিতেও উপলব্ধ যা কেবল স্টিডিন থেকে অন্ধভাবে পড়া হয়েছে, যেমন cat। সমস্ত ইউনিক্সে, sttyএই বিশেষ কীগুলি সহ বিভিন্ন টিটিটি প্যারামিটারগুলি নিয়ন্ত্রণ করতে ব্যবহৃত হয়। ( ইউনিক্সের সপ্তম সংস্করণটিstty কেমন দেখায় তা এখানে ))
গ্রাভিটি

1
@shurane: এদিকে, readline মূলত জন্য লিখিত একটি ইউজার-স্পেস লাইব্রেরী ব্যাশ শেল (যদিও এখন অনেক প্রোগ্রাম দ্বারা ব্যবহৃত হয়)। এটি সম্ভব যে টিটি ড্রাইভারকে ফুলে যাওয়া এড়ানোর জন্য অন্যান্য ক্রিয়াগুলি পাঠ্যরেখায় প্রয়োগ করা হয়েছিল (যার sttyম্যানুয়ালটিতে দেখা গেছে এর মধ্যে ইতিমধ্যে যথেষ্ট পরিমাণে পতাকা এবং টগল ছিল )। এছাড়াও, বাশ মূলত GNU OS এর জন্য নির্মিত হয়েছিল এবং কেবল পরে অন্য ইউনিক্সে পোর্ট করা হয়েছিল; একাধিক খুব আলাদা কার্নেলের চেয়ে একক লাইব্রেরিতে সম্পাদনা বৈশিষ্ট্যগুলি বজায় রাখা আরও সহজ।
মাধ্যাকর্ষণ

3
@shurane: টেকনিক্যালি, তবে, সব শব্দ মুছে ফেলুন সহ এই কর্ম দ্বারা প্রয়োগ করা হয় readline - যখন সক্রিয়, এটি সম্পূর্ণ ব্যাকস্পেস এবং Ctrl + টার্মিনাল ড্রাইভার দ্বারা হ্যান্ডলিং ডব্লিউ অক্ষম করে। রিডলাইন কেবল sttyসরলতার জন্য কনফিগারেশনকে সম্মান করে , তবে এটি পঠনের নিজস্ব সেটিংস (ম্যাট ডে এর উত্তরে বর্ণিত) দ্বারা ওভার্রাইড করা যায়
মাধ্যাকর্ষণ

4
এটি তথ্যের জন্য দুর্দান্ত উত্তর, আপভোট। যাইহোক, এটি লক্ষ করা উচিত যে এটি পাঠ্যরেখা ব্যবহার না করা সত্ত্বেও এটি সমস্ত প্রোগ্রামের জন্য Ctrl-w অক্ষম করে, যা সম্ভবত কেউ চায় না ..., তাই @ ফজরলিকের উত্তরটি চেষ্টা করুন।
0fnt

19

মাধ্যাকর্ষণ লিখেছেন যে এটি .inputrcফাইলে নিয়ন্ত্রণ করা যায় না , তবে এটি ভুল।

আপনি যদি এতে set bind-tty-special-chars offথাকেন তবে আপনি .inputrcবিশেষ টার্মিনাল অক্ষরের আচরণটি কাস্টমাইজ করতে পারেন।

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

set bind-tty-special-chars off
Control-u: kill-whole-line
Control-w: backward-kill-word

2
এবং এতে এমন সমস্ত প্রোগ্রামের জন্য কাজ করার সুবিধা রয়েছে যা রিডলাইন ব্যবহার করে — যেমন python,।
wchargin

3

রেকর্ডের জন্য, উত্তর যেমন iTerm2 প্রযোজ্য সেট হয় Alt- Backspace(অথবা Opt ⌥- ম্যাক দিকে) হেক্স কোড পাঠাতে 0xb1এবং 0x7fঅর্ডার সম্পাদন করতে backward-kill-wordকর্ম যা বিভেদক রূপে অ আলফানিউমেরিক অক্ষর একইরূপে।

স্বতন্ত্রতার জন্য, আমি যে আচরণটি বর্ণনা করছি তা এখানে দেওয়া হচ্ছে, যা টিপছে Opt ⌥- এক সময় এটি পরিবর্তন করে:

echo "/example/filepath/with_non-alpha.characters@blah:meh

এটি:

echo "/example/filepath/with_non-alpha.characters@blah:

আর পরবর্তী প্রক্রিয়া Opt ⌥- :

echo "/example/filepath/with_non-alpha.characters@

echo "/example/filepath/with_non-alpha.

echo "/example/filepath/with_non-

echo "/example/filepath/with_

echo "/example/filepath/

আইটিার্ম 2 এ সেটিংটি দেখতে কেমন তা এখানে দেখুন: এখানে চিত্র বর্ণনা লিখুন

সুতরাং, পুট্টি এবং টার্মিনাল নির্দিষ্ট, মাধ্যাকর্ষণ উত্তর দুর্দান্ত। তবে আইটিার্ম 2-এ কীভাবে সেটিংস প্রয়োগ করতে হবে তা সন্ধান করার জন্য বিব্রতকর সময় ব্যয় করার পরে, এই সুপারভাইজার পোস্টটি প্রায়শই ঘনিয়ে আসবে বলে মনে হয়, সুতরাং এই প্রশ্নের সাথে যুক্ত উত্তর হিসাবে এটি আইটার্ম 2 এর ক্ষেত্রে প্রযোজ্য বলে প্রাসঙ্গিক তথ্য সরবরাহ করা দায়বদ্ধ বলে মনে হয়।


এটি নির্ণয় করতে আমার সত্যই দীর্ঘ সময় লেগেছে, এবং রিমোট ব্যাশ শেলটিতে লগ ইন করার সময় এই সমাধানটি ওএস এক্সে (আইটার্ম 2 সহ) কাজ করে। ধন্যবাদ!
মার্টিজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.