Vi তে নিয়ন্ত্রণ অক্ষর (^ @, ^ এম, ^ আমি…) অনুসন্ধান এবং প্রতিস্থাপন করুন


14

আমি /proc/some_proc_id/cmdlineআমার উবুন্টু মেশিনে এই লাইনটি অনুলিপি করেছি,

java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@

একরকম, স্পেস অক্ষরগুলি ^@vi এর দ্বারা প্রতিনিধিত্ব করা হয়। কমান্ডটি ব্যবহার করে আমি তাদের স্থানের অক্ষরগুলির সাথে প্রতিস্থাপন করার চেষ্টা করেছি,

:%s#^@# #g

কিন্তু এটা বলছেন, pattern not found ^@

বিশেষ করে ক্যারেট প্রতীক দিয়ে শুরু হওয়া চরিত্রগুলি কীভাবে প্রতিস্থাপন করা যায়?


আপনি যে টার্মিনালটি ব্যবহার করছেন তা কী?
এড হিল

সময়ে TERMএবং অনেক সময় এটি হয়screen

আপনি যে টার্মিনাল প্রোগ্রামটি ব্যবহার করছেন সেটি কী এবং TERMপরিবেশের পরিবর্তনশীল সঠিকভাবে সেট করা আছে?
এড হিল

উত্তর:


15

একরকম, স্পেস অক্ষরগুলি ^@vi এর দ্বারা প্রতিনিধিত্ব করা হয়।

এটা viযে এটা করে না । আপনি আর্গুমেন্টের মধ্যে ফাঁক দিয়ে শেলগুলিতে কমান্ড লাইনগুলি টাইপ করলেও, কমান্ড লাইনগুলি অভ্যন্তরীণভাবে স্ট্রিংগুলির পৃথক পৃথক ক্রম হয়, একটি দীর্ঘ স্থান পৃথক পৃথক স্ট্রিং নয়। শেলটি কমান্ড চালু হওয়ার আগে কমান্ড লাইনটিকে পৃথক যুক্তিযুক্ত স্ট্রিংগুলিতে পৃথক করে।

সি তে, স্ট্রিংগুলি NUL টি অক্ষর দিয়ে সমাপ্ত হয় এবং সেগুলি হিসাবে প্রদর্শিত হয় ^@

বিশেষ করে ক্যারেট প্রতীক দিয়ে শুরু হওয়া চরিত্রগুলি কীভাবে প্রতিস্থাপন করা যায়?

অর্ডার যারা অক্ষর টাইপ করার জন্য, আপনি তাদের সঙ্গে পূর্বে ভী আবশ্যক Control- vআক্ষরিক পরবর্তী অক্ষরে জন্য।

এই ক্ষেত্রে উদাহরণস্বরূপ: Control- vএরপরে Control- @

আক্ষরিক পরবর্তী অক্ষরগুলির পরিচয় করিয়ে দেওয়া বিশেষ চরিত্রটি সাধারণত Control- vতবে এটি আসলে কনফিগারযোগ্য। stty -aএটি কী সেট করা আছে তা জানতে টাইপ করুন । lnextআউটপুট জন্য সন্ধান করুন।


পোস্টটি তথ্যবহুল .. তবে আমার প্রশ্নের আসল সমাধানটি ক্যারেট প্রতীককে ছাড়িয়ে যাওয়া - :%s#^@##g। যেহেতু আমি অনুলিপি করেছি, টার্মিনাল থেকে আটকানো হয়েছে, vi এগুলি মূল চরিত্র হিসাবে পেস্ট করেছে ...

1
@MadhavanKumar আপনি ক্যারেট প্রতীক অব্যাহতি না, কারণ সেখানে হয় কোন ক্যারেট প্রতীক। এটি সত্যই একটি নিয়ন্ত্রণের অক্ষর। ^letterএটির জন্য কেবল ভিজ্যুয়াল স্বরলিপি, জড়িত কোনও বাস্তব ক্যারেট নেই। এবং হ্যাঁ, আপনাকে নিয়ন্ত্রণের চরিত্রটি থেকে বাঁচতে হবে, Ctrl-V কীবোর্ড থেকে আপনি কীভাবে তা করেন from যে সব জায়গায় কাজ করে। এফওয়াইআই, অন্য উত্তরে একটি বিকল্প রয়েছে যা viকমান্ড লাইনের সাথে সুনির্দিষ্টভাবে কন্ট্রোল অক্ষরটি টাইপ না করে এড়াতে পারে।
সেলেদা

@ মাধবনকুমার যদি আপনার টার্মিনালটিতে NU টি অক্ষরকে দ্বি-চরিত্রের স্ট্রিং হিসাবে প্রদর্শিত হয় ^@এবং আপনি এটি অনুলিপি করে রেখেছিলেন , তবে \^@সেই দুটি অক্ষরের স্ট্রিংটি vi তে উপস্থাপন করতে ব্যবহার করুন । অনেকগুলি সফটওয়্যার ব্যাকস্ল্যাশ ব্যবহার করে "পরবর্তী চরিত্রটি এর বিশেষ ক্রিয়াকলাপটি ব্যবহার না করে আক্ষরিক অর্থে ব্যাখ্যা করতে" বোঝায়।
গিলস

@ গিলিস, আপনি ঠিক বলেছেন .. আমি

4

সেই প্রতীকটি ASCII মান সহ 000 সহ একটি নুল বর্ণের প্রতিনিধিত্ব করে।

আপনি চেষ্টা করতে পারেন:

:%s/\%x00/ /g

বিকল্প:

একটি কী-বোর্ডে যেখানে @ প্রতীক 2কীটির উপরে রয়েছে (ধন্যবাদ সেলাদা) আপনি করতে পারেন:

  • %s/<CTRL-2>/ /g (পিসিতে)

  • %s/<CTRL-SHIFT-2>/ /g (ম্যাকে)

যেখানে <CTRL-2>মানে প্রথম নিচে প্রেস CTRLপিসিতে, চেপে চেপে, হিট যেমন পালন 2, রিলিজ CTRL

এবং এর <CTRL-SHIFT-2>অর্থ প্রথমে controlম্যাকের উপর টিপুন , এটিকে টিপে রাখা হিসাবে রাখা, shiftম্যাকের উপর টিপুন , এটিকে চেপে ধরে রাখুন, হিট করুন 2, ছেড়ে দিন controlএবং shift

অবশেষে, দুটি কমান্ডের উভয়ই %s/^@/ /gস্ক্রিনে ফলাফল হওয়া উচিত । ^@মানে একটি একক অক্ষর, তার ^অনুসরণ না করে @, সুতরাং আপনি উপরের কমান্ডটিতে কেবল টাইপ করতে ^এবং @এক সারিতে পারেন না ।

এই কমান্ডটি সমস্ত ^@স্থানকে স্থানের অক্ষর দ্বারা প্রতিস্থাপন করে ।

( উত্স )


আপনি যখন "পিসি" বলবেন, আপনি উইন্ডোজ বলতে চাইছেন?
স্পারহক

1
সিটিআরএল -২ এবং সিটিআরএল-শিফট -২ কেবল কীবোর্ড লেআউটগুলিতেই বোঝায় যেখানে কীটির @উপরে রয়েছে 2
সেলেদা

@ স্পারহাক: না, আমার মানে একটি লিনাক্স পিসি। :-)
এরিক

সিটিআরএল কেন? আমি কখনও এমন কোনও সিস্টেম দেখিনি যেখানে সিটিআরএলই একটি কী এর বিভিন্ন অর্থের মধ্যে পরিবর্তন করতে ব্যবহৃত চাবি। এটি সাধারণত শিফট।
টেরডন

এটি অদ্ভুত (সম্ভবত ভিমে কোনও বাগ?) তবে এটি কার্যকর। এটি সাধারণত সিটিআরএল + শিফট + ২ (ইউএস-কীবোর্ডে) হওয়া উচিত। এটি একটি পৃথক প্রশ্ন হিসাবে জিজ্ঞাসা করুন বা ভিম বিকাশকারীদের জিজ্ঞাসা করুন। যাইহোক নিয়ন্ত্রণের অক্ষরগুলির জন্য সেলাডের উত্তরটি আরও সাধারণ more
এরিক

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