একই লাইনে একাধিক কমান্ড


187

আমি এমন কিছু সন্ধান করার চেষ্টা করছি যা আমাকে ভিমে একই লাইনে একাধিক কমান্ড চালাতে দেয়, সেমিকোলনগুলি ব্যবহার করে * * নিক্স সিস্টেমে বা &উইন্ডোজের পৃথক কমান্ডের জন্য পৃথক আদেশ দেয় । এই কাজ করতে একটি উপায় আছে কি?


2
বাহ আমি আপনার প্রশ্ন (যা আমি করেছি) থেকে ভিএম সম্পর্কে জানার চেষ্টা করছিলাম এবং জানতে পেরেছিলাম যে ইউনিক্স শেল কমান্ডগুলিও আলাদা করার ;পরিবর্তে আমি ব্যবহার করতে পারি &&!

8
@ebyrob আমার মনে এটা দয়া করে মনে রাখবেন গুরুত্বপূর্ণ &&হল শেল কমান্ড তাই যদি আপনি আছে 'বুলিয়ান এবং' command1 && command2, command2শুধুমাত্র যদি চালানো হবে command1সফলভাবে মৃত্যুদন্ড কার্যকর। সঙ্গে ;আপনি শুধু নিজে যে লাইনের শেষে উল্লেখ করছি এবং একটি নতুন এক শুরু। এটি শেল স্ক্রিপ্টে পৃথক লাইনে প্রতিটি কমান্ড লেখার সমান।
হবে

... এবং কমান্ড 1 || কমান্ড 2, কমান্ড 2 কেবলমাত্র কমান্ড 1 ব্যর্থ হলে কার্যকর হবে। এটি কারণ কম্পিউটার যুক্তিযুক্ত || এবং& বিটসাইড, এবং যদিও "এবং&" ইঙ্গিত দেয় যে কমান্ড 1 এবং কমান্ড 2 উভয়ই সরিয়ে নেওয়া উচিত, কমান্ড 1 ব্যর্থ হলে কমান্ড 2 মূল্যায়নের প্রয়োজন হয় না কারণ সেমিডি 2 কি ফিরে আসে তা প্রথম দিক থেকে মিথ্যা ফিরে আসার পরে সর্বদা ব্যর্থ হবে ( 0), এবং 0 && 1 টি এখনও শূন্য থাকবে imilar একইভাবে, কমান্ড 1 = সত্য হলে, একটি ওআর মূল্যায়নে 2 কমান্ডের কোনও কারণ নেই কারণ সেসময় এটি ইতিমধ্যে সত্য (1), কারণ 1 || 0 হয় 1 এবং কেবল যদি এটি হয় 0, 0 এর প্রয়োজন হবে || 1 (যা এখনও 1)
ওসিরিসগোথর

@osirisgothra যা শর্ট সার্কিট / শর্ট সার্কিট মূল্যায়ন হিসাবে পরিচিত।
speakingcode

উত্তর:


241

একটি বার |আপনাকে এটি করার অনুমতি দেবে। থেকে:help :bar

'|'কমান্ড পৃথক করতে ব্যবহার করা যেতে পারে, তাই আপনি এক লাইনে একাধিক কমান্ড দিতে পারেন। আপনি ব্যবহার করতে চান তাহলে '|'একটি আর্গুমেন্ট, এটা দিয়ে বসে '\'

উদাহরণ:

:echo "hello" | echo "goodbye"

আউটপুট:

hello
goodbye

এনবি: আপনি দেখতে পাবেন যে আপনার ~/.vimrcম্যাপিং সমর্থন করে না |, বা \|। এই ক্ষেত্রে, <bar>পরিবর্তে ব্যবহার করার চেষ্টা করুন ।


8
মুষ্টিমেয় কমান্ডগুলির সাথে নজর রাখুন যা কার্যকর হয় না |!
খুব বেশি পিএইচপি

31
যখন আপনি নিজেকে mapবিবৃতিতে একাধিক কমান্ড ব্যবহার করতে চাইছেন (এবং আমাকে বিশ্বাস করুন, আপনি করবেন), পরীক্ষা করে দেখুন :help map_bar
বিল ওড

8
সেটা সত্য. আমি সুপারভাইজারের উপর খুব প্রশ্নটি কয়েক মাস আগে জিজ্ঞাসা করেছি। আমার ম্যাপিংয়ের জন্য .vimrcএকটি পালানো বারকে সমর্থন করে না \|। আমি শিখেছি আমাকে আসলে টাইপ করতে হবে <bar>
মাইক্রোমাইকেল

কাজের সমাধানের জন্য ধন্যবাদ! :help barগতি.টিএসটিএস দেখায় এবং একাধিক কমান্ড সম্পর্কে কিছুই দেখায় না।
geekQ

1
@ জিেককিউ হওয়া উচিত:help <bar>
শ্রী কাদিমিসেটি

90

<CR>কমান্ডের মধ্যে এবং পরে (ক্যারিজ রিটার্ন / এন্টার) রাখুন । উদাহরণ স্বরূপ:

map <F5> :w<CR>:!make && ./run<CR>

ব্যবহার করবেন না |কারণ:

  • আপনি যদি |সেগুলি ব্যবহার করেন তবে কিছু কমান্ডের সমস্যা রয়েছে

  • | কনফিগারেশন ফাইলগুলিতে অবিচ্ছিন্নভাবে কাজ করে না, দেখুন :help map_bar


42

আপনি আপনার আদেশগুলি কার্যকর করে এমন একটি ফাংশন সংজ্ঞায়িত করতে পারেন।

function Func()
     :command
     :command2 
endfunction

এবং এটিতে রাখুন, উদাহরণস্বরূপ, আপনার ভিএমআরসি। সাথে ফাংশন চালান

exec Func()

1
পরিষ্কার সমাধান। দুটি বা মাত্র দীর্ঘ কমান্ডের জন্য অবশ্যই কার্যকর হবে definitely
ইমারির্কস

1
চেষ্টা / ধরার মাধ্যমে ত্রুটিগুলি হস্তান্তর করার দক্ষতার জন্যও খুব দরকারী।
ইমমানুয়েল ওয়েহনাচটেন

2
এটি ব্যবহার করা আরও প্রচলিত :call Func()কারণ এর :execute Func()অর্থ আরও কিছু। এর অর্থ হ'ল কমান্ড হিসাবে ফাংশনের রিটার্ন মান সম্পাদন করা। এখানে বর্ণিত ফাংশনটিতে সাধারণত কোনও কমান্ড থাকে না যা শুরু হয় :return, সুতরাং এর ফেরতের মানটি শূন্য হবে। কমান্ড হিসাবে সম্পাদন করা কার্সারটিকে বর্তমান বাফারের প্রথম লাইনে স্থানান্তরিত করে, যা আপনার মনে ছিল তা সবসময় হয় না।
মিনিপ্রেট


16

আমি সর্বদা + , + ^Jটিপে একাধিক কমান্ড পৃথক করতে ব্যবহার করেছি ।CtrlvCtrlj


এটি একমাত্র সমাধান যা বাস্তবে কাজ করে বলে মনে হয়। আমি যদি স্ট্রিংয়ে এটি ব্যবহার করতে চাই তবে আমি কাকে এটি নির্দিষ্ট করব?
ডেরওহ

আপনি ^Jস্ট্রিংয়ে কমান্ড বিভাজক হিসাবে ব্যবহার করতে পারবেন না কারণ এটি স্ট্রিংটি সমাপ্ত করে NUL অক্ষরটি সন্নিবেশ করছে। তবে আপনি <CR> = "\ n" ব্যবহার করতে পারেন।
টিনমারিনো

exe "echo 'foo' \n echo 'bar'"
টিনমারিনো 10:25 এগ্রো

exe "echo 'foo'" . nr2char(0x0a) . "echo 'bar'"
টিনমারিনো 10:25 এগ্রো

map aa :echo 'foo' <C-V><C-J> echo 'bar'<CR>
টিনমারিনো 10:25 এগ্রো

11

ভেবেছিল এটি কোনও ব্যক্তিকে শৃঙ্খলে প্রতিস্থাপনের চেষ্টা করতে সহায়তা করতে পারে এবং একটি ব্যর্থ হয়

একটি মন্তব্য থেকে

% s/word/newword/ge | % s/word2/newword2/ge

eস্ট্রিংটি পাওয়া না গেলে আপনি ত্রুটিটিকে উপেক্ষা করতে পতাকাটি ব্যবহার করতে পারেন ।


2

আপনি একটি নতুন ফাইল তৈরি করতে পারেন এবং এতে আপনার আদেশগুলি লিখতে পারেন। তারপরে :so %, যার অর্থ সোর্স কারেন্ট ফাইল।

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