سؤال

هل هناك طريقة لتشغيل regexp-سلسلة استبدال على السطر الحالي في باش ؟

أجد نفسي بل في كثير من الأحيان في حالة حيث كنت قد كتبته طويل فلكس ثم أدرك أن كنت ترغب في تغيير كلمة واحدة في مكان ما في الخط.

بلدي النهج الحالي هو الانتهاء من الخط ، اضغط Ctrl+A (للحصول على بداية الخط) ، إدراج # (التعليق الخروج السطر) ، اضغط على enter ومن ثم استخدام ^oldword^newword جملة (^oldword^newword ينفذ الأوامر السابقة بعد استبدال oldword قبل newword).

ولكن يجب أن يكون هناك أفضل (أسرع) وسيلة لتحقيق ذلك.(الماوس غير ممكن ، وبما أنني في ssh-دورات في معظم الوقت).

ربما هناك بعض emacs-مثل مفتاح الأمر على هذا أنني لا أعرف عن.

تحرير:لقد حاولت استخدام السادس-الوضعية.حدث شيء غريب.على الرغم من أنني المحبة همة المستخدم, لدي مشكلة خطيرة باستخدام بلدي الحبيب باش.كل تلك الإصبع الحركات التي تم حرقها في عقلي الباطن توقفت فجأة عن العمل.وسرعان ما عاد إلى emacs-وضع اعتبار ، وإعطاء emacs محاولة المفضلة محرر (على الرغم من أنني أعتقد نفس الشيء قد يحدث مرة أخرى).

هل كانت مفيدة؟

المحلول

للأسف لا, في الحقيقة ليس هناك طريقة أفضل.إذا كنت تعبت من صنع ضربات المفاتيح ، يمكنك استخدام وحدات الماكرو إلى تقليم عليهم.أضف التالي إلى ~/.inputrc:

"\C-x6": "\C-a#\C-m^"
"\C-x7": "\C-m\C-P\C-a\C-d\C-m"

الآن جديد باش سبيل المثال (أو بعد إعادة .inputrc في قذيفة الحالية عن طريق الضغط C-x C-r) ، يمكنك القيام بما يلي:

  1. نوع وهمية الأوامر (على سبيل المثال ، ls abcxyz).
  2. اضغط على Ctrl-x ، ثم 6.الماكرو إدراج # في بداية السطر ، ينفذ علق الخط ، وأنواع الأولى ^.
  3. نوع التصحيح الخاص بك (على سبيل المثال ، xyz^def).
  4. اضغط على Ctrl-x ، ثم 7.الماكرو يكمل استبدال الخاص بك ، ثم يذهب إلى السابقة (علق) خط يزيل التعليق حرف ، وينفذ ذلك مرة أخرى.

انها ليست بالضبط أنيقة, ولكن أعتقد أنه من الأفضل أنك ذاهب للحصول على مع readline.

نصائح أخرى

في ksh في السادس الوضعية ، إذا كنت ضرب 'v' بينما في وضع الأوامر سوف تفرخ كامل السادس الدورة على محتويات موقعك الحالي سطر الأوامر.يمكنك بعد ذلك تحرير باستخدام مجموعة كاملة من السادس الأوامر (العالمية بحث واستبدال في هذه الحالة).عندما :wq من السادس تحريرها تنفيذ الأمر.أنا متأكد من شيء مماثل موجود باش.منذ باش يميل إلى تمديد سابقاتها ، ربما هناك شيء من هذا القبيل.

طاب يومكم ،

ماذا عن استخدام السادس الوضعية بدلا من ذلك ؟ فقط أدخل مجموعة -o السادس

ثم يمكنك الذهاب إلى الكلمة التي تريد التغيير لا مجرد الأسلحة الكيميائية أو الأسلحة الكيميائية اعتمادا على ما في الكلمة ؟

عفوا نسيت أن أضيف إدخال ESC k o إلى السطر السابق في قيادة التاريخ.

ماذا تفعل عادة استخدام محرر ؟

الهتافات ، روب

تحرير:ما نسيت أن أقول في بلدي الأصلي الرد أن كنت بحاجة إلى التفكير في الأمر السادس في خط باش باستخدام الأوامر التي تدخل عندما كنت في "السابق" الوضع في السادسة ، أيبعد أن كنت قد دخلت القولون.

أسوأ شيء هو أن تحتاج إلى التحرك من خلال الأوامر الخاص بك التاريخ القديمة باستخدام السادس الأوامر من ساعة (إلى اليسار) و أنا (إلى اليمين).يمكنك استخدام w (أو ث) أن ترتد عبر الكلمات على الرغم من.

بمجرد أن تعتاد على ذلك على الرغم من أن لديك كل أنواع الأوامر المتاحة مثلدخول ESC / my_command سوف ننظر إلى الوراء من خلالكم r التاريخ الأحدث أولا إلى العثور على أول occurrance من سطر الأوامر التي تحتوي على النص my_command.مرة واحدة وقد وجدت أنه يمكنك بعد ذلك استخدام ن أن تجد المقبل occurrance ، إلخ.و ن لعكس اتجاه البحث.

كنت أذهب قراءة الرجل صفحة باش لمعرفة ما هو المتاح في ظل السادس الوضعية.مرة واحدة يمكنك الحصول على أكثر من حقيقة أن ما يصل السهم-السهم لأسفل يتم استبدال ESC ك ، ثم ي ، سترى أن السادس الوضعية يقدم أكثر من emacs وضع سطر الأوامر التحرير في باش.

IMHO natchurly!(-:

Emacs ؟ ثمانين ميغس باستمرار مبادلة!

الهتافات ، روب

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top