টার্মিনাল কমান্ড লাইনে কার্সারটি সরিয়ে দেওয়ার দ্রুততম উপায় (গুলি)?


156

টার্মিনালে প্রদত্ত খুব দীর্ঘ কমান্ড লাইনে ঘুরে দেখার সর্বোত্তম উপায় কী?

বলুন আমি তীরচিহ্নটি ব্যবহার করেছি বা Ctrl- Rএই দীর্ঘ কমান্ড লাইনটি পেতে:

./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50 

এখন আমাকে --option25কিছু পরিবর্তন করার জন্য কার্সারটি (শুরু থেকে শুরু করে বা শেষের শেষে) চলে যেতে হবে।

সেখানে যাওয়ার দ্রুততম উপায় কী? আমি সাধারণত যা করি তা হ'ল Ctrl- Aশুরুতে এবং তারপরে বারবার Alt- Fএগিয়ে যাওয়া, কথায় কথায় (বা Ctrl- Eশেষ পর্যন্ত যেতে Alt- Bএবং তারপরে পিছনে যেতে)। তবে একটি দীর্ঘ লাইনে খুব বেশি সময় লাগে। আমার যে অংশটি সংশোধন করা দরকার সেখান থেকে সরাসরি লাফিয়ে ওঠার একটি উপায় অবশ্যই রয়েছে option25?

উত্তর:


107

যেহেতু এটি এখনও বন্ধ করা হয়নি, এখানে আরও কয়েকটি বিকল্প রয়েছে।

  • ব্যবহারের Ctrl+ + xদ্বারা অনুসরণ Ctrl+ + eসম্পাদক দ্বারা নির্দিষ্ট বর্তমান লাইন খুলতে $FCEDITবা $EDITORবা emacs(যে ক্রমে ব্যবহার)।
  • আপনি যদি কমান্ডটি আগে চালিয়ে থাকেন তবে বিপরীত ইতিহাস অনুসন্ধানের জন্য Ctrl+ টিপুন rএবং টাইপ করুন option25(এই ক্ষেত্রে)। লাইন প্রদর্শিত হবে। Tabএই সময়ে সম্পাদনা শুরু করতে আঘাত করুন ।
  • সংশোধকটির সাথে ইতিহাসের সম্প্রসারণ ব্যবহার করুন s///। উদাহরণস্বরূপ !-2:s/--option25/--newoption/দ্বিতীয় থেকে শেষ কমান্ডটি পুনরায় চালিত করা যেতে পারে তবে বিকল্প 25 প্রতিস্থাপন করা হবে। শেষ ./cmdকমান্ডটি সংশোধন করতে, !stringসিনট্যাক্সটি ব্যবহার করুন : !./cmd:s/--option25/--newoption/
    প্রতিস্থাপনের জায়গায় / জায়গায় কোনও ডিলিমিটার ব্যবহার করা যেতে পারে।
  • পূর্ববর্তী লাইনটি সম্পাদনা করা হলে আপনি দ্রুত প্রতিস্থাপন ব্যবহার করতে পারেন: ^--option25^--newoption
  • চরিত্র অনুসন্ধান। এই প্যাক্স দ্বারা উল্লেখ করা হয়েছিল, এবং নিয়মিত Emacs-মোড মধ্যে সম্পন্ন করা যাবে Ctrl+ ]এগিয়ে অনুসন্ধানের জন্য, এবং Ctrl+ + Alt+ + ]অনগ্রসর অনুসন্ধান।

আমি দ্বিতীয় বিকল্প সুপারিশ। Ctrl+ rসত্যই কার্যকর এবং দ্রুত, সম্পাদকদের সাথে কোন মাতামাতি করা হয় না এবং আপনি কমান্ডটি চালানোর আগে ফলাফল দেখতে পান (ইতিহাসের বিস্তারের বিপরীতে)।


203

পরিষ্কার হওয়ার জন্য, আপনি " টার্মিনাল কমান্ড লাইনে কার্সারটি সরানোর দ্রুত উপায়" চান না । আপনি যা চান তা হ'ল শেল প্রোগ্রামের কমান্ড লাইনের উপরে নেভিগেট করার একটি দ্রুত উপায় ।

উদাহরণস্বরূপ, ব্যাশ খুব সাধারণ শেল। এটি কমান্ড লাইন ইনপুট প্রয়োগ করতে রিডলাইন লাইব্রেরি ব্যবহার করে । এবং তাই বলা যায়, রিডলাইন বাইন্ডিংগুলি জানা খুব সুবিধাজনক কারণ এটি কেবল ব্যাশেই ব্যবহৃত হয় না। উদাহরণস্বরূপ, জিডিবি ইনপুট প্রক্রিয়া করতে রিডলাইনও ব্যবহার করে।

রিডলাইন ডকুমেন্টেশনে আপনি সমস্ত নেভিগেশন সম্পর্কিত বাইন্ডিংগুলি (এবং আরও অনেক কিছু) পেতে পারেন: http://www.gnu.org/software/bash/manual/bash.html#Readline- আন্তঃসংযোগ

উপরের লিঙ্কটি নিচে চলে গেলে সংক্ষিপ্ত অনুলিপি-পেস্ট করুন:

বেয়ার দরকারীগুলোই

  • Ctrl-b একটি অক্ষর ফিরে যান।
  • Ctrl-f একটি অক্ষর এগিয়ে যান।
  • [দিল্লি] বা [ব্যাকস্পেস] কার্সারের বাম দিকের অক্ষরটি মুছুন।
  • Ctrl-d কার্সারের নীচে অক্ষর মুছুন।
  • Ctrl-_ বা Cx Cu শেষ সম্পাদনা কমান্ডটি পূর্বাবস্থায় ফেরান। আপনি খালি লাইনে ফিরে সমস্ত পথ পূর্বাবস্থায় ফেরাতে পারেন।

আন্দোলন

  • লাইনের শুরুতে Ctrl-a সরান।
  • Ctrl-e লাইনের শেষ দিকে যান।
  • मेटा-এফ একটি শব্দের সামনে সরান, যেখানে একটি শব্দ অক্ষর এবং অঙ্কগুলির সমন্বয়ে গঠিত।
  • মেটা-বি একটি শব্দের পিছনে সরান।
  • Ctrl-l স্ক্রিনটি সাফ করুন, শীর্ষে বর্তমান লাইনটি পুনরায় মুদ্রণ করুন।

হত্যা এবং ইয়াঙ্ক

  • Ctrl-k বর্তমান কার্সার অবস্থান থেকে রেখার শেষ পর্যন্ত পাঠ্যটিকে হত্যা করুন।
  • মোঃ কার্সার থেকে বর্তমান শব্দের শেষে বা শব্দের মধ্যে থাকলে পরবর্তী শব্দের শেষে। শব্দ সীমানা এমএফ দ্বারা ব্যবহৃত হিসাবে একই।
  • এম- [দিল্লি] কার্সার থেকে বর্তমান শব্দের সূচনা বা পূর্ববর্তী শব্দের শব্দের মধ্যে যদি শব্দের মধ্যে থাকে তবে তাকে হত্যা করুন। শব্দের সীমানা এমবি দ্বারা ব্যবহৃত হিসাবে একই।
  • Ctrl-w কার্সার থেকে পূর্বের সাদা স্থান পর্যন্ত কিল করুন। এটি এম- এর চেয়ে পৃথক, কারণ শব্দের সীমানা পৃথক।
  • Ctrl-y Yank সর্বাধিক নিহত পাঠ্যটি কার্সারের বাফারে ফিরে আসে।
  • আমার কিল-রিংটি ঘোরান, এবং নতুন শীর্ষটিকে ইঙ্ক করুন। পূর্ববর্তী আদেশটি সাই বা আমার হয় যদি আপনি কেবল এটি করতে পারেন।

এম মেটা কী। ম্যাক্স ওএস এক্স টার্মিনালের জন্য আপনি সেটিংস / কীবোর্ডে "মেটা কী হিসাবে বিকল্পটি ব্যবহার করুন" সক্ষম করতে পারেন। লিনাক্সের জন্য এটি আরও জটিল।

হালনাগাদ

আরও মনে রাখবেন, এই পাঠ্যলাইন দুটি মোডে পরিচালনা করতে পারে:

  • ইমাস মোড (যা পূর্বনির্ধারিত)
  • vi মোড

ভিআই মোড ব্যবহার করতে বাশকে স্যুইচ করতে:

$ set -o vi

পাঠ্য সম্পাদনা করার জন্য আমি ভিআইএম ব্যবহার করায় ব্যক্তিগতভাবে আমি ভিআই মোড পছন্দ করি।

বোনাস

ম্যাকোএস টার্মিনাল অ্যাপে (এবং আইটার্মেও) আপনি কার্সারটি সরানোর জন্য অপশন-ক্লিক করতে পারেন (কার্সার ক্লিক করা অবস্থানে চলে যাবে)। এটি এমনকি ভিতরে কাজ করে vim


3
আমি এই উত্তরটিকে পছন্দ করি কারণ এটি বাশ কীবোর্ড ইনপুট কীভাবে কাজ করে (যেখান থেকে আসে), অর্থাৎ পঠনরেখার [সংক্ষিপ্তসার / মূল / কারণের পিছনে] নেমে যায়।
ইউজেনেভড

6
স্ট্যান্ডার্ড উবুন্টু টার্মিনালে, মেটা (এম) হ'ল আল্ট + শিফট, যদি না আপনি মেনু অ্যাক্সেস কীবোর্ড শর্টকাটকে অক্ষম করেন তবে এটি কেবল আল্ট।
brianpeiris

2
কনসোলের কেডিতে মেটা (এম) সেরা কী
পিপো

সমস্যাটি হ'ল মেটা + এফ কাজ করে না যদি মেটা ALT হয় যেহেতু ALT প্রোগ্রামের চলমান মেনুতে অ্যাক্সেস দেয় (এই ক্ষেত্রে টার্মিনালে)। বিকল্প আছে?
পিথিকোস

1
এমএফ কী, তাই আপনি এখানে নিয়ন্ত্রণ ব্যবহার করেন না তাই এটি কী?
PositiveGuy

33

অপশন কীটি ধরে রাখুন এবং আপনি যেখানে কার্সারটি সরিয়ে নিতে চান সেখানে ক্লিক করুন এবং টার্মিনাল কার্সারটিকে সুনির্দিষ্ট স্পেসে নিয়ে যায়।


2
আপনি কেবল আমার দক্ষতার সদৃশ করেছেন
লে গনজলেজ

কোন পরিবেশে এই কাজ করে? আমার ধারণা কেবল ম্যাক ওএসে?
আব্দুল

এমনকি একটি জাম্প সার্ভারের মাধ্যমে রিমোট এসএসএস লিনাক্সে কাজ করে।
জন জিয়াং

10

আমি ভিআই এডিটিং মোডকে পছন্দ করি (যেহেতু সেই কীস্ট্রোকগুলি এখন আমার মেরুদণ্ডের কর্ডে এমবেড করা আছে (মস্তিষ্ক মোটেই ব্যবহৃত হয় না), পাশাপাশি ওয়ার্ডস্টার ৩.৩ :-) থেকে সিটিআরএল-কে, সিটিআরএল-এক্স) আপনি set -o viএটি সক্রিয় করতে কমান্ড লাইনটি ব্যবহার করতে পারেন (এবং set -o emacsফিরে যেতে)।

ভিআই তে, এটি হবে (অবশ্যই প্রথম লাইনের সাথে উঠতে ইসএসসি-কে) " f5;;B" (ডাবল উদ্ধৃতি ব্যতীত)।

অবশ্যই, আপনাকে এ থেকে দূরে সরে যাওয়ার জন্য লাইনে কী আছে তা বুঝতে হবে। মূলত, এটি

f5 to find the first occurrence of "5" (in --option5).
;  to find the next one (in --option15).
;  to find the next one (in --option25).
B  to back up to the start of the word.

আসুন দেখুন ইম্যাকস আফিকিয়ানোদো আরও 5 টিরও কম কীট্রোক (যদিও আমি ধর্মীয় যুদ্ধ শুরু করতে চাই না) এর চেয়ে ভাল সমাধান নিয়ে আসতে পারি।

আপনি কি ভেবে দেখেছেন যে আপনি সম্ভবত ভয়ঙ্করভাবে দীর্ঘ এই কমান্ডটি কোনও স্ক্রিপ্টে রাখতে চান? :-)

প্রকৃতপক্ষে, আমি এর থেকে আরও ভালভাবে যেতে পারি: " 3f5B" "5" এর তৃতীয় ঘটনাটি খুঁজে পেতে শব্দের শুরুতে ফিরে আসা to


কোনও স্ক্রিপ্টের দরকার নেই - কেবলমাত্র ভিআই মোডে "v" টিপুন এবং সম্পাদকের কমান্ড লাইনটি খুলুন। আপনি নতুন লাইনগুলির সাথে কমান্ডলাইন, ত্রুটি, "স্ক্রিপ্ট" আরও সুন্দরভাবে ফর্ম্যাট করতে পারেন এবং কোনও টেম্পাইলের প্রয়োজন নেই। :) সুতরাং, "ভি / 25" আপনাকে সেখানে 4 টি অক্ষরে নিয়ে যায়।
dannysauer

তবে তারপরে এটি চালানোর জন্য আপনার <<<< চাবিটির চেয়ে বেশি প্রয়োজন। @ উদ্যানসৌয়ের
সিডিআর

9

যথাযথভাবে একটি শব্দের দ্বারা পিছনে / এগিয়ে যেতে মেটা-বি / মেটা-এফ ব্যবহার করুন।

ওএসএক্সে, মেটা ইএসসি হিসাবে অনুবাদ করে, যা সফল হয়।

তবে বিকল্পভাবে, আপনি টার্মিনাল পছন্দগুলি -> সেটিংস -> প্রোফাইল -> কীবোর্ড খুলতে পারেন এবং "মেটা কী হিসাবে বিকল্প ব্যবহার করুন" পরীক্ষা করতে পারেন


8

কমান্ড একবার চালানোর পরে, চালান fc

এটি $EDITORপূর্ববর্তী কমান্ড দিয়ে চালু হবে , তারপরে আপনি কমান্ডটি পরিবর্তন করতে আপনার নিয়মিত সম্পাদক ব্যবহার করতে পারেন। আপনি সংরক্ষণ এবং প্রস্থান করার সময়, ফাইলটি কার্যকর করা হবে।

.. তবে প্যাক্স যেমন বলেছিলেন - কমান্ড লাইনটি অযৌক্তিকভাবে দীর্ঘ লাইনগুলি সম্পাদনার জন্য ভাল নয় - কেন কমান্ডটিকে স্ক্রিপ্টে পরিণত করবেন না?


4

আপনি যদি একটি নির্দিষ্ট সংখ্যক শব্দ এগিয়ে যেতে চান তবে হিট করুন M-<n>( M-মেটা এবং এটির জন্য সাধারণত পালানোর কীটির জন্য) তবে একটি সংখ্যা হিট করুন। এটি রিডলাইনে একটি পুনরাবৃত্তি যুক্তি প্রেরণ করে, যাতে আপনি যে কোনও আদেশ চান তা পুনরায় করতে পারেন - আপনি যদি এগিয়ে যেতে চান তবে হিট করুন M-<n> M-fএবং কার্সারটি <n>শব্দের সংখ্যা এগিয়ে নিয়ে যাবে ।

যেমন

 $|echo "two three four five six seven"
 $ M-4
 (arg: 4) echo "two three four five six seven"
 $ M-f
 $ echo "two three four| five six seven"

সুতরাং কার্সার থেকে আপনার উদাহরণের জন্য লাইনের শুরুতে আপনি আঘাত হানাবেন M-26 M-fএবং আপনার কার্সারটি --option25|লাইনটির প্রান্ত থেকে আপনার কর্সারে প্রবেশ M-26 M-bকরবে--|option25


2

বর্ধিত ইতিহাস অনুসন্ধান

টার্মিনালে প্রবেশ করুন:

gedit  ~/.inputrc

তারপরে কপি পেস্ট করুন এবং সংরক্ষণ করুন

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

পূর্ববর্তী কমান্ডটি সন্ধান করার জন্য আপনাকে যা করতে হবে তা হ'ল প্রথম 2 বা 3 অক্ষর লিখুন এবং উপরের তীরটি আপনাকে দ্রুত সেখানে নিয়ে যাবে বলে আমি চাই:

for f in *.mid ; do timidity "$f"; done

আমাকে যা করতে হবে তা হ'ল প্রবেশ করা

fo

এবং শীঘ্রই উপরের দিকে তীর কমান্ড হিট হবে


1

একটি বিকল্প ব্যবহার করা M-x shellহয় emacs। যে সব সম্পাদনা সুবিধা এবং কীস্ট্রোকগুলি যে প্রদান করে emacsকরেছে, তাই C-sটেক্সট অনুসন্ধান করতে ব্যবহার করা যেতে পারে option25, উদাহরণস্বরূপ।

(তবে কেউ যদি আমাকে ভাল অনুসন্ধান এবং সম্পাদনা করার সুযোগগুলিতে নির্দেশ করতে পারে তবে আমি তার পরিবর্তে প্রকৃত টার্মিনাল শেলের মধ্যে থাকতে পছন্দ করি))


0

মাউস ব্যবহার করুন

কখনও কখনও, একটি কমান্ডলাইন সম্পাদনা করার সহজতম উপায় হ'ল মাউস ব্যবহার করা। পূর্ববর্তী কয়েকটি উত্তর আপনার line সম্পাদনায় আপনার বর্তমান লাইনটি খোলার জন্য একটি আদেশ দেয়। আমার জন্য (জিএমএল কনফিগারেশন সহ জেডএইচএস) সংমিশ্রণটি Alt+e। আপনি যদি আপনার সম্পাদকে মাউস সক্ষম করেন তবে আপনি এটি ব্যবহার করতে পারেন।

ভিমে মাউস সক্ষম করতে এটি আপনার ~ / .vimrc এ যুক্ত করুন

set mouse=a
set ttymouse=xterm2

আপনি যদি টার্মিনালে একটি পাঠ্য নির্বাচন করতে চান (ভিউতে মাউসক্লিক পাস করার পরিবর্তে), আপনি ক্লিক করার সময় শিফটটি ধরে রাখুন; এটি অবশ্যই টার্মিনাল নির্দিষ্ট।

সিসাডমিনদের মাউসকে ভয় পাওয়া উচিত নয়।


0

সাইগউইনে, আপনি উইন্ডোটিতে ডান-ক্লিক করে এই জাতীয় বৈশিষ্ট্যটি সক্রিয় করতে পারেন। পপ-আপ উইন্ডোতে, বিকল্পগুলি নির্বাচন করুন ... -> মাউস -> ক্লিক করুন কমান্ড লাইন কার্সার সক্রিয় করুন -> প্রয়োগ করুন।

এখন থেকে কমান্ড লাইনের কিছু অবস্থানে বাম মাউস বোতামটি ক্লিক করলে কার্সারটি সেখানে স্থান পাবে।


0

প্রথম: EDITOR = 'ন্যানো-এম' রফতানি করুন

তারপরে: ক্রমানুসারে CTRL + X CTRL + E।

আপনার বর্তমান লাইনটি মাউস সক্ষম করে ন্যানো সম্পাদকগুলিতে খুলবে। আপনি পাঠ্য এবং সম্পাদনার যে কোনও অংশে ক্লিক করতে পারেন

তারপরে প্রস্থান করতে সিটিআরএল + এক্স এবং সংরক্ষণের বিষয়টি নিশ্চিত করতে y।


0

কমান্ড লাইন কার্সারটি মাউস ক্লিকে সরানোর জন্য আমি একটি স্ক্রিপ্ট তৈরি করেছি :

  1. এক্সটার্ম মাউস ট্র্যাকিং প্রতিবেদন সক্ষম করুন
  2. ক্লিকগুলি দ্বারা উত্পাদিত এস্কেপ ক্রমটি গ্রাস করতে রিডলাইন বাইন্ডিংগুলি সেট করুন

এটি গিথুবে পাওয়া যাবে

অন্য পোস্টে আরও তথ্য

echo -e "\e[?1000;1006;1015h" # Enable trackingমাউসের সাহায্যে ক্লিক করার সময় টার্মিনালে প্রিন্ট সিকোয়েন্সগুলি কাজ করবে


0

এটি দ্রুততম নাও হতে পারে তবে এটি এখানে হওয়া দরকার, কিছু এএনএসআই কার্সার চলাচল সম্পর্কে পড়ছে

এএনএসআই এর অব্যাহতি সিকোয়েন্সগুলি আপনাকে ইচ্ছামতো স্ক্রিনের চারপাশে কার্সারটি সরাতে দেয়। এটি শেল স্ক্রিপ্টগুলির দ্বারা উত্পন্ন পূর্ণ পর্দার ব্যবহারকারী ইন্টারফেসের জন্য আরও কার্যকর , তবে প্রম্পটেও ব্যবহার করা যেতে পারে । আন্দোলন থেকে বাঁচার ক্রমগুলি নিম্নরূপ:

- Position the Cursor:
  \033[<L>;<C>H
     Or
  \033[<L>;<C>f
  puts the cursor at line L and column C.
- Move the cursor up N lines:
  \033[<N>A
- Move the cursor down N lines:
  \033[<N>B
- Move the cursor forward N columns:
  \033[<N>C
- Move the cursor backward N columns:
  \033[<N>D

- Clear the screen, move to (0,0):
  \033[2J  or \033c
- Erase to end of line:
  \033[K

- Save cursor position:
  \033[s
- Restore cursor position:
  \033[u

(...)

প্রম্পটে নিম্নলিখিত কোডের লাইনটি প্রবিষ্ট করার চেষ্টা করুন (প্রম্পটটি টার্মিনালের নিচে যখন বেশ কয়েকটি লাইন থাকে তবে এটি কী করে তা একটু স্পষ্ট হয়): echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"এটি কার্সারটিকে সাতটি লাইন পর্দা সরাতে হবে, "BASH" শব্দটি মুদ্রণ করুন ", এবং তারপরে যেখানে এটি একটি সাধারণ প্রম্পট উত্পাদন শুরু করেছিল সেখানে ফিরে আসুন।


উদাহরণ :

কার্সারটি 7 লাইনে ফিরে যান:

echo -e "\033[7A"

কার্সারটি 10 ​​নং কলাম, কলাম 5 এ সরান:

echo -e "\033[10;5H"

কোনও প্রোগ্রাম রঙিন করতে দ্রুত রঙের কোডগুলি প্রতিধ্বনিত করুন :

echo -e "\033[35;42m" ; ifconfig
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.