নিম্নলিখিত কোড (zsh বৈশিষ্ট্য ব্যবহার করে, তবে প্রিসপেলটি অন্যান্য শাঁসের সাথেও ব্যবহার করা যেতে পারে) দুটি শেল ফাংশন সংজ্ঞায়িত করে prompt_middle
এবং prompt_restore
।
প্রথম ফাংশনটি প্রম্পটের নীচে উপযুক্ত সংখ্যক খালি লাইন জোর করে প্রম্পটটিকে সর্বদা টার্মিনালের মাঝের উপরে রাখে। পরবর্তী ফান্ট স্বাভাবিক আচরণ পুনরুদ্ধার করে।
আপনি এই শুল্কগুলিকে কিছু শর্টকাটগুলিতে বরাদ্দ করতে পারেন বা এই দুটি মোডের মধ্যে টগল করার জন্য কিছু যুক্তি ব্যবহার করতে পারেন।
# load terminfo modules to make the associative array $terminfo available
zmodload zsh/terminfo
# save current prompt to parameter PS1o
PS1o="$PS1"
# calculate how many lines one half of the terminal's height has
halfpage=$((LINES/2))
# construct parameter to go down/up $halfpage lines via termcap
halfpage_down=""
for i in {1..$halfpage}; do
halfpage_down="$halfpage_down$terminfo[cud1]"
done
halfpage_up=""
for i in {1..$halfpage}; do
halfpage_up="$halfpage_up$terminfo[cuu1]"
done
# define functions
function prompt_middle() {
# print $halfpage_down
PS1="%{${halfpage_down}${halfpage_up}%}$PS1o"
}
function prompt_restore() {
PS1="$PS1o"
}
ব্যক্তিগতভাবে দুটি মোডের মধ্যে টগল করার পরিবর্তে আমি আরও সহজ পদ্ধতির ব্যবহার করব (আপনার $halfpage_up/down
উপরের সংজ্ঞাটি দরকার ):
magic-enter () {
if [[ -z $BUFFER ]]
then
print ${halfpage_down}${halfpage_up}$terminfo[cuu1]
zle reset-prompt
else
zle accept-line
fi
}
zle -N magic-enter
bindkey "^M" magic-enter
বর্তমান কমান্ড লাইনটি ফাঁকা আছে কিনা তা পরীক্ষা করে (আমার অন্য উত্তরটি দেখুন ) এবং যদি প্রম্পটটি টার্মিনালের মাঝখানে উপরে নিয়ে যায়। এখন আপনি ENTER
কীটির একটি অতিরিক্ত প্রেস দিয়ে আপনার প্রম্পটটিকে দ্রুত-ফরওয়ার্ড করতে পারেন (বা সম্ভবত আপনি এটি ডাবল-ক্লিকের অনুরূপ ডাবল-প্রেস বলতে চান )।