সাব-প্রসেসগুলি চারপাশে মোড়ানোর জন্য zsh এর লাইন সম্পাদক ব্যবহার করা


22

zleএকটি subproces ইনপুট খাওয়ানোর জন্য zsh এর অন্তর্নির্মিত লাইন সম্পাদক ( ) ব্যবহার করা সম্ভব ? এটি হ'ল, আমি zlewrap mycommandকোথায় চালাতে চাই যেখানে zlewrapএকটি zsh ফাংশন এবং mycommandএমন কোনও প্রোগ্রাম যা কেবল স্টিডিনের লাইনগুলি পড়ে; zlewrapকার্যকরভাবে zle এর লাইন-সম্পাদনার ক্ষমতা সরবরাহ করবে mycommand। এটি এমন মডেলটিতে rlwrapযা এটি কেবল এটি করে, তবে পঠন লাইনের সাথে এবং লাইন সম্পাদনার জন্য zle নয়।


2
এটি সহায়ক মনে হচ্ছে: zsh.org/mla/users/2004/msg00917.html । এটি একটি একক কমান্ডের মতো সহজ নয়, তবে আপনি এই স্ক্রিপ্টটি আপনার প্রোগ্রামের সাথে মানিয়ে নিতে পারেন (সংশোধনের জন্য ফলোআপগুলি পড়ুন)।
imgx64

আমার সমাধানগুলির সমাধানের সময় আমার একটি সমস্যা হ'ল আপনি যখন জেডএলইতে 'সম্পাদনা' করতে চান এবং আপনি যখন 'মাইকম্যান্ড' প্রত্যাবর্তনের জন্য অপেক্ষা করতে চান তখন আপনি কীভাবে নির্দেশ করবেন? এটি কি কখনও কখনও একটি লাইন ফেরত দেয়?
বহুবর্ষীয়

2
@ সর্বজনীন মোড়ক এই জাতীয় পেছনের প্রক্রিয়াটি একবারে এক লাইনে ফিরে আসে। এর ব্যবহার rlwrapবেশ বিস্তৃত এবং আপনি সম্ভবত এটি ব্যবহার করেছেন। মাইএসকিএল, স্ক্লাইট, এলএফটিপি ইত্যাদির মতো জিনিসগুলিতে আপনি যে ছোট সিউডো শেল জিনিসগুলি পান সেগুলি সম্পর্কে ভাবুন। তাদের সকলের একটি লাইন সম্পাদকের কিছু বাস্তবায়ন রয়েছে যা তাদের পিছনে প্রকৃত প্রসেসরের কাছে একবারে লাইনে বা লাইনের ব্লকে ফিরে আসে। rlwrapSTDIN কে গ্রহণ করে এমন কোনও প্রোগ্রামের জন্য বেশ ঝরঝরে হিট করে, তবে রিডলাইনগুলি কম বিস্তৃত যারা না করে zle স্টাইলের বাইন্ডিং এবং ক্ষমতা রাখলে ভাল লাগবে।
কালেব

তোমার জন্য ম্যানুয়াল দিকে তাকিয়ে আছে zsh- cs.elte.hu/zsh-manual/zsh_14.html ? - আমি আপনার প্রশ্নটি বেশ বুঝতে পারছি না, তবে শিরোনামটি গুগলড করেছি এবং সেই পৃষ্ঠাটি পেয়েছি। এটি সাহায্য করতে পারে, কিন্তু আমি জানি না।
কেভডোগ 777

1
ঠিক আছে, আমি কেবল সাহায্য করার চেষ্টা করছিলাম, কারণ আমি দেখতে পাচ্ছি যে আপনার প্রশ্নের উত্তর এক বছরেরও বেশি সময় পাওয়া যায় নি। দুঃখিত আমার মন্তব্য যথেষ্ট ভাল ছিল না।
কেভডোগ 777

উত্তর:


4

জিএনইউ স্ক্রিন ব্যবহার করে আপনি এটি কীভাবে করতে পারেন তা এখানে:

zfআপনার $PATHসাথে কল করা একটি ফাইল রাখুন :

#! /usr/bin/env zsh
zmodload -i zsh/zle
trap 'printf "\03"; exit' INT
HISTSIZE=100
while a=; vared -p "${2:-zle> }" -eh a; do
{
  s=$(stty -g)
  stty -echo -iexten -isig lnext '' werase '' eof '' rprnt '' kill ''
  printf "%s\r" "$a"
  print -rs -- "$a"
  stty "$s"
} < $1
done
printf "\04"

এবং তারপরে, স্ক্রিন হিসাবে ফিল্টার চালান

<Ctrl-A>:exec .!. zf /dev/pts/x "> "

প্রকৃত উইন্ডোজ পিটিআই ( ttyউইন্ডোতে কমান্ডের আউটপুট ) এবং ">" প্রদর্শন করার প্রম্পট দিয়ে / dev / pts / x প্রতিস্থাপন করুন ।

Zsh এবং অ্যাপ্লিকেশন উভয়ই অবিস্মরণীয়ভাবে উপায়ে টার্মিনালে লিখবে বলে মাঝে মাঝে ডিসপ্লে গ্ল্যাচ থাকবে।

মূল http://www.zsh.org/mla/users/2005/msg00186.html এ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.