একটি ভিআইএম স্বতঃসমাংশ থেকে আউটপুট দমন করে


13

আমার ভিএমআরসি-তে আমার একটি স্বতঃসম্পর্কিত সংজ্ঞা রয়েছে:

au BufWritePost * !./make.sh

স্ক্রিপ্টটি 3 বার make.shএকটি .texফাইল সংকলন করে এবং আউটপুট প্রদর্শিত হতে চাই না।

আউটপুট দমন করার উপায় আছে?

কমান্ডের silentআগে আমি একটি লাইন যুক্ত করার চেষ্টা করেছি au, তবে এটি কার্যকর হয়নি। আমিও কোনও সাফল্য না দিয়ে এইভাবে চেষ্টা করেছি ।

উত্তর:


20

নীরবতার আগে যাওয়া উচিত, আগে !./make.shনয় au। ফেলে silentসামনে auশুধু এটা autocommand চুপটি নাম নিবন্ধন করতে পারবেন মানে। পরিবর্তে এটির মতো দেখতে হবে:

au BufWritePost * silent! !./make.sh

কমান্ডটি দিয়ে এই জাতীয় বহিরাগত কমান্ড চালানোর একটি সমস্যা :silentহ'ল স্ক্রিনটি পুনরায় আঁকবে না, আপনাকে একটি ফাঁকা স্ক্রিন রেখে। যাইহোক, ভিমের একটি কমান্ড রয়েছে যা স্ক্রিনটি পুনরায় আঁকবে, যা এর মতো ব্যবহার করা যেতে পারে:

au BufWritePost * silent! execute "!./make.sh >/dev/null 2>&1" | redraw!

এক্সিকিউট কমান্ডটি ব্যবহার করার দরকারের কারণ হ'ল :!কমান্ডটি এর পরে পাওয়া কোনও অক্ষর ব্যবহার করে, যার অর্থ আমি কেবল এটি করতে পারিনি silent! !./make.sh | redraw!কারণ বাশ পরে সমস্ত অক্ষর ব্যাখ্যা করার চেষ্টা করবে !

মন্তব্য

নোট করুন যে :silent!ত্রুটি বার্তাগুলি উপেক্ষা করে, যদিও :silentনা। এছাড়াও, >/dev/null 2>&1অংশটি সমস্ত আউটপুট থেকে পুনঃনির্দেশ !./make.shকরে /dev/null। আপনি এখানে বাশে আই / ও পুনঃনির্দেশ সম্পর্কে আরও পড়তে পারেন ।

প্রাসঙ্গিক সহায়তা বিষয়

  • :help :execute
  • :help :silent
  • :help :!
  • :help :bar

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

1
সাহায্যের execute "!./make.sh"সাথে প্রতিস্থাপন করা হয় execute "!./make.sh >/dev/null 2>&1"? এটি কমান্ডের সমস্ত আউটপুট এতে পুনঃনির্দেশ করে /dev/nullবাশে পুনঃনির্দেশের আরও তথ্যের জন্য tldp.org/LDP/abs/html/io-redirection.html পড়ুন ।
চিরসবুজ

আমি যে চিন্তা থাকা উচিত! এটা কাজ করে। ধন্যবাদ!
আন্দ্রে হারমান বেজারেরা

7

আপনার প্রত্যক্ষ প্রশ্নের উত্তর ঠিক যেমন @ এভারগ্রিনTree পোস্ট করেছে। তবে আমার কাছে মনে হচ্ছে আপনি বিল্ডিং / সংকলন / আবদ্ধকরণ প্রকল্পগুলির জন্য Vim বিল্টিন সরঞ্জামের কিছু হারিয়েছেন। সর্বাধিক উল্লেখযোগ্য :makeএবং কুইকফিক্স তালিকা।

কী :makeআমাদের ব্যবহার করে?

ব্যবহারের :makeফলে আপনার ত্রুটিগুলি কুইকফিক্স তালিকা হিসাবে পরিচিত একটি তালিকাতে সংগ্রহ করতে দেয়। কুইকফিক্সটি ব্যবহার করে আপনি আপনার ফাইলগুলির ত্রুটিগুলির মধ্যে চলাচল করতে পারেন, তাই আপনি কম্পাইলার যেখানে ত্রুটিটি বলেছেন (ডান হাত?) ঠিক সেদিকে ঝাঁপিয়ে পড়ছেন।

: ধরন

রানিং :makeমেক প্রোগ্রামটি কার্যকর করবে 'makeprg',। তারপরে আউটপুটটি বিশ্লেষণ করুন 'errorformat'এবং প্রতিটি এন্ট্রি কুইকফিক্স তালিকায় রাখুন।

সাধারণত কমান্ডটি 'makeprg'ডিফল্ট হয় makeযা ক Makefile। তবে আপনি কমান্ডের 'makeprg'মাধ্যমে আপনার পরিবর্তন করতে পারেন :compilerবা এটি সরাসরি সেট করতে পারেন।

এছাড়াও আপনি অতিরিক্ত যুক্তি পাস করতে পারেন :make। যেমন:make clean

দ্রষ্টব্য: রানিং :makeপ্রায়শই স্ক্রিনের নীচে কমান্ডের আউটপুট প্রদর্শন করে একটি প্রম্পট দিয়ে এন্টার টিপতে বলবে। সমস্ত আউটপুট কুইকফিক্স তালিকায় পাওয়া যাবে বলে কেবল এন্টার টিপুন। আপনি এটি মাধ্যমে দমন করতে পারেন :silent, যেমন :silent make

নীরব মেক করার জন্য একটি সাধারণ কাস্টম কমান্ড হ'ল:

command -nargs=* -bar Smake silent make <args> <bar> cwindow

কুইকফিক্স তালিকা

আপনি চালানোর পরে :makeআপনার কুইকফিক্স তালিকাটি সংকলকটির আউটপুট ধরে রাখবে।

কুইকফিক্স তালিকায় নেভিগেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

  • :copen কুইকফিক্স উইন্ডো খুলতে
  • :cclose কুইকফিক্স উইন্ডোটি বন্ধ করতে
  • :cnext/ :cprevপরবর্তী / পূর্ববর্তী আইটেম সরানো
  • :ccনীচে বর্তমান ত্রুটিটি মুদ্রণ করতে বা :cc 3এই উদাহরণ 3 এ একটি নির্দিষ্ট ত্রুটি দেখানোর জন্য

ব্যক্তিগতভাবে আমি টিম পোপ এর ব্যবহার অটুট quickfix তালিকাটি নেভিগেট করুন প্লাগইন।

:makeস্বয়ংক্রিয়ভাবে এবং নিঃশব্দে চলমান কি ?

আপনি :autocmdযেখানে আপনার মত একটি ঠিক সঙ্গে এটি করতে পারেন।

augroup auto_make
    autocmd!
    autocmd BufWritePost * silent make
    autocmd QuickFixCmdPost *make* cwindow
augroup END

বোনাস হিসাবে আমি :cwindowযদি কোনও ত্রুটি উপস্থিত থাকে তবে তা দিয়ে কুইকফিক্স উইন্ডোটি খুলতে যুক্ত করেছিলাম ।

দ্রষ্টব্য: BufWritePostস্বতঃসিএমডি- তে সেই ফাইলের প্যাটার্নটির সাথে আরও সুনির্দিষ্ট হওয়া উচিত যাতে আন-সম্পর্কিত ফাইলগুলি তৈরি না করে।

আরও আছে ?!

এটি বিশ্বাসের জন্য কয়েকটি ভিমের বিল্টিন কমান্ড প্লাস কয়েকটি অটোকএমডি ব্যবহার করছে। অবশ্যই সহায়তা করতে পারে এমন প্লাগইন এবং সরঞ্জাম অবশ্যই রয়েছে

  • ডিসপ্যাচ.ভিমকে অসম্পূর্ণভাবে:make কাজ চালাতে ব্যবহার করা যেতে পারে ।
  • সিন্টাস্টিক প্লাগইন সিনট্যাক্স পরে ফাইল পরীক্ষা করে :write
  • অ্যালি.ভিম ( অ্যাসিনক্রোনাস লিন্ট ইঞ্জিন) আপনি নিজের পাঠ্য ফাইলগুলি সম্পাদনা করার সময় নিওভিম এবং ভিম 8-এ লিটিং সরবরাহের জন্য একটি প্লাগইন।
  • আনিম্পায়ার্ড.ভিম কুইকফিক্স তালিকা পরিচালনা করা সহজ করে তোলে।
  • সরল পুরানো Makefiles। আপনার ./script.shজটিলতা না থাকলে আপনি মেকিং ব্যবহারের দিকে নজর রাখতে পারেন। এটি পরে আরও কাজ করতে পারে এবং এটি একটি সাধারণ বিল্ডিং সরঞ্জাম scale
  • আপনি সাহায্য করতে পারে এমন আরও প্লাগইন সন্ধান করতে আপনি ভিম অসাধারণ ব্যবহার করতে পারেন।

উপসংহার

ব্যক্তিগতভাবে আমি :makeআমার নিজস্ব কর্মপ্রবাহে সংহত এবং কুইকফিক্স। আমি বিশ্বাস করি আপনার বিল্ড প্রক্রিয়াটির আউটপুট ক্যাপচার করা এবং ত্রুটিগুলি ক্যাপচারটি বিনিয়োগের পক্ষে উপযুক্ত হবে। একটি যুক্ত বোনাস হিসাবে আপনি সম্ভবত কুইকফিক্স তালিকার সাথে আরও আরামদায়ক হয়ে উঠবেন এবং অন্যান্য অ্যাপ্লিকেশনগুলির মতো তালিকাটি ব্যবহার করতে পারেন :grep

আরও সহায়তার জন্য দেখুন:

:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc

আমি এর :makeউত্তর দেওয়ার সময় আমি ভেবেছিলাম , তবে আমি এটি অন্তর্ভুক্ত করি নি। ফোর কম্পাইলিং জিনিসগুলি ব্যবহার করা আরও ভাল ধারণা।
চিরসবুজ

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