শেল-স্ক্রিপ্ট মোডে থাকাকালীন কেন <<< Eof n <'পরিবর্তে' <<< 'টাইপ করা যায়?


13

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

cat <<< 'some string'

হয়ে

cat <<EOF
< 'some string'

আমি চাই এবং অতিরিক্ত অক্ষর মুছে ফেলতে পারি আমার পছন্দসই অবস্থায় বাফারটি পেতে, তবে এটি অত্যন্ত আপত্তিজনক আচরণ, এবং এটি কেবল শেল-স্ক্রিপ্ট মোডে ঘটে বলে মনে হয়, সাধারণত আমি এই প্যাটার্নটি টাইপ করি। এই আচরণটি অক্ষম করার কোনও উপায় আছে কি?

উত্তর:


13

এটি দ্বারা হয় sh-electric-here-document-mode। সক্ষম করা থাকলে, <<এখানে একটি নথি কঙ্কাল প্রবেশ করানো হবে।

এটি ডিফল্টরূপে সক্ষম করা হয়েছে। আপনি এটি একটি হুক দিয়ে অক্ষম করতে পারেন, যেমন:

(add-hook 'sh-mode-hook (lambda () (sh-electric-here-document-mode -1)))

4
অবশ্যই অন্য একটি বিকল্প সন্নিবেশ করা <<<হয় C-3 <
গ্লুকাস

1
কীভাবে এটি বন্ধ করা যায় তা দেখানোর জন্য আপনাকে ধন্যবাদ। এই শ- বৈদ্যুতিন-এখানে-নথি-মোড একটি বরং অকেজো বৈশিষ্ট্য, আইএমও।
ড্যান মোল্ডিং

এছাড়াও: sh-mode-hookআমার পক্ষে কাজ করে নি, তবে sh-set-shell-hookকরেছে।
ফিলিপ লেমা

17

গ্লুকাস হুবহু সঠিক, তবে তার উত্তরটি পরিপূরক করতে আমার কাছে কোডের এই টুকরা রয়েছে আমি এখানে ডক সন্নিবেশকে একটু স্মার্ট করতে তৈরি করেছি।

sh-electric-here-document-modeসক্ষম হওয়ার সাথে মিলিত এই পরামর্শটি তৈরি করুন যাতে আপনি দুটি শেভরন টাইপ করেন তবে এখানে স্বয়ংক্রিয়ভাবে ডক তৈরি হবে, তবে পরবর্তী অক্ষরটি যদি আপনি টাইপ করেন তবে এটি অন্যদিকে ফিরে যাবে এবং আপনাকে কেবল <<< রেখে দেওয়া হবে।

(defadvice sh--maybe-here-document (around be-smart-about-it activate)
  "Do normal here doc auto insert, but if you type another chevron, revert and leave just <<<."
  (if (and (= (current-column) 1)
           (looking-back "^<")
           (looking-at "\nEOF")
           (save-excursion
             (forward-line -1)
             (end-of-line 1)
             (looking-back "<<EOF")))
      (progn (delete-region (search-backward "EOF") (search-forward "EOF" nil t 2))
             (insert "<"))
    ad-do-it))

অবশ্যই এর অর্থ হ'ল যদি আপনি প্রকৃতপক্ষে শেভ্রন দিয়ে এখানে একটি ডক শুরু করতে চান তবে আপনার এটি কাঁচা ,োকানো দরকার C-q<,। সুতরাং এটি নির্ভর করে যে আপনি আরও বেশি কী করেন, যদি আপনি এখানে ডক্সের চেয়ে আরও বেশি স্ট্রিং করেন তবে এটি থাকা ভাল হতে পারে, আপনি যদি না করেন তবে এটি বিরল যে আপনি শেভ্রন দিয়ে এখানে একটি ডক শুরু করতে চাইবেন এবং অসুবিধে হতে হবে।

এখানে চিত্র বর্ণনা লিখুন


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