আমি কেবল প্রশ্নের সমাধান করতে যাচ্ছি (1)।
আপনার সমস্যাটি কীটিমিওট। আমি zshzle থেকে উদ্ধৃতি (1):
যখন জেডএলই টার্মিনাল থেকে একটি কমান্ড পড়ছে, এটি এমন একটি ক্রম পড়তে পারে যা কিছু কমান্ডের সাথে আবদ্ধ থাকে এবং এটি দীর্ঘতর বাউন্ড স্ট্রিংয়ের উপসর্গও হয়। এই ক্ষেত্রে ZLE আরও অক্ষর টাইপ করা হয়েছে কিনা তা দেখার জন্য একটি নির্দিষ্ট সময় অপেক্ষা করবে এবং যদি না হয় (বা তারা আর কোনও স্ট্রিংয়ের সাথে মেলে না) এটি বাধ্যবাধকতা কার্যকর করবে। এই টাইমআউটটি KEYTIMEOUT পরামিতি দ্বারা সংজ্ঞায়িত করা হয়েছে; এর ডিফল্ট 0.4 সেকেন্ড। উপসর্গের স্ট্রিংটি কোনও কমান্ডের সাথে আবদ্ধ না হলে কোনও সময়সীমা নেই।
ইসিএসকে আঘাত করার পরে আপনি যে বিলম্বের মুখোমুখি হচ্ছেন সেটি হল 0.4s। সমাধানটি শেল স্টার্টআপ ফাইলগুলির মধ্যে একটিতে KEYTIMEOUT ঠিক 0.01 সেটে সেট করতে হবে:
export KEYTIMEOUT=1
দুর্ভাগ্যক্রমে এর একটি নক-অন প্রভাব আছে: অন্যান্য জিনিসগুলি ভুল হতে শুরু করে ...
প্রথমত, vi কমান্ড মোডে এখন একটি সমস্যা রয়েছে: ESC টাইপ করার ফলে কার্সারটি স্তব্ধ হয়ে যায়, এবং তারপরে আপনি যে কোনও অক্ষরটি টাইপ করেন তা গিলে যায়। এটি কারণ vi কমান্ড মোডে ডিফল্টরূপে ESC কোনও কিছুর সাথে আবদ্ধ নয়, তবুও এমন বহু-চরিত্রের উইজেট রয়েছে যা ESC (কার্সার কীগুলি) দিয়ে শুরু হয়। সুতরাং আপনি যখন ESC তে আঘাত করবেন তখন ZLE পরবর্তী অক্ষরের জন্য অপেক্ষা করে ... এবং তারপরে এটি গ্রাস করে।
ফিক্স করার জন্য Esc বাঁধে হয় কিছু কমান্ড মোডে, এইভাবে নিশ্চিত কিছু $ KEYTIMEOUT centiseconds পর ZLE প্রেরণ পায়। এখন আমরা এই খারাপ প্রভাব ছাড়াই কমান্ড মোডে ESC দিয়ে শুরু করে বাইন্ডিংগুলি রাখতে পারি। আমি বেল চরিত্রের সাথে ইসএসসি বাঁধাই, যা আমি স্ব-sertোকানো (এবং আমার শেলটি নিঃশব্দ করা হয়েছে) এর চেয়ে কম অনুপ্রবেশজনক বলে মনে করি:
bindkey -sM vicmd '^[' '^G'
আপডেট 2017:
ইসডিকে আবদ্ধ করার জন্য আমি আরও একটি ভাল সমাধান খুঁজে পেয়েছি - undefined-key
উইজেট। আমি নিশ্চিত নই যে আমি যখন এই উত্তরটি মূলত লিখেছিলাম তখন এই উইজেটটি zsh এ উপলব্ধ ছিল কিনা।
bindkey -M vicmd '^[' undefined-key
পরবর্তী সমস্যা: ডিফল্টরূপে ^ এক্স থেকে vi সন্নিবেশ মোডে কিছু দুটি-কী উইজেট রয়েছে; unus KEYTIMEOUT পুরোপুরি নীচে সেট করা থাকলে এগুলি অকেজো হয়ে যায়। আমি যা করি তা হ'ল vi সন্নিবেশ মোডে এক্স-বাইন্ড-এক্স (এটি ডিফল্টরূপে স্ব-sertোকানো); এটি সেই দুটি-কী উইজেটগুলিকে কাজ চালিয়ে যাওয়ার অনুমতি দেয়।
bindkey -rM viins '^X'
আপনি নিজের-সন্নিবেশের জন্য বাধ্যবাধকতাটি হারাতে পারেন, তবে আপনি অবশ্যই এটি অন্য কোনও কিছুকে আবদ্ধ করতে পারেন। (আমি না, যেহেতু এটির জন্য আমার কোনও ব্যবহার নেই))
গত সমস্যা (আমি এতদূর পাওয়া করেছি): ঐ মোড সন্নিবেশ ষষ্ঠ মধ্যে চট্টগ্রাম সিটি কর্পোরেশন থেকে শুরু যা হল: কিছু অবশিষ্ট ডিফল্ট কী-বাইন্ডিং যে, আমরা 'হারান "কারণে $ KEYTIMEOUT অধিকার নিচে, বুদ্ধি সেটিং করার আছে না কী কার্সার। পরিবর্তে them এক্স দিয়ে শুরু করার জন্য আমি ব্যক্তিগতভাবে তাদের পুনরায় ফিরিয়ে দিয়েছি:
bindkey -M viins '^X,' _history-complete-newer \
'^X/' _history-complete-older \
'^X`' _bash_complete-word
আপডেট 2018:
এটি উপরের পুরো বিভাগটি সরিয়ে দেয় ("আপডেটের পরে 2017") অগত্যা প্রয়োজনীয় নয়। কীবোর্ড ম্যাপিংগুলিতে মেটা কীটি ESC এর সমতুল্য হিসাবে সেট করা সম্ভব:
bindkey -mv
অতএব b এক্স আনবাইন্ড না করা এবং পরিবর্তে নেতা হিসাবে এমইটিএ চেপে (আধুনিক কীবোর্ডগুলিতে ALT বা OPT) চাপিয়ে ESC এ শুরু হওয়া কী-বাইন্ডিংগুলি অ্যাক্সেস করা সম্ভব ।
আপনার যদি কিডল এট ইত্যাদি দ্বারা বাশ থেকে জেড শেল বইটি অ্যাক্সেস থাকে তবে কী -বাইন্ডিংগুলিতে ইসি এবং মেটা এর সমতুল্যতা পৃষ্ঠা p৮-–– এর অধ্যায় ৪ এর সাইডবারে আলোচনা করা হয়েছে।
i
দুইবার মোড সন্নিবেশ করতে ফিরে পেতে, আমি অত্যন্ত সুপারিশ করবে এই ফিক্স!