কমান্ড-লাইন Zsh- এ মন্তব্য


115

আমি বাশ থেকে উবুন্টুতে Zsh এ বেশ স্যুইচ করেছি এবং এতে আমি বেশ খুশি। তবে, এমন একটি জিনিস আছে যা আমি সত্যিই মিস করছি এবং কীভাবে একই জিনিসটি অর্জন করব তা আমি খুঁজে পাইনি।

বাশ-এ, যখনই আমি দীর্ঘ কমান্ডটি টাইপ করতাম এবং লক্ষ্য করতাম যে এর আগে আমাকে অন্য কোনও কিছু চালাতে হয়েছিল, আমাকে কেবল নীচের মত মন্তব্য করতে হয়েছিল:

me@home> #mysuperlongcommand with some arguments
me@home> thecommandIhavetorunfirst #and then: then up up
me@home> #mysuperlongcommand with some arguments #I just need to uncomment it!

যাইহোক, এই বেশ পৌনঃপুনিক অবস্থা না হিসাবে সহজ ঠিকানায় সঙ্গে হিসাবে zshদেওয়া #mysuperlongcommand(যেমন চালানো যাবে এবং এর ফলে: zsh: command not found: #mysuperlongcommand

উত্তর:


172

সদ্য zsh চেষ্টা করে শুরু করে আমিও এই সমস্যায় পড়েছি। setopt interactivecommentsবাশ-স্টাইলের মন্তব্যগুলিকে সক্রিয় করতে আপনি করতে পারেন ।


3
set -kএটি কেবল এক বন্ধ থাকলে আপনিও করতে পারেন। তবে আমি setoptএই উত্তরটি লাইনটি আমার zshrc- এ ব্যবহার করব
হামিশ ডাউনার

12
এটির কোনও কারণ নেই যে এটি ডিফল্ট আচরণ নয়?
nnot101

1
@ naught101 প্রচুর সেরা বিটের বিটগুলি ডিফল্ট বন্ধ রয়েছে। কেন জানি না
জাজ্পার

@ naught101 কারণ এটি নতুন এবং উদ্ভাবনী। খুব অগ্রগতি, অনেক উন্নতি
Рахматуллин Рахматуллин

40

আমি ব্যবহার করি

bindkey "^Q" push-input

Zsh ম্যানুয়াল থেকে:

বাফার স্ট্যাকের উপরে সম্পূর্ণ বর্তমান মাল্টলাইন কনস্ট্রাকশনটি পুশ করুন এবং শীর্ষ-স্তরের (পিএস 1) প্রম্পটে ফিরে আসুন। যদি বর্তমান পার্সার কনস্ট্রাক্টটি কেবল একটি একক লাইন হয় তবে এটি হুবহু পুশ-লাইনের মতো। পরের বার সম্পাদকটি শুরু হবে বা গেট-লাইন দিয়ে পপ করা হবে, কনস্ট্রাক্টটি বাফার স্ট্যাকের শীর্ষে পপ করা হবে এবং সম্পাদনা বাফারে লোড হবে।

সুতরাং এটির মতো দেখাচ্ছে:

> long command
Ctrl+Q => long command disappears to the stack
> forgotten command
long command reappears from stack
> long command

এছাড়াও, আপনি যদি INTERACTIVE_COMMENTSবিকল্পটি সেট করেন ( setopt INTERACTIVE_COMMENTS), আপনি যেমন অভ্যস্ত তেমন ইন্টারেক্টিভ শেলগুলিতে মন্তব্যগুলি ব্যবহার করতে সক্ষম হবেন।


আমি আপনার বিকল্পটি পছন্দ করি, তবে আমি এটি কার্যকর করতে পারি না :( ফাইলের মধ্যে আমার কাছে বাঁধাই লেখার কোনও উপায় আছে, বা এটি কেবল দুটি অক্ষর, ^ এবং Q? আমার আদেশটি মুছে গেছে, তবে আমি জানি না কীভাবে এটি পুনরায়
ইনপুটটিতে

2
@ মিহনিয়া যদি কমান্ডটি অদৃশ্য হয়ে যায় তবে মনে হয় পুশ-ইনপুট কাজ করছে। আপনি যখন পরবর্তী কমান্ডটি চালাবেন বা এন্টার টিপুন তখন এটি ফিরে আসবে। এটা কি না?
মিশা পলিটোভস্কি

1
@ বারবাজ স্ট্যাকটি কারসাজি করা যায় read -zএবং print -zতাই কিছু স্ক্রিপ্টিং এবং অস্থায়ী ফাইলগুলি দিয়ে। তবে তারপরে কোনও অস্থায়ী ফাইলে কমান্ড লাইনটি সংরক্ষণ করার জন্য একটি কাস্টম জেল উইজেট সহজ হতে পারে, এবং ভাগ করা ইতিহাস আরও সহজ হবে।
মিশা পলিটোভস্কি

1
বর্তমানে গৃহীত উত্তর ঠিকানাগুলি প্রশ্নকারী যখন প্রশ্ন , এই উত্তর প্রশ্নকারী এর ঠিকানাগুলি উদ্দেশ্য । আইজেডের উদ্দেশ্যযুক্ত ফলাফল অর্জনের আরও ভাল উপায় রয়েছে এবং এটি এটি।
wjv

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আপনি যদি ওহ-মাই-জেডশ ব্যবহার করেন তবে আপনি বাক্সের বাইরে এই জন্য Ctrl-Q ব্যবহার করতে পারেন।
গেকো

18

আমি নিজেকে প্রায়শই এটি করতে দেখি। আমি যা করি তা হ'ল লং কমান্ডটি কেটে যায়, প্রথমে কমান্ডটি কার্যকর করতে হবে এবং তারপরে লং কমান্ডটি আবার পেস্ট করতে হবে This এটি সহজ: সিটিআরএল + ইউ বর্তমান কমান্ডটিকে একটি বাফারে কাটায়, সিটিআরএল + ওয়াই এটি আটকায়। Zsh এবং ব্যাশে কাজ করে।


ঠিক আছে, আসলে, আমার উপায়টি একদম কার্যকর যখন আপনার সমাধানটি সবচেয়ে উপযুক্ত;)
রল্ফ

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত নয়। নীচে যে সমাধানটি "সেটআপ্ট ইন্টারেক্টিভ কমেন্টস" ব্যবহার করতে হবে তা বলা উচিত। এর কারণ হ'ল যদি আপনি কেবলমাত্র বর্তমান কমান্ডটি কেটে ফেলেন তবে এটি আপনার জেডশ ইতিহাসে নেই, এবং আপনি নতুন কমান্ডটি টাইপ করার সময় সহজেই কাট এবং পেস্ট ব্যবহার করতে পারবেন না আপনি যে কমান্ডটি চেষ্টা করার চেষ্টা করেছিলেন তা ওভাররাইট না করেই সংরক্ষণ.
ডগলাস

1
মন্তব্যগুলি ব্যবহার করা এবং এই উত্তরের সমাধান উভয়ই কার্যকরী; মিশা পলিটোভস্কি পোস্ট করা পুশ-ইনপুট পদ্ধতিটি আরও সঠিক।
ফ্রেডরিক মুলারস্ট্র্যান্ড

0

setopt interactivecomments@ লাজনল্ড দ্বারা প্রস্তাবিত এ ছাড়াও , আপনি নির্দিষ্ট মন্তব্যগুলিকে ইতিহাসে লেখা থেকে রোধ করতে নীচের মতো কিছু যুক্ত করতে চাইবেন ( /superuser/352788/how-to-prevent-a- থেকে কমান্ড-ইন-জেডশেল-ইন-হিস্ট্রি-ইন-হিস্ট্রি ):

এটি জেডএসএইচ অন্তর্নির্মিত ফাংশন zsadhistory () কে ওভাররাইড করে:

  • এক বা একাধিক স্পেস অনুসরণ না করে কলাম 1 এ শুরু হওয়া মন্তব্যগুলিতে লগ করা হবে (অর্থাত # সকম কম্যান্ড যা আমি ফিরে আসতে চাই)
  • এক বা একাধিক স্পেসের পরে কলাম 1 এ শুরু হওয়া মন্তব্যগুলিতে লগ করবেন না
  • কলাম 1 থেকে ফাঁকা জায়গায় প্যাডড ইন্ডেন্ট করা মন্তব্যগুলি লগ করবেন না
  • কলাম 1 এ একটি স্থান দিয়ে কমান্ডগুলি লগ করবে না (কমান্ডগুলি চালানোর জন্য সহজ শর্টকাট যা আপনি লগইন করতে চান না)
setopt interactivecomments

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^#\s+|^\s+#|^ )" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

রেফারেন্সের জন্য, এটি হ'ল ডিফল্ট zshaddhistory () http://zsh.sourceforge.net/Doc/Release/Funitions.html

zshaddhistory() {
  print -sr -- ${1%%$'\n'}
  fc -p .zsh_local_history
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.