টি এল; ডিআর
ব্যাশ একটি অনুরূপ কার্যকারিতা থাকে zsh's bindkeyমাধ্যমে bind, কিন্তু এটি বিভিন্ন নেই viমত মোড zsh। set -o viআপনি এটি করার পরে :
bind '"jk":vi-movement-mode'
যা zsh's এর সমতুল্যbindkey -M <all vi modes> jk vi-movement-mode
vi-movement-modeফাংশন থেকে আসে inputrc(দেখুন /etc/inputrcতাদের একটি তালিকা জন্য)।
সম্পূর্ণ লিখা
স্টিফেন হ্যারিস যেমন নিজের মন্তব্যে উল্লেখ করেছেন:
বেশ কয়েকটি ডিস্ট্রোস একটি .bash_profileকঙ্কাল নিয়ে আসে যা নীচে দেখায়:
# ~/.bash_profile
[[ -f ~/.bashrc ]] && . ~/.bashrc
.bash_profileআপনি যেহেতু এটি সহজেই ভুলে যেতে পারেন এটির জন্য একটি ভাল সামগ্রী ।
এখন, শেল সেশনে মানচিত্র jkকরতে Esc, এটি সত্যিই সম্ভব নয়। যখন তুমি কর:
inoremap jk <esc>
ভিমে, আপনি টাইপ করার পরে j, ভিম জানেন যে আপনি kপরবর্তী টাইপ করেছেন কিনা তা দেখার জন্য কিছুটা অপেক্ষা করা দরকার এবং এটি ম্যাপিংটি শুরু করা উচিত (অথবা আপনি অন্য কীটি টাইপ করেন এবং ম্যাপিংটি ট্রিগার করা উচিত নয়)। সংযোজন হিসাবে :set timeoutlen=<miliseconds>এটি ভিমে (দেখুন :h timeoutlen) দ্বারা নিয়ন্ত্রিত হয় ।
বেশ কয়েকটি শেল বা এক্স 11 এর মতো টাইমআউট নিয়ন্ত্রণ নেই এবং একাধিক অক্ষর ম্যাপিংয়ের অনুমতি দেয় না। কেবলমাত্র একটি সি-কি'র ম্যাপিংয়ের অনুমতি রয়েছে (তবে নীচে সমর্থন নোটগুলি দেখুন।)
set -o vi
পড়ে না .vimrc, এটি শেলটিতে ব্যবহারযোগ্য কয়েকটি কী vi(এমনকি নয় vim) মূল সংমিশ্রণগুলি অনুকরণ করে। একই সম্পর্কে বলা যেতে পারে -o emacs, এটি সম্পূর্ণ শক্তির সাথে আসে না emacs।
zsh সমর্থন
zshপ্রকৃতপক্ষে মানচিত্রের সময়সীমা সমর্থন করে। এবং আপনি মানচিত্র jkকরতে নিম্নলিখিত ব্যবহার করতে পারেন <esc>:
bindkey -v # instead of set -o vi
bindkey -e jk \\e
(এটি যেতে হবে ~/.zshrcনা ~/.bashrc)
তবুও, আমি এর বিরুদ্ধে পরামর্শ দিই। আমি vimএবং zshবেশিরভাগ সময় ব্যবহার করি । আমি inoremap jk <esc>আমার মধ্যে vimrcএবং আমি ব্যবহার করার চেষ্টা করুন হয়নি bindkeyউপরে সংমিশ্রণ। এটি ব্যবহার zshকরার সময় মুদ্রণের জন্য খুব বেশি সময় অপেক্ষা jকরে এবং এটি আমাকে অনেক বিরক্ত করেছিল।
বাশ সমর্থন
bashসমর্থন readline bind। আমি বিশ্বাস করি যে bashএইগুলি ব্যতীত সংকলন করা যায় readilneতাই কিছু বিরল সিস্টেমে এমন বাশ থাকতে পারে যা সমর্থন করে না bind(সতর্ক থাকুন)। এতে ম্যাপ jkকরার <esc>জন্য bashআপনাকে যা করতে হবে:
set -o vi
bind '"jk":"\e"'
(হ্যাঁ এটি একটি দ্বিগুণ স্তরের উদ্ধৃতি, এটি প্রয়োজন)
আবার এটি টাইপিংকে jবেশ বিরক্তিকর করে তোলে । তবে zshআমার মেশিনে সমাধানের চেয়ে কোনওভাবেই বিরক্তিকর (সম্ভবত ডিফল্ট সময়সীমাটি ছোট)।
কার্যতালিকা (নন-ব্যাশ এবং নন-জ্যাশ শেলের জন্য)
Escকীটি রিম্যাপ করার কারণ হ'ল এটি কীবোর্ডের থেকে অনেক দূরে রয়েছে এবং টাইপ করতে সময় লাগে। একটি কৌশল যা emacsছেলেদের কাছ থেকে ধার করা যেতে পারে তা পুনর্নির্মাণ করা CapsLockএটি যেহেতু এটি একটি অকেজো চাবি। emacsছেলেরা এটি পুনরায় তৈরি করুন Ctrlতবে আমরা এটির পুনর্নির্মাণ করব Esc।
এর xev -event keyboardকিকোড চেক করতে ব্যবহার করুন CapsLock:
KeyPress event, serial 25, synthetic NO, window 0x1c00001,
root 0x496, subw 0x0, time 8609026, (764,557), root:(765,576),
state 0x0, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
এবং এর কার্যকারিতা পরীক্ষা করতে Esc:
KeyPress event, serial 25, synthetic NO, window 0x1c00001,
root 0x496, subw 0x0, time 9488531, (571,525), root:(572,544),
state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) "
XmbLookupString gives 1 bytes: (1b) "
XFilterEvent returns: False
খুব ভাল, CapsLockকী-কোড 66 এবং Escএর ফাংশনটিকে "এস্কেপ" বলা হয়। এখন আমরা করতে পারি:
# diable caps lock
xmodmap -e "remove lock = Caps_Lock"
# make an Esc key from the keycode 66
xmodmap -e "keycode 66 = Escape"
উপরেরটি অবশ্যই এই ক্রমে করা উচিত । এখন যতবার আপনি CapsLockএটি হিট করবেন তেমনি একটি Escচাবির মতো কাজ করে ।
জটিল অংশটি এটি সেট করার জন্য। ~/.Xmodmapবিষয়বস্তু সহ একটি ফাইল :
remove lock = Caps_Lock
keycode 66 = Escape
বেশিরভাগ ডিস্ট্রোদের দ্বারা সম্মান করা উচিত (প্রকৃতপক্ষে পরিচালকগণ প্রদর্শন করুন, তবে আমি সরলতার জন্য ডিস্ট্রো বলছি) তবে আমি এমন কয়েকটি ~/X*ফাইল দেখেছি যা বেশ কয়েকটি ফাইলকে সম্মান করে না । এই জাতীয় ডিগ্রোগুলির জন্য আপনি কিছু চেষ্টা করতে পারেন:
if [ "x" != "x$DISPLAY" ]; then
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "keycode 66 = Escape"
fi
আপনার .bashrc।
(তত্ত্বের ক্ষেত্রে এটি আরও ভালভাবে স্থাপন করা হবে ~/.xinitrcতবে কোনও ডিসপ্লে ম্যানেজার যদি সম্মান না .Xmodmapকরে তবে অবশ্যই এটি সম্মান করবে না ~/.xnintrc))
অতিরিক্ত দ্রষ্টব্য: এটি কেবল এক্স 11 সেশনে পুনরুদ্ধার CapsLockহয় Esc, অতএব মানচিত্রটি কেবলমাত্র টার্মিনাল এমুলেটরগুলিতে কাজ করবে। আসলটির ttyমানচিত্রটি দেখতে পাবে না।
তথ্যসূত্র এবং অতিরিক্ত পড়া:
jk? এটি কি আপনার কীবোর্ডের কোনও বিশেষ কী?