ভিমের সাথে আপনার সর্বাধিক উত্পাদনশীল শর্টকাট কী?


1126

আমি ভিম সম্পর্কে অনেক শুনেছি , উভয় পক্ষের মতামত আছে। সত্যিই মনে হয় আপনার অন্য কোনও সম্পাদকের চেয়ে ভিমের সাথে দ্রুত হওয়া উচিত (বিকাশকারী হিসাবে)। আমি কিছু বেসিক জিনিস করতে ভিম ব্যবহার করছি এবং আমি ভিমের সাথে সেরা 10 গুণ কম উত্পাদনশীল

আপনি যখন গতি সম্পর্কে কথা বলছেন তখন কেবলমাত্র দুটি বিষয় যা আপনার উচিত care

  1. বিকল্পভাবে বাম এবং ডান হাত ব্যবহার করা কীবোর্ডটি ব্যবহারের দ্রুততম উপায়।
  2. মাউসটিকে স্পর্শ করা কখনই তত দ্রুত হওয়া দ্বিতীয় উপায়। আপনার হাত সরাতে, মাউসটি ধরতে, এটিকে সরাতে এবং কী-বোর্ডে ফিরিয়ে আনতে যুগে যুগে সময় লাগে (এবং আপনার হাতটি সঠিকভাবে সঠিকভাবে ফিরে এসেছেন তা নিশ্চিত করার জন্য আপনাকে প্রায়শই কীবোর্ডটি দেখতে হবে)

আমি কেন ভিমের সাথে অনেক কম উত্পাদনশীল তা প্রমাণ করার জন্য এখানে দুটি উদাহরণ রয়েছে।

অনুলিপি / কাটা এবং পেস্ট করুন। আমি সব সময় এটা। সমস্ত সমসাময়িক সম্পাদক সহ আপনি Shift বাম হাত দিয়ে টিপুন এবং আপনি পাঠ্য নির্বাচন করতে আপনার ডান হাত দিয়ে কার্সারটি সরান। তারপরে Ctrl+ Cঅনুলিপিগুলি, আপনি কার্সারটি সরান এবং Ctrl+ Vপেস্ট করে।

ভিমের সাথে এটি ভয়াবহ:

  • yy একটি লাইন অনুলিপি করতে (আপনি প্রায় পুরো লাইন চান না!)
  • [number xx]yyxxবাফারে লাইনগুলি অনুলিপি করতে । আপনি যা চান তা বেছে নিয়েছেন কিনা তা আপনি কখনই জানেন না। আমি প্রায়শই [number xx]ddআবার uকরতে হবে!

আরেকটি উদাহরণ? অনুসন্ধান এবং প্রতিস্থাপন।

  • ইন PSPad : Ctrl+ + fতারপর টাইপ করুন আপনার জন্য, তারপর প্রেস অনুসন্ধান চান কি Enter
  • ভিমে: এর /পরে, আপনি যা অনুসন্ধান করতে চান তা টাইপ করুন, তারপরে প্রতিটি বিশেষ চরিত্রের \আগে যদি কিছু বিশেষ অক্ষর রাখা হয় , তবে টিপুন ।Enter

এবং ভিমের সাথে থাকা সমস্ত কিছুই এরকম: মনে হয় এটিকে সঠিক উপায়ে কীভাবে পরিচালনা করতে হয় তা আমি জানি না।

এনবি: আমি ইতিমধ্যে ভিম চিট শিটটি পড়েছি :)

আমার প্রশ্নটি হ'ল:

আপনি কীভাবে ভিম ব্যবহার করেন যা আপনাকে সমসাময়িক সম্পাদকের চেয়ে বেশি উত্পাদনশীল করে তোলে?


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

উত্তর:


2860

ভিমের সাথে আপনার সমস্যা হ'ল আপনি ভি কর্কশ করবেন না ।

আপনি কাটার কথা উল্লেখ করেছেন yyএবং অভিযোগ করেছেন যে আপনি প্রায় পুরো লাইন কাটতে চান না। প্রকৃতপক্ষে প্রোগ্রামারগুলি, সোর্স কোড সম্পাদনা করার জন্য, প্রায়শই পুরো লাইনগুলি, লাইনের পরিসীমা এবং কোডের ব্লকগুলিতে কাজ করতে চায়। তবে, yyবেনামি অনুলিপি বাফারে (বা vi তে বলা হয় "রেজিস্ট্রেশন" ) এর পাঠ্যকে ইঙ্ক করার একমাত্র উপায় ।

Vi এর "জেন" হ'ল আপনি কোনও ভাষা বলছেন। প্রাথমিক yএকটি ক্রিয়াপদ হয়। বিবৃতি yyএকটি প্রতিশব্দ y_yসহজে টাইপ করতে, যেহেতু এটা যেমন একটি সাধারণ অপারেশন করা পর্যন্ত দ্বিগুণ করা হয়।

এটি হিসাবে প্রকাশ করা যেতে পারে dd P(বর্তমান লাইনটি মুছুন এবং একটি অনুলিপি আবার জায়গায় আটকান; পার্শ্ব প্রতিক্রিয়া হিসাবে বেনামে রেজিস্টারে একটি অনুলিপি রেখে)। yএবং d"ক্রিয়া" এর পাশে তাদের হিসাবে কোন আন্দোলন নিতে "বিষয়।" সুতরাং yW"Yank এখান থেকে (কার্সার) বর্তমান / পরবর্তী (বড়) শব্দের শেষে থেকে" এবং y'aহল "Yank এখান থেকে 'নামক চিহ্ন ধারণকারী লাইন একটি ।"

আপনি যদি কেবলমাত্র বেসিক, ডাউন, বাম এবং ডান কার্সার চলনগুলি বুঝতে পারেন তবে vi আপনার জন্য "নোটপ্যাড" এর অনুলিপি ছাড়া আর ফলবান হবে না। (ঠিক আছে, আপনার কাছে এখনও সিনট্যাক্স হাইলাইটিং এবং একটি পিডলিং ~ 45KB বা তার চেয়ে বড় ফাইল হ্যান্ডেল করার ক্ষমতা থাকবে; তবে আমার সাথে এখানে কাজ করুন)।

vi এর 26 "চিহ্ন" এবং 26 "রেজিস্ট্রার রয়েছে। mকমান্ডটি ব্যবহার করে যে কোনও কার্সার অবস্থানে একটি চিহ্ন সেট করা আছে । প্রতিটি চিহ্ন একটি একক লোয়ার কেস লেটার দ্বারা মনোনীত করা হয়। এভাবে বর্তমান অবস্থানে ma' a ' চিহ্ন mzসেট করে এবং ' z ' চিহ্নটি সেট করে । আপনি '(একক উদ্ধৃতি) কমান্ডটি ব্যবহার করে একটি চিহ্নযুক্ত লাইনে যেতে পারেন can এভাবে 'a' a ' চিহ্ন যুক্ত রেখার শুরুতে চলে যায় । আপনি `(ব্যাককোট) কমান্ডটি ব্যবহার করে যে কোনও চিহ্নের সঠিক স্থানে যেতে পারেন to সুতরাং `zসরাসরি ' z ' চিহ্নের সঠিক স্থানে চলে যাবে ।

কারণ এটি "আন্দোলন" এগুলি অন্যান্য "বিবৃতিতে" বিষয় হিসাবেও ব্যবহার করা যেতে পারে।

সুতরাং, পাঠ্যের একটি স্বেচ্ছাসেবী নির্বাচন কাটানোর একটি উপায় হ'ল একটি চিহ্ন ফেলে রাখা (আমি সাধারণত ' a ' কে আমার "প্রথম" চিহ্ন হিসাবে ব্যবহার করি, ' z ' কে আমার পরবর্তী চিহ্ন হিসাবে, ' b ' অন্য হিসাবে, এবং ' e ' হিসাবে হিসাবে ব্যবহার করি) আর একটি (আমি স্মরণ করি না যে vi ব্যবহারের 15 বছরে চারটি চিহ্নের বেশি ইন্টারেক্টিভভাবে ব্যবহার করেছি ; কেউ ম্যাক্রো দ্বারা কীভাবে চিহ্ন এবং রেজিস্টার ব্যবহার করা হয় সে সম্পর্কিত একটি নিজস্ব সম্মেলন তৈরি করে যা কোনও ব্যক্তির ইন্টারেক্টিভ প্রসঙ্গে বিরক্ত করে না) তারপরে আমরা যাই আমাদের কাঙ্ক্ষিত পাঠ্যের অন্য প্রান্তে; আমরা উভয় প্রান্তেই শুরু করতে পারি, এতে কিছু যায় আসে না Then তারপরে আমরা কেবল d`aকাটা বা y`aঅনুলিপি ব্যবহার করতে পারি Thus সুতরাং সম্পূর্ণ প্রক্রিয়াটিতে একটি 5 কীস্ট্রোক ওভারহেড থাকে (ছয়টি যদি আমরা "সন্নিবেশ করানো শুরু করি তবে ছয়টি "মোড এবং প্রয়োজনEscআউট কমান্ড মোড)। একবার আমরা কাটা কপি করে থাকেন তারপর একটি কপিতে পেস্ট একটি একক কীস্ট্রোক হল: p

আমি বলি যে এটি পাঠ্যটি কাটা বা অনুলিপি করার এক উপায়। তবে এটি অনেকের মধ্যে একটি মাত্র। প্রায়শই আমরা আমাদের কর্সারকে ঘুরিয়ে না দিয়ে এবং চিহ্ন না ফেলেই পাঠ্যের পরিসীমা আরও সংক্ষিপ্তভাবে বর্ণনা করতে পারি। উদাহরণস্বরূপ যদি আমি পাঠ্যের অনুচ্ছেদে থাকি তবে আমি অনুচ্ছেদটির শুরুতে বা শেষে যথাক্রমে ব্যবহার করতে {এবং }আন্দোলন করতে পারি । সুতরাং, পাঠ্যের অনুচ্ছেদে স্থানান্তরিত করতে আমি এটি { d}(3 কীস্ট্রোক) ব্যবহার করে কেটেছি । (আমি যদি ইতিমধ্যে অনুচ্ছেদের প্রথম বা শেষ লাইনে উপস্থিত হই তবে আমি কেবল যথাক্রমে d}বা d{যথাক্রমে ব্যবহার করতে পারি ।

"অনুচ্ছেদে" ধারণাটি এমন কোনও ক্ষেত্রে ডিফল্ট হয় যা সাধারণত স্বজ্ঞাতভাবে যুক্তিসঙ্গত হয়। সুতরাং এটি প্রায়শই কোড পাশাপাশি গদ্যের জন্যও কাজ করে।

প্রায়শই আমরা এমন কিছু প্যাটার্ন জানি (নিয়মিত প্রকাশ) যা আমাদের আগ্রহী পাঠ্যের এক প্রান্ত বা অন্যটি চিহ্নিত করে। সামনের দিকে বা পিছনে সন্ধান করা vi এর চলন । সুতরাং এগুলি আমাদের "বিবৃতিতে" বিষয় হিসাবেও ব্যবহার করা যেতে পারে। সুতরাং আমি d/foo"লু" স্ট্রিং যুক্ত পরবর্তী লাইনটি বর্তমান লাইন থেকে কাটাতে এবং বর্তমান লাইন থেকে y?bar"বার" ধারণকারী সাম্প্রতিক (পূর্ববর্তী) লাইনে অনুলিপি করতে পারি। আমি যদি পুরো লাইনগুলি না চাই তবে আমি অনুসন্ধানের চলনগুলি (তাদের নিজস্ব বিবৃতি হিসাবে) ব্যবহার করতে পারি, আমার চিহ্ন (গুলি) ফেলে দিন এবং `xপূর্বে বর্ণিত কমান্ডগুলি ব্যবহার করব ।

"ক্রিয়াপদ" এবং "বিষয়" এর পাশাপাশি vi এর "অবজেক্টস" (শব্দটির ব্যাকরণগত অর্থে) রয়েছে। এখনও অবধি আমি কেবল বেনামে রেজিস্টার ব্যবহারের বর্ণনা দিয়েছি। যাইহোক, আমি " ডাবল উদ্ধৃতি সংশোধনকারী " সহ "অবজেক্ট" রেফারেন্স উপস্থাপন করে 26 "নামের" নিবন্ধগুলির যে কোনওটি ব্যবহার করতে পারি "। সুতরাং আমি যদি ব্যবহার "addকরি তবে আমি বর্তমান রেখাটি ' ' রেজিস্টারে "by/fooকাটছি এবং যদি আমি ব্যবহার করি তবে আমি এখানে ' বি ' রেজিস্টারে "foo" ধারণকারী পরবর্তী লাইনে লেখার অনুলিপিটি ইয়েঙ্ক করছি । একটি রেজিস্টার থেকে আটকানোর জন্য আমি কেবল একই সংশোধক ক্রমের সাথে পেস্টটিকে উপসর্গ করেছি: "ap' ' রেজিস্টারের একটি অনুলিপি আটকান"bPবর্তমান লাইনের আগে ' বি ' থেকে একটি অনুলিপি আটকান ।

"উপসর্গ" এর এই ধারণাটি ব্যাকরণগত "বিশেষণ" এবং "অ্যাডওয়্যারস" এর এনালগগুলিকে আমাদের পাঠ্য ম্যানিপুলেশন "ভাষায় যুক্ত করে। 3Jএর অর্থ "পরবর্তী তিনটি লাইনে যোগ দিন" এবং এর d5}অর্থ "এখান থেকে নীচে পঞ্চম অনুচ্ছেদের শেষে বর্তমান রেখাটি থেকে মুছুন"।

এটি সমস্ত মধ্যবর্তী স্তর vi । এর কোনওটিই ভিম নির্দিষ্ট নয় এবং vi তে আরও অনেক উন্নত কৌশল রয়েছে যদি আপনি সেগুলি শিখতে প্রস্তুত হন। আপনি যদি কেবলমাত্র এই মধ্যবর্তী ধারণাগুলি আয়ত্ত করতে পারেন তবে সম্ভবত আপনি কোনও ম্যাক্রো লেখার খুব কমই দরকার পড়েছিলেন কারণ সম্পাদকের "নেটিভ" ভাষা ব্যবহার করে বেশিরভাগ জিনিস সহজেই পাঠ্য ম্যানিপুলেশন ভাষা যথেষ্ট সংক্ষিপ্ত এবং অভিব্যক্তিপূর্ণ হতে পারে।


আরও উন্নত কৌশলগুলির একটি নমুনা:

বেশ কয়েকটি :কমান্ড রয়েছে, উল্লেখযোগ্যভাবে :% s/foo/bar/gবৈশ্বিক প্রতিস্থাপন কৌশল। (এটি উন্নত নয় তবে অন্যান্য :আদেশগুলিও হতে পারে)। :কমান্ডের পুরো সেটটি icallyতিহাসিকভাবে vi এর পূর্ববর্তী অবদানগুলি এড (লাইন সম্পাদক) এবং পরে প্রাক্তন (বর্ধিত লাইন সম্পাদক) ইউটিলিটি হিসাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছিল । আসলে vi এর নাম দেওয়া হয়েছে কারণ এটি ভিজ্যুয়াল ইন্টারফেসটি প্রাক্তন হতে পারে

:কমান্ডগুলি সাধারণত পাঠ্যের লাইনে কাজ করে। টার্মিনাল স্ক্রিনগুলি অস্বাভাবিক ছিল এবং অনেক টার্মিনাল "টেলি টাইপ" (টিটিওয়াই) ডিভাইস ছিল এমন সময়ে যুগে এড এবং প্রাক্তন লেখা হয়েছিল। সুতরাং পাঠ্যটির মুদ্রিত অনুলিপিগুলি থেকে কাজ করা খুব সাধারণ কাজ ছিল, অত্যন্ত সংক্ষিপ্ত ইন্টারফেসের মাধ্যমে কমান্ড ব্যবহার করে (সাধারণ সংযোগের গতি 110 সেকেন্ড বা মোটামুটিভাবে প্রতি সেকেন্ডে 11 ​​টি অক্ষর ছিল - যা দ্রুত টাইপিস্টের চেয়ে ধীর হয়; ল্যাগগুলি সাধারণ ছিল মাল্টি-ইউজার ইন্টারেক্টিভ সেশনস; কাগজ সংরক্ষণের জন্য প্রায়শই কিছুটা অনুপ্রেরণা ছিল)।

সুতরাং বেশিরভাগ :কমান্ডের বাক্য গঠনটিতে একটি ঠিকানা বা ঠিকানাগুলির পরিসর (লাইন নম্বর) অন্তর্ভুক্ত থাকে যার পরে একটি আদেশ থাকে। স্বাভাবিকভাবেই এক আক্ষরিক লাইন সংখ্যা ব্যবহার করতে পারে: :127,215 s/foo/barপ্রতিটি লাইনে এ "বার" মধ্যে "foo বিন্যাস" প্রথম সংঘটন পরিবর্তন করতে 127 এবং 215. এক মধ্যে যেমন কিছু বর্ণমালা ব্যবহার করতে পারে .বা $যথাক্রমে বর্তমান এবং গত লাইনের জন্য। একজন যথাক্রমে উপসর্গগুলি ব্যবহার করতে পারেন +এবং -যথাক্রমে নিরাময়কারী লাইনের পরে বা আগে অফসেটগুলি উল্লেখ করতে পারেন। সুতরাং: :.,$jঅর্থ "বর্তমান রেখা থেকে শেষ লাইনে, তাদের সকলকে একটি লাইনে যুক্ত করুন" (সব লাইন) এর :%সমার্থক শব্দ :1,$

:... gএবং :... vকমান্ড কিছু ব্যাখ্যা বহন হিসাবে তারা অবিশ্বাস্যভাবে শক্তিশালী। :... gএকটি প্যাটার্ন (নিয়মিত প্রকাশ) এর সাথে মিলিত সমস্ত রেখায় পরবর্তী কমান্ড প্রয়োগ করার জন্য "বিশ্বব্যাপী" হ'ল একটি উপসর্গ যা সেই সমস্ত কমান্ড :... vপ্রয়োগ করে যা প্রদত্ত প্যাটার্নের সাথে মেলে না (যা "কনভার্স" থেকে "ভি") v অন্যান্য প্রাক্তন কমান্ডগুলির মতো এগুলি / রেঞ্জের রেফারেন্সগুলিকে সম্বোধন করে উপসর্গ করা যেতে পারে। এর :.,+21g/foo/dঅর্থ "পরবর্তী 21 টি লাইনের মধ্য দিয়ে" foo "স্ট্রিং যুক্ত যে কোনও লাইন মুছুন" এর :.,$v/bar/dঅর্থ "এখান থেকে ফাইলের শেষ অবধি," বার "স্ট্রিং না থাকা কোনও লাইন মুছুন।

এটি আকর্ষণীয় যে সাধারণ ইউনিক্স কমান্ড গ্রেপ প্রকৃতপক্ষে এই প্রাক্তন কমান্ড দ্বারা অনুপ্রাণিত হয়েছিল (এবং এটি যেভাবে এটি নথিভুক্ত করা হয়েছিল তার নাম অনুসারে)। প্রাক্তন কমান্ড :g/re/p(, grep) তারা নথিভুক্ত কিভাবে "বিশ্বব্যাপী" "রেগুলার এক্সপ্রেশন" (পুনরায়) "একটি ধারণকারী লাইন" মুদ্রণ ছিল। যখন এড এবং প্রাক্তন ব্যবহার করা হত, :pকমান্ডটি প্রথম যেটি কেউ শিখেছিল এবং যে কোনও ফাইল সম্পাদনার সময় প্রায়শই প্রথম ব্যবহৃত হত of এটি কীভাবে আপনি বর্তমান সামগ্রীগুলি মুদ্রণ করেছেন (সাধারণত একবারে :.,+25pবা কেবল এমন কিছু ব্যবহার করে একটি পৃষ্ঠায় পূর্ণ থাকে )।

নোট করুন :% g/.../dবা (এর পুনর্বিবেচনা / কনভার্স কাউন্টার পার্ট: :% v/.../dসর্বাধিক সাধারণ ব্যবহারের নিদর্শন However তবে অন্যান্য কয়েকটি exকমান্ড রয়েছে যা স্মরণযোগ্য worth

আমরা mলাইনগুলি চারদিকে ঘোরাতে, এবং jলাইনে যোগ দিতে ব্যবহার করতে পারি । উদাহরণস্বরূপ যদি আপনার একটি তালিকা রয়েছে এবং আপনি মুছে ফেলা ব্যতীত সমস্ত স্টাফ ম্যাচিংয়ের (বা বিপরীতভাবে কিছু প্যাটার্নের সাথে মেলে না) আলাদা করতে চান, তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন: :% g/foo/m$... এবং সমস্ত "ফু" লাইনগুলিতে স্থানান্তরিত হবে ফাইলের শেষ। (আপনার ফাইলের শেষটি স্ক্র্যাচ স্পেস হিসাবে ব্যবহার করার বিষয়ে অন্যান্য টিপটি নোট করুন)। এটি সমস্ত "foo" রেখার অপেক্ষাকৃত অর্ডার সংরক্ষণ করবে এবং বাকী তালিকা থেকে এনেছে। (এটি এমন কিছু করার সমতুল্য: 1G!GGmap!Ggrep foo<ENTER>1G:1,'a g/foo'/d(ফাইলটিকে তার নিজের লেজে অনুলিপি করুন, লেজটি ফিল্টার করুন grepএবং সমস্ত জিনিস মাথা থেকে মুছুন)।

লাইনে যোগ দিতে সাধারণত আমি পূর্বসূরীর সাথে যুক্ত হওয়া সমস্ত রেখার জন্য একটি প্যাটার্ন খুঁজে পেতে পারি (উদাহরণস্বরূপ, বুলেট তালিকার "^ *" এর পরিবর্তে "^" দিয়ে শুরু হওয়া সমস্ত লাইন)। সে ক্ষেত্রে আমি ব্যবহার করব: :% g/^ /-1j(প্রতিটি মিলের লাইনের জন্য, একটি লাইন উপরে যান এবং তাদের সাথে যোগ দিন)। (বিটিডাব্লু: বুলেটলাইনগুলি বুলেটলাইনগুলি অনুসন্ধান করার চেষ্টা করছে এবং পরবর্তীটিতে যোগ দেওয়ার জন্য কয়েকটি কারণে কাজ করে না ... এটি একটি বুলেট লাইনে অন্য যুক্ত হতে পারে এবং এটি সমস্ত বুলেট লাইনে যোগ দেবে না ) এর ধারাবাহিকতা; এটি কেবল ম্যাচগুলিতে যুগলভাবে কাজ করবে)।

আপনি এবং আমাদের (গ্লোবাল / কনভার্স-গ্লোবাল) কমান্ডের সাহায্যে আমাদের পুরানো বন্ধু s(বিকল্প) ব্যবহার করতে পারেন তা উল্লেখ করার প্রায় প্রয়োজন নেই । সাধারণত আপনার এটি করার দরকার নেই। তবে, এমন কিছু ক্ষেত্রে বিবেচনা করুন যেখানে আপনি কেবল অন্য কয়েকটি প্যাটার্নের সাথে মিল রেখে লাইনে পরিবর্তন করতে চান। প্রায়শই আপনি ক্যাপচারগুলির সাথে একটি জটিল প্যাটার্ন ব্যবহার করতে পারেন এবং যে পরিবর্তনগুলি চান না এমন লাইনগুলির অংশগুলি সংরক্ষণ করতে পিছনে উল্লেখগুলি ব্যবহার করতে পারেন। তবে প্রায়শই ম্যাচটি বিকল্পের থেকে আলাদা করা সহজ হবে: - "ফু" সমেত প্রতিটি লাইনের জন্য "জেডজেডস" এর সাথে সমস্ত "বার" বিকল্পযুক্ত। (কিছুটা এইরকমgv:% g/foo/s/bar/zzz/g:% s/\(.*foo.*\)bar\(.*\)/\1zzz\2/gকেবলমাত্র "বার" এর ক্ষেত্রে কেবল সেই ক্ষেত্রে কাজ করবে যা একই লাইনে "foo" দ্বারা প্রেরিত হয়েছিল; এটি ইতিমধ্যে যথেষ্ট পরিমাণে যথেষ্টই যথেষ্ট, এবং "বার" এর আগে "ফু" এর আগে থাকা সমস্ত কেস ধরতে আরও ম্যাঙ্গেল করতে হবে)

বিন্দু শুধু চেয়ে বেশি যে p, sএবং dলাইন exকম্যান্ড সেট।

:ঠিকানাগুলি এছাড়াও চিহ্ন উল্লেখ করতে পারেন। সুতরাং আপনি এটি ব্যবহার করতে পারেন: :'a,'bg/foo/jতার পরবর্তী লাইনে স্ট্রিং foo যুক্ত যে কোনও লাইনে যোগ দিতে, যদি এটি ' a ' এবং ' b ' চিহ্নগুলির মধ্যে রেখার মাঝে থাকে । (হ্যাঁ, পূর্ববর্তী সমস্ত exকমান্ডের উদাহরণগুলি এই ধরণের সম্বোধন অভিব্যক্তিগুলির সাথে উপসর্গ করে ফাইলের লাইনগুলির উপধারার মধ্যে সীমাবদ্ধ থাকতে পারে)।

এটি বেশ অস্পষ্ট (আমি গত 15 বছরে কয়েকবার এরকম কিছু ব্যবহার করেছি)। যাইহোক, আমি নির্দ্বিধায় স্বীকার করব যে আমি প্রায়শই পুনরাবৃত্তভাবে এবং ইন্টারেক্টিভভাবে জিনিসগুলি করেছি যা সম্ভবত আরও সঠিকভাবে করা সম্ভব হত যদি আমি সঠিক সময়টি আবিষ্কার করার জন্য সময় নিই taken

আরেকটি খুব দরকারী vi বা প্রাক্তন কমান্ডটি হ'ল :rঅন্য ফাইলের বিষয়বস্তু পড়তে। সুতরাং: :r fooবর্তমান লাইনে "foo" নামের ফাইলের বিষয়বস্তু সন্নিবেশ করানো হয়।

আরও শক্তিশালী হ'ল :r!আদেশ। এটি একটি কমান্ডের ফলাফলগুলি পড়ে। এটি vi সেশন স্থগিতকরণ , কমান্ড চালানো, এর আউটপুটটিকে অস্থায়ী ফাইলে পুনর্নির্দেশ করা, আপনার vi সেশনটি পুনরায় শুরু করা এবং টেম্প থেকে সামগ্রীগুলি পড়া সমান। ফাইল।

আরও শক্তিশালী !হ'ল (ব্যাং) এবং :... !( প্রাক্তন ব্যাং) কমান্ড। এগুলি বাহ্যিক কমান্ডগুলিও কার্যকর করে এবং বর্তমান পাঠ্যে ফলাফলগুলি পড়ে। যাইহোক, তারা কমান্ডের মাধ্যমে আমাদের পাঠ্যের নির্বাচনগুলিও ফিল্টার করে! এটি আমরা আমাদের ফাইলে সমস্ত লাইনকে বাছাই করতে পারি 1G!Gsort( Gএটি vi "গোটো" কমান্ড ব্যবহার করে; এটি ফাইলের শেষ লাইনে যাওয়ার জন্য ডিফল্ট হয় তবে লাইন নম্বর দ্বারা উপসর্গ করা যেতে পারে, যেমন 1, প্রথম লাইন)। এটি প্রাক্তন বৈকল্পিকের সমতুল্য :1,$!sort। লেখকরা প্রায়শই !ইউনিক্স এফএমটি বা ভাঁজ ইউটিলিটিগুলির সাথে পুনর্নির্মাণের জন্য বা "শব্দ মোড়ানোর" পাঠ্যের নির্বাচনের জন্য ব্যবহার করেন। একটি খুব সাধারণ ম্যাক্রো হয়{!}fmt(বর্তমান অনুচ্ছেদে পুনরায় ফর্ম্যাট করুন)। প্রোগ্রামাররা কখনও কখনও ইনডেন্ট বা অন্যান্য কোড পুনর্নির্মাণ সরঞ্জামগুলির মাধ্যমে তাদের কোড বা এটির কিছু অংশ চালাতে ব্যবহার করে ।

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

আরেকটি দরকারী প্রাক্তন কমান্ড হ'ল :so(সংক্ষিপ্ত :source)। এটি কমান্ডের সিরিজ হিসাবে কোনও ফাইলের বিষয়বস্তু পড়তে পারে। আপনি যখন ভিআই শুরু করেন এটি সাধারণত, অন্তর্নিহিতভাবে, একটি ফাইল সম্পাদন :sourceকরে ~/.exinitrc(এবং ভিম সাধারণত এটি করেন ~/.vimrc, স্বাভাবিকভাবেই যথেষ্ট)। এর ব্যবহার হ'ল আপনি ম্যাক্রোস, সংক্ষিপ্তসারগুলি এবং সম্পাদকীয় সেটিংসের নতুন সেটটিতে স্যুরসিং করে ফ্লাইটে আপনার সম্পাদক প্রোফাইল পরিবর্তন করতে পারেন। আপনি যদি চুপচাপ হন তবে আপনি চাহিদা অনুযায়ী ফাইলগুলিতে প্রয়োগ করার জন্য প্রাক্তন সম্পাদনা কমান্ডের ক্রমগুলি সংরক্ষণ করার কৌশল হিসাবে এটি ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ আমার কাছে একটি সাত লাইনের ফাইল (৩ characters টি অক্ষর) রয়েছে যা ডাব্লু ভিসির মাধ্যমে একটি ফাইল চালায় এবং সেই শব্দ গণনা ডেটাযুক্ত ফাইলের শীর্ষে একটি সি-স্টাইল মন্তব্য সন্নিবেশ করান। আমি এই "ম্যাক্রো" কে একটি ফাইলের মতো কমান্ড ব্যবহার করে প্রয়োগ করতে পারি:vim +'so mymacro.ex' ./mytarget

( Vi এবং Vim- র+ কমান্ড লাইন বিকল্পটি সাধারণত নির্দিষ্ট রেখা সংখ্যায় সম্পাদনা অধিবেশন শুরু করতে ব্যবহৃত হয়। তবে এটি একটি সামান্য জ্ঞাত সত্য যে কোনও বৈধ প্রাক্তন কমান্ড / এক্সপ্রেশন যেমন কোনও "উত্স" কমান্ড অনুসরণ করতে পারে আমি এখানে করেছি; একটি সাধারণ উদাহরণের জন্য আমার কাছে স্ক্রিপ্ট রয়েছে যা অনুরোধ করে: আমার এসএসএইচ পরিচিত হোস্টগুলি অ-ইন্টারেক্টিভ ফাইল থেকে একটি এন্ট্রি সরিয়ে ফেলার জন্য যখন আমি সার্ভারের একটি সেট পুনরায় ইমেজ করি।+vi +'/foo/d|wq!' ~/.ssh/known_hosts

সাধারণত এটা যেমন "ম্যাক্রো" পার্ল, awk ব্যবহার লিখতে পর্যন্ত সহজ sed (যা, আসলে, মত , grep একটি দ্বারা অনুপ্রাণিত ইউটিলিটি ইডি কমান্ড)।

@কমান্ড সম্ভবত সবচেয়ে অস্পষ্ট ষষ্ঠ কমান্ড। মাঝেমধ্যে প্রায় এক দশক ধরে অ্যাডভান্স সিস্টেম সিস্টেম অ্যাডমিনিস্ট্রেশন কোর্স পড়ানোর সময় আমি খুব কম লোকের সাথে দেখা করেছি যারা এটি কখনও ব্যবহার করেনি। @কোনও রেজিস্ট্রারের বিষয়বস্তুগুলি কার্যকর করে যেমন এটি কোনও vi বা প্রাক্তন কমান্ড।
উদাহরণ: আমি প্রায়শই ব্যবহার করি: :r!locate ...আমার সিস্টেমে কিছু ফাইল সন্ধান করতে এবং এটির নামটি আমার নথিতে পড়তে। থেকে সেখানে আমি ফাইল আমি কাঠখড় পোড়ানো হয়। বরং আগ্রহী একমাত্র সম্পূর্ণ পথ ছাড়ার কোনো বিদেশী হিট মুছুন, Tabপথের প্রতিটি উপাদানের (অথবা মাধ্যমে -ing খারাপ, আমি যদি ট্যাব সমাপ্তির সমর্থন ছাড়া একটি মেশিনে আটকে যেতে ঘটতে এর vi এর অনুলিপিটিতে ) আমি কেবল ব্যবহার করি:

  1. 0i:r(বর্তমান লাইনটিকে বৈধ : r কমান্ডে রূপান্তর করতে ),
  2. "cdd ("গ" রেজিস্টারে লাইনটি মুছতে) এবং
  3. @c এই আদেশটি কার্যকর করুন।

এটি কেবলমাত্র 10 টি কীস্ট্রোক (এবং অভিব্যক্তিটি "cdd @cকার্যকরভাবে আমার জন্য একটি আঙুলের ম্যাক্রো, তাই আমি এটি প্রায় কোনও সাধারণ ছয় অক্ষরের শব্দের প্রায় দ্রুত টাইপ করতে পারি)।


একটি স্বচ্ছল চিন্তা

আমি কেবলমাত্র vi এর শক্তির তলদেশে আছড়ে পড়েছি এবং আমি এখানে যা বর্ণনা করেছি তার একটিও "উন্নতি" এর অংশ নয় যার জন্য ভিম নামকরণ করা হয়েছে! আমি এখানে যা বর্ণনা করেছি তার সমস্তই 20 বা 30 বছর আগের vi এর কোনও পুরানো অনুলিপিটিতে কাজ করা উচিত ।

এমন সব লোকজন যথেষ্ট বেশি ব্যবহার করেছেন হয় ষষ্ঠ চেয়ে আমি কখনো হবে এর শক্তি।


440
পবিত্র কোড বানর, .. এটি এক গভীর উত্তর। দুর্দান্তটি হ'ল আপনি সম্ভবত প্রায় 10 টি কীস্ট্রোকে ভিমে লিখেছিলেন।
এশিউইন iteক্যবদ্ধ

48
@Wahnfieden - grok আমি ঠিক কি বোঝানো হয়: en.wikipedia.org/wiki/Grok (এটা দৃশ্যত OED এমনকি নিকটতম আমরা anglophones আছে একটি ক্যানোনিকাল শব্দকোষ এর ---)। একজন সম্পাদককে "কুঁচকানো" বোঝার জন্য এটির আদেশগুলি সাবলীলভাবে ব্যবহার করে নিজেকে সন্ধান করা ... যেন তারা আপনার প্রাকৃতিক ভাষা।
জিম ডেনিস

22
বাহ, খুব ভাল লিখিত উত্তর! আমি আরও একমত হতে পারি না, যদিও আমি @কমান্ডটি অনেক ব্যবহার করি ( qরেকর্ড ম্যাক্রোর সাথে মিশ্রণে )
নিটল

63
চমত্কার উত্তর যা পুরোপুরি সত্যই এক ভয়াবহ প্রশ্নটিকে খণ্ডন করে। আমি এই প্রশ্নটিকে উচ্চতর করতে যাচ্ছি, সাধারণত আমি নীচে নামব, যাতে এই উত্তরটি খুঁজে পাওয়া সহজ হয়। (এবং আমি একজন ইমাক্স লোক! তবে এইভাবে নতুন কোথাও নতুন লোকদের নির্দেশ করতে চাইব, যারা ভিআই পাওয়ার ব্যবহারকারীরা vi সম্পর্কে মজাদার কী তা সম্পর্কে ভাল ব্যাখ্যা চান Then তারপরে আমি তাদের ইম্যাকস সম্পর্কে বলব এবং তারা সিদ্ধান্ত নিতে পারে))
ব্র্যান্ডন রোডস

8
আপনি কি কোনও ওয়েবসাইট তৈরি করতে পারেন এবং এই টিউটোরিয়ালটি সেখানে রাখতে পারেন, তাই এটি স্ট্যাকওভারফ্লোতে এখানে কবর দেওয়া হবে না। আমি এখনও vi এর আরও ভাল পরিচয় পড়তে পারি।
মার্কো

504

আপনি পাঠ্য নির্বাচন বা অনুলিপি সম্পর্কে কথা বলছেন, আমি মনে করি আপনার ভিম ভিজ্যুয়াল মোডে নজর দেওয়া উচিত ।

ভিজ্যুয়াল মোডে, আপনি ভিম কমান্ড ব্যবহার করে পাঠ্য নির্বাচন করতে সক্ষম হন, তারপরে আপনি নির্বাচনের সাথে যা খুশি তা করতে পারেন।

নিম্নলিখিত সাধারণ পরিস্থিতি বিবেচনা করুন:

আপনি পরবর্তী ম্যাচিং বন্ধনী নির্বাচন করতে হবে।

আপনি করতে পারেন:

  • v% যদি কার্সারটি শুরু / শেষ বন্ধনী হয়
  • vib কার্সারটি বন্ধনী ব্লকের ভিতরে থাকলে

আপনি উদ্ধৃতিগুলির মধ্যে পাঠ্য নির্বাচন করতে চান:

  • vi " ডাবল উদ্ধৃতি জন্য
  • vi ' একক উদ্ধৃতি জন্য

আপনি একটি কোঁকড়া ধনুর্বন্ধনী ব্লক নির্বাচন করতে চান (সি স্টাইলের ভাষাগুলিতে খুব সাধারণ):

  • viB
  • vi{

আপনি পুরো ফাইলটি নির্বাচন করতে চান:

  • ggVG

ভিজ্যুয়াল ব্লক নির্বাচনটি অন্য একটি দরকারী বৈশিষ্ট্য, এটি আপনাকে পাঠ্যের একটি আয়তক্ষেত্রাকার অঞ্চল নির্বাচন করতে দেয়, আপনাকে এটি শুরু করতে চাপতে হবে Ctrl- Vএবং তারপরে আপনি যে পাঠ্য ব্লকটি চান তা নির্বাচন করুন এবং যেকোন ধরণের অপারেশন যেমন ইয়াঙ্ক, মুছুন, পেস্ট করুন, সম্পাদনা করুন ইত্যাদি কলাম ভিত্তিক পাঠ্য সম্পাদনা করা দুর্দান্ত ।


2
প্রতিটি সম্পাদক এর কিছু এই জাতীয় থাকে, এটি vim নির্দিষ্ট করা যায় না।
ফাইনাল

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

9
আমি মনে করি এটি ব্লক বাছাইয়ের জন্য Ctrl-V উল্লেখ করাও উপযুক্ত worth আপনার যখন এটি প্রয়োজন তখন এটি একটি জীবনদাতা।
হামিশ ডাউনার

6
@ উইকসিত: আমি ক্যামটাসিয়া ব্যবহার করছি, তবে প্রচুর বিকল্প রয়েছে: কোডিংহরর.ব্লগ
সিএমএস

3
এছাড়াও, আপনি যদি ভিজ্যুয়াল নির্বাচন পেয়ে থাকেন এবং এটিকে সামঞ্জস্য করতে চান oতবে অন্য প্রান্তে এগিয়ে যাবে। সুতরাং আপনি নিজের পছন্দ অনুযায়ী নির্বাচনের শুরু এবং শেষ উভয় স্থানান্তর করতে পারেন।
নাথান লং

207

কিছু উত্পাদনশীলতার টিপস:

স্মার্ট চলাচল

  • *এবং #কার্সারের নিচে সামনের / পিছনে শব্দটি অনুসন্ধান করুন।
  • w পরের শব্দ
  • W পরের স্পেস-বিভক্ত শব্দটিতে
  • b/ eবর্তমান শব্দের শুরু / শেষ পর্যন্ত। ( B/ Eকেবল স্থান পৃথক করার জন্য)
  • gg/ Gলাফ দিয়ে ফাইলের শুরু / শেষ দিকে যান।
  • % মেলে jump ..} বা (..), ইত্যাদিতে লাফ দিন ..
  • {/ }পরবর্তী অনুচ্ছেদে লাফিয়ে।
  • '. শেষ সম্পাদিত লাইনে ফিরে যান
  • g; শেষ সম্পাদিত অবস্থানে ফিরে যান।

দ্রুত সম্পাদনা কমান্ড

  • I শুরুতে .োকান।
  • A শেষ করতে সংযোজন।
  • o/ Oবর্তমানের / পরে একটি নতুন লাইন খুলুন।
  • v/ V/ Ctrl+Vভিজ্যুয়াল মোড (পাঠ্য নির্বাচন করতে!)
  • Shift+R পাঠ্য প্রতিস্থাপন
  • C লাইনের অবশিষ্ট অংশ পরিবর্তন করুন।

কম্যান্ডিং কমান্ড

বেশিরভাগ কমান্ড একটি পরিমাণ এবং দিকনির্দেশ গ্রহণ করে, উদাহরণস্বরূপ:

  • cW = শব্দ শেষ হওয়া পর্যন্ত পরিবর্তন
  • 3cW = 3 শব্দ পরিবর্তন করুন
  • BcW = সম্পূর্ণ শব্দ শুরু করতে, সম্পূর্ণ শব্দ পরিবর্তন করুন
  • ciW = অভ্যন্তরীণ শব্দ পরিবর্তন করুন।
  • ci" ".." এর মধ্যে অভ্যন্তরীণ পরিবর্তন করুন
  • ci( (..) এর মধ্যে পাঠ্য পরিবর্তন করুন
  • ci<<<>> এর মধ্যে পাঠ্য পরিবর্তন করুন ( set matchpairs+=<:>ভিআরসিআরএর প্রয়োজন)
  • 4dd = 4 টি লাইন মুছুন
  • 3x = 3 টি অক্ষর মুছুন।
  • 3s = 3 অক্ষর বিকল্প।

দরকারী প্রোগ্রামার কমান্ড

  • rএকটি অক্ষর rdপ্রতিস্থাপন করুন (উদাহরণস্বরূপ বর্তমান চরটি প্রতিস্থাপন করে d)।
  • ~ কেস পরিবর্তন।
  • J দুটি লাইনে যোগ দেয়
  • Ctrl + A / Ctrl + X বৃদ্ধি / সংখ্যা হ্রাস করে।
  • . শেষ আদেশটি (একটি সাধারণ ম্যাক্রো) পুনরাবৃত্তি করুন
  • == লাইন ইন্ডেন্ট ঠিক করুন
  • > ইনডেন্ট ব্লক (ভিজ্যুয়াল মোডে)
  • < আনইন্ডেন্ট ব্লক (ভিজ্যুয়াল মোডে)

ম্যাক্রো রেকর্ডিং

  • q[ key ]রেকর্ডিং শুরু করতে টিপুন ।
  • তারপরে qরেকর্ডিং বন্ধ করতে আঘাত করুন ।
  • ম্যাক্রো সঙ্গে খেলা যেতে পারে @[ key ]

খুব নির্দিষ্ট কমান্ড এবং গতিবিধি ব্যবহার করে, ভিআইএম পরবর্তী লাইনের জন্য সেই সঠিক ক্রিয়াগুলি পুনরায় খেলতে পারে। (উদাহরণস্বরূপ এ-এন্ড-টু-এন্ড, b/ eকার্সারটিকে শব্দের শুরুতে বা শেষে যথাক্রমে স্থানান্তরিত করতে)

ভালভাবে নির্মিত সেটিংসের উদাহরণ

# reset to vim-defaults
if &compatible          # only if not set before:
  set nocompatible      # use vim-defaults instead of vi-defaults (easier, more user friendly)
endif

# display settings
set background=dark     # enable for dark terminals
set nowrap              # dont wrap lines
set scrolloff=2         # 2 lines above/below cursor when scrolling
set number              # show line numbers
set showmatch           # show matching bracket (briefly jump)
set showmode            # show mode in status bar (insert/replace/...)
set showcmd             # show typed command in status bar
set ruler               # show cursor position in status bar
set title               # show file in titlebar
set wildmenu            # completion with menu
set wildignore=*.o,*.obj,*.bak,*.exe,*.py[co],*.swp,*~,*.pyc,.svn
set laststatus=2        # use 2 lines for the status bar
set matchtime=2         # show matching bracket for 0.2 seconds
set matchpairs+=<:>     # specially for html

# editor settings
set esckeys             # map missed escape sequences (enables keypad keys)
set ignorecase          # case insensitive searching
set smartcase           # but become case sensitive if you type uppercase characters
set smartindent         # smart auto indenting
set smarttab            # smart tab handling for indenting
set magic               # change the way backslashes are used in search patterns
set bs=indent,eol,start # Allow backspacing over everything in insert mode

set tabstop=4           # number of spaces a tab counts for
set shiftwidth=4        # spaces for autoindents
#set expandtab           # turn a tabs into spaces

set fileformat=unix     # file mode is unix
#set fileformats=unix,dos    # only detect unix file format, displays that ^M with dos files

# system settings
set lazyredraw          # no redraws in macros
set confirm             # get a dialog when :q, :w, or :wq fails
set nobackup            # no backup~ files.
set viminfo='20,\"500   # remember copy registers after quitting in the .viminfo file -- 20 jump links, regs up to 500 lines'
set hidden              # remember undo after quitting
set history=50          # keep 50 lines of command history
set mouse=v             # use mouse in visual mode (not normal,insert,command,help mode


# color settings (if terminal/gui supports it)
if &t_Co > 2 || has("gui_running")
  syntax on          # enable colors
  set hlsearch       # highlight search (very useful!)
  set incsearch      # search incremently (search while typing)
endif

# paste mode toggle (needed when using autoindent/smartindent)
map <F10> :set paste<CR>
map <F11> :set nopaste<CR>
imap <F10> <C-O>:set paste<CR>
imap <F11> <nop>
set pastetoggle=<F11>

# Use of the filetype plugins, auto completion and indentation support
filetype plugin indent on

# file type specific settings
if has("autocmd")
  # For debugging
  #set verbose=9

  # if bash is sh.
  let bash_is_sh=1

  # change to directory of current file automatically
  autocmd BufEnter * lcd %:p:h

  # Put these in an autocmd group, so that we can delete them easily.
  augroup mysettings
    au FileType xslt,xml,css,html,xhtml,javascript,sh,config,c,cpp,docbook set smartindent shiftwidth=2 softtabstop=2 expandtab
    au FileType tex set wrap shiftwidth=2 softtabstop=2 expandtab

    # Confirm to PEP8
    au FileType python set tabstop=4 softtabstop=4 expandtab shiftwidth=4 cinwords=if,elif,else,for,while,try,except,finally,def,class
  augroup END

  augroup perl
    # reset (disable previous 'augroup perl' settings)
    au!  

    au BufReadPre,BufNewFile
    \ *.pl,*.pm
    \ set formatoptions=croq smartindent shiftwidth=2 softtabstop=2 cindent cinkeys='0{,0},!^F,o,O,e' " tags=./tags,tags,~/devel/tags,~/devel/C
    # formatoption:
    #   t - wrap text using textwidth
    #   c - wrap comments using textwidth (and auto insert comment leader)
    #   r - auto insert comment leader when pressing <return> in insert mode
    #   o - auto insert comment leader when pressing 'o' or 'O'.
    #   q - allow formatting of comments with "gq"
    #   a - auto formatting for paragraphs
    #   n - auto wrap numbered lists
    #   
  augroup END


  # Always jump to the last known cursor position. 
  # Don't do it when the position is invalid or when inside
  # an event handler (happens when dropping a file on gvim). 
  autocmd BufReadPost * 
    \ if line("'\"") > 0 && line("'\"") <= line("$") | 
    \   exe "normal g`\"" | 
    \ endif 

endif # has("autocmd")

সেটিংসগুলিতে স্টোরেজ করা যেতে পারে ~/.vimrc, বা সিস্টেম-ব্যাপী /etc/vimrc.localএবং তারপরে /etc/vimrcফাইলটি পড়ে এটি ব্যবহার করে:

source /etc/vimrc.local

(এটি আপনাকে ভিআইএম-এ কাজ করার জন্য #মন্তব্যের চরিত্রটি প্রতিস্থাপন "করতে হবে, আমি এখানে সঠিক বাক্য গঠন দিতে চাই)।

আমি এখানে যে কমান্ডগুলি তালিকাভুক্ত করেছি সেগুলি বেশ বেসিক এবং আমি এখনও অবধি ব্যবহার করা প্রধানগুলি। অভিনব সমস্ত জিনিস না জেনে তারা ইতিমধ্যে আমাকে বেশ উত্পাদনশীল করে তুলেছে।


4
তুলনায় উন্নত '.হয় g;, যার মাধ্যমে ফিরে জাম্প changelist। শেষ সম্পাদিত লাইনের পরিবর্তে শেষ সম্পাদিত অবস্থানে যায়
nnot101

98

Control+ + Rপ্রক্রিয়া খুবই দরকারী :-) সালে পারেন মোড সন্নিবেশ বা কমান্ড মোডে (চালু অর্থাত :, একটি সংখ্যাযুক্ত বা নামে রেজিস্টার অগ্রসর লাইন যখন টাইপিং কমান্ড):

  • a- zনাম রেজিস্টার
  • " সর্বশেষ মোছা বা ইয়াঙ্কের পাঠ্য সম্বলিত নামবিহীন রেজিস্টার
  • % বর্তমান ফাইলের নাম
  • # বিকল্প ফাইলের নাম
  • * ক্লিপবোর্ডের সামগ্রীগুলি (এক্স 11: প্রাথমিক নির্বাচন)
  • + ক্লিপবোর্ডের সামগ্রী
  • / শেষ অনুসন্ধান প্যাটার্ন
  • : শেষ কমান্ড-লাইন
  • . শেষ .োকানো পাঠ্য
  • - শেষ ছোট (একটি রেখার চেয়ে কম) মুছুন
  • =5*5 পাঠ্যে 25 প্রবেশ করান (মিনি-ক্যালকুলেটর)

আরও বিশদ বিবরণ দেখুন :help i_CTRL-Rএবং :help c_CTRL-Rআরও কাছাকাছি স্নুপ করুন।


10
এফওয়াইআই, এটি সন্নিবেশ মোডে Ctrl + R বোঝায় । স্বাভাবিক মোডে, Ctrl + R আবার করা হয়।
vdboor

2
বর্তমান / বিকল্প ফাইল নামের জন্য +1। Control-Aসর্বশেষ sertedোকানো পাঠ্যের জন্য সন্নিবেশ মোডেও কাজ করে এবং সর্বশেষ সন্নিবেশ করা পাঠ্য Control-@দুটি সন্নিবেশ করে এবং তত্ক্ষণাত্ সাধারণ মোডে স্যুইচ করে।
আরেহ লাইব বৃষ

91

ভিম প্লাগইনস

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

rails.vim

রেলস.ভিম টিপোপ দ্বারা লিখিত একটি প্লাগইন। এটি রেলের বিকাশকারী লোকদের পক্ষে একটি অবিশ্বাস্য সরঞ্জাম। এটি মায়াবী প্রসঙ্গ-সংবেদনশীল জিনিসগুলি করে যা আপনাকে নিয়ন্ত্রকের কোনও পদ্ধতি থেকে সহজেই সম্পর্কিত দৃশ্যে, কোনও মডেলের ওপরে এবং সেই মডেলের জন্য ইউনিট পরীক্ষায় নেমে আসে। এটি রেল বিকাশকারী হিসাবে কয়েক ঘন্টা না হলেও কয়েক ডজন সংরক্ষণ করেছে।

gist.vim

এই প্লাগইনটি আপনাকে ভিজ্যুয়াল মোডে পাঠ্যের একটি অঞ্চল নির্বাচন করতে এবং gist.github.com এ পোস্ট করার জন্য একটি দ্রুত কমান্ড টাইপ করতে দেয় । এটি সহজ পেস্টবিন অ্যাক্সেসের অনুমতি দেয়, আপনি যদি আইআরসি বা আইএম এর সাথে কারও সাথে সহযোগিতা করছেন তবে অবিশ্বাস্যরূপে কার্যকর।

space.vim

এই প্লাগইন স্পেসবারে বিশেষ কার্যকারিতা সরবরাহ করে। এটি স্পেসবারকে সময়ের সাথে সামঞ্জস্যপূর্ণ কিছুতে রূপান্তরিত করে, তবে ক্রিয়াগুলি পুনরাবৃত্তি করার পরিবর্তে এটি গতিগুলির পুনরাবৃত্তি করে। আপনি ফ্লাইতে যেভাবে সংজ্ঞা দিচ্ছেন কোনও ফাইলের মাধ্যমে দ্রুত এগিয়ে যাওয়ার পক্ষে এটি খুব সহজ হতে পারে।

surround.vim

এই প্লাগইনটি আপনাকে কিছু ফ্যাশনে সীমানাযুক্ত পাঠ্যের সাথে কাজ করার সক্ষমতা দেয়। এটি আপনাকে এমন অবজেক্ট দেয় যা প্যারেন্সের ভিতরে বা কোটের অভ্যন্তরের জিনিসগুলিকে বোঝায়।

supertab.vim

এই স্ক্রিপ্টটি অভিনব ট্যাব সমাপ্তির কার্যকারিতা নিয়ে আসে। স্বয়ংক্রিয়রূপে স্টাফগুলি ইতিমধ্যে ভিমের মূল অংশে রয়েছে তবে এটি একাধিক বিভিন্ন মাল্টিকি শর্টকাটের পরিবর্তে দ্রুত ট্যাবে নিয়ে আসে। ব্যবহার করা খুব সহজ, এবং অবিশ্বাস্যভাবে মজাদার। যদিও এটি ভিএস এর ইন্টিলিজেন্স নয়, এটি একটি দুর্দান্ত পদক্ষেপ এবং আপনি একটি ট্যাব সমাপ্তির সরঞ্জাম থেকে আশা করতে চান কার্যকারিতা একটি দুর্দান্ত চুক্তি নিয়ে আসে।

syntastic.vim

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

fugitive.vim

ভিআইএম এর ভিতরে থেকে গিটের সরাসরি অ্যাক্সেস। আবার, আমি এই প্লাগইনটি ব্যবহার করি নি, তবে আমি ইউটিলিটিটি দেখতে পাচ্ছি। দুর্ভাগ্যক্রমে আমি এমন একটি সংস্কৃতিতে আছি যেখানে এসএনএনকে "নতুন" হিসাবে বিবেচনা করা হয়, তাই আমি সম্ভবত বেশ কিছু সময়ের জন্য কাজের ফাঁকে দেখব না।

nerdtree.vim

ভিমের জন্য একটি ট্রি ব্রাউজার। আমি সম্প্রতি এটি ব্যবহার শুরু করেছি এবং এটি সত্যিই সহজ। এটি আপনাকে উল্লম্ব বিভাজনে একটি ট্রিউজ রাখতে দেয় এবং সহজেই ফাইলগুলি খুলতে দেয়। আপনি প্রায়শই মাঝখানে ঝাঁপিয়ে পড়ে প্রচুর উত্স ফাইল সহ একটি প্রকল্পের জন্য এটি দুর্দান্ত।

FuzzyFinderTextmate.vim

এটি একটি অবিস্মরণীয় প্লাগইন তবে এটি অবিশ্বাস্যরূপে কার্যকর। এটি "ফাজি" বর্ণনামূলক বাক্য গঠন ব্যবহার করে ফাইলগুলি খোলার ক্ষমতা সরবরাহ করে। এর অর্থ হ'ল ফাইলগুলির একটি বিচ্ছুরিত বৃক্ষের জন্য আপনার ক্রুফট বাকি অংশগুলি থেকে আগ্রহী ফাইলগুলি ছত্রভঙ্গ করতে কেবল পর্যাপ্ত অক্ষর প্রয়োজন।

উপসংহার

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

ধন্যবাদ

ধন্যবাদ duwanis তার জন্য তেজ configs যা থেকে আমি অনেক শিখেছি এবং এখানে তালিকাভুক্ত প্লাগইনগুলির সবচেয়ে ধার করেছি।


Rails.vim এ জাদুকরী পরীক্ষা-থেকে-শ্রেণীর নেভিগেশন হ'ল আমি আশা করি যে ভিমে টেক্সটমেটটি সমস্ত ভাষায় একেবারে নখ পেয়েছিল: আমি যদি পার্সন.স্কালায় কাজ করছি এবং আমি সিএমডি + টি করি তবে সাধারণত প্রথম জিনিস তালিকায় রয়েছে পার্সোন টেস্ট.স্কালা।
টম মরিস

5
আমি মনে করি এই সময়টি ফাজি ফিন্ডার টেক্সটমেট github.com/wincent/Command-T
গ্যাভিন গিলমোর

2
সিনটাস্টিকের জন্য +1। এটি, জেএসলিন্টের সাথে মিলিত হয়ে আমার জাভাস্ক্রিপ্টকে অনেক কম ত্রুটি-প্রবণ করে তুলেছে। দেখুন superuser.com/questions/247012/... কীভাবে Syntastic সঙ্গে কাজ করার JSLint সেট সম্পর্কে।
নাথান লং

1
@ বেনসন দুর্দান্ত তালিকা! আমি স্নিপমেটেও টস করতাম । সাধারণ কোডিং স্টাফের খুব সহায়ক অটোমেশন। যদি <ট্যাব> তাত্ক্ষণিকভাবে ব্লক করা হয় ইত্যাদি ইত্যাদি
AlG

2
আমি মনে করি নারডকমেন্টারও একটি ভাল প্লাগইন: এখানে । এর নাম যেমন বলে, এটি আপনার কোড মন্তব্য করার জন্য।
স্টিফান

53

. সর্বশেষ পাঠ্য-পরিবর্তনকারী আদেশটি পুনরাবৃত্তি করুন

আমি এই এক সঙ্গে অনেক সময় সাশ্রয়।

ভিজ্যুয়াল মোডটি আগে উল্লেখ করা হয়েছিল, তবে পাঠ্য ফাইলে স্থির আকারের কলামগুলি সম্পাদনা করার সময় ব্লক ভিজ্যুয়াল মোড আমাকে অনেক সময় সাশ্রয় করেছে। (Ctrl-V দিয়ে অ্যাক্সেস করা হয়েছে)।


3
অতিরিক্তভাবে, আপনি যদি পাঠ্য সম্পাদনা করতে সংক্ষিপ্ত কমান্ড (উদাহরণস্বরূপ অ্যাপেন্ড-এন্ড-এন্ডের জন্য একটি) ব্যবহার করেন, আপনি যে লাইনে .কী টিপবেন তার পরবর্তী লাইনের জন্য ঠিক সেই একই ক্রিয়াটির পুনরাবৃত্তি করতে পারে vim ।
vdboor

48

সিপাহী

সর্বশেষ সম্পাদিত স্থানে যান (খুব কার্যকর যদি আপনি কিছু অনুসন্ধান সম্পাদন করেন এবং তার চেয়ে সম্পাদনায় ফিরে যেতে চান)

^ পি এবং ^ এন

পূর্ববর্তী (^ পি) বা পরবর্তী (^ N) পাঠ্য সম্পূর্ণ করুন।

^ ও এবং ^ আই

পূর্ববর্তী ( ^O- "O"পুরানো জন্য) অবস্থান বা পরবর্তী ( ^I- "I"ঠিক কাছেই "O") যান। আপনি যখন অনুসন্ধানগুলি সম্পাদন করেন, ফাইলগুলি সম্পাদনা করেন ইত্যাদি, আপনি এই "লাফিয়ে" এগিয়ে এবং পিছনে নেভিগেট করতে পারেন।


4
@ কুঙ্গি আপনাকে সর্বশেষ সম্পাদনায় নিয়ে যাবে `the আপনাকে সর্বশেষ 'ঝাঁপ' দেওয়ার আগে যে অবস্থানে রেখেছিল - আপনাকে / আবার / শেষের সম্পাদনার অবস্থানও আপনাকে নিয়ে যাবে।
গ্র্যান্ট ম্যাকলিন

46

আমি সম্প্রতি এই সাইটটি আবিষ্কার করেছি (পেয়েছি): http://vimcast.org/

এটি বেশ নতুন এবং সত্যই ভাল। যে লোকটি সাইটটি চালাচ্ছে সে টেক্সটমেট থেকে ভিমে স্যুইচ করেছে এবং নির্দিষ্ট ভিআইএম বিষয়গুলিতে খুব ভাল এবং সংক্ষিপ্ত কাস্টের হোস্ট করে। এটা দেখ!


3
আপনি যদি ভিএম টিউটোরিয়াল পছন্দ করেন তবে ডেরেক ওয়াট এর ভিম ভিডিওগুলিও দেখুন । তারা দুর্দান্ত।
জেরোমি অ্যাংলিম

42

CTRL+ +A বাড়তি সংখ্যা আপনার উপর দাঁড়িয়ে আছে।


19
... এবং সিটিআরএল-এক্স হ্রাস।
innaM

9
এটি একটি ঝরঝরে শর্টকাট তবে এখনও পর্যন্ত আমি এর কোনও ব্যবহার খুঁজে পাইনি।
SolutionYogi

8
আপনি যদি স্ক্রিনে
ভিম

13
@ সমাধান যোগী: বিবেচনা করুন যে আপনি প্রতিটি লাইনের শুরুতে লাইন নম্বর যুক্ত করতে চান। সমাধান: জিজিআই 1 <স্পেস> <esc> 0qqyawjP0 <ca> 0q9999 @ কিউ
এইচসিএস 42

10
ভিম্পিটারের সাথে অত্যন্ত কার্যকর, যেখানে এটি ইউআরএল-এর শেষ সংখ্যাটি বৃদ্ধি করে (বা হ্রাস, Ctrl-X)। চিত্র গ্যালারী ইত্যাদির মাধ্যমে দ্রুত সার্ফিংয়ের জন্য দরকারী
নীল রঙের

38

সমস্ত সাধারণ মোডে:

f <char> বর্তমান লাইনে একটি নির্দিষ্ট চরিত্রের পরবর্তী উদাহরণে যেতে, এবং ; পুনরাবৃত্তি করতে.

বর্তমান লাইনে কোনও নির্দিষ্ট অক্ষরের পূর্ববর্তী উদাহরণে যেতে <<চার> এবং ; পুনরাবৃত্তি করতে.

যদি বুদ্ধিমানের সাথে ব্যবহার করা হয় তবে উপরের দুটি আপনাকে ঘাতক দ্রুত একটি লাইনে ঘুরতে পারে।

* পরবর্তী উদাহরণ অনুসন্ধান করার জন্য কোনও শব্দে।

আগের উদাহরণটি অনুসন্ধান করার জন্য একটি শব্দের উপরে #


6
ওহো, আমি * এবং # (কার্সারের অধীনে শব্দের জন্য এগিয়ে / পিছনে সন্ধান) বাঁধাই সম্পর্কে জানতাম না। দারুণ সুন্দর। চ / এফ এবং টি / টি এবং; কমান্ডগুলি বর্তমান লাইনের অক্ষরগুলিতে দ্রুত লাফ দেয়। f / F কার্সারটিকে নির্দেশিত অক্ষরটিতে রেখে দেয় যখন T / T অক্ষরটিকে "" থেকে "ঠিক উপরে রাখে (চরিত্রটি তার আগে নির্বাচিত দিক অনুযায়ী বা তার আগে হয়।; কেবল সাম্প্রতিক f / F / t / T পুনরাবৃত্তি করে লাফ দিন (একই দিকে)
জিম ডেনিস

10
:) vim.org- এ টিপস পৃষ্ঠার শীর্ষে ট্যাগলাইন: "আপনি কি কল্পনা করতে পারেন যে আমি যদি সময়মতো" * "কমান্ডটি জানতাম তবে কতগুলি কীস্ট্রোক সংরক্ষণ করা যেত?" - জুয়েরজেন সালাক, 1/19/2001 "
ইয়েজ

1
জিম যেমন উল্লেখ করেছেন, "টি / টি" কম্বো প্রায়শই ঠিক তত ভাল হয়, যদি না ভাল হয়, উদাহরণস্বরূপ, ct(শব্দটি মুছে ফেলবে এবং আপনাকে সন্নিবেশ মোডে রাখবে, তবে প্যারান্থিসগুলি রাখবে!
puk

34

সেশন

ক। সেশন সংরক্ষণ করুন

: এমকেসেশন নাম

খ। শক্তি সংরক্ষণ অধিবেশন

: mks! sessionname

গ। লোড সেশন

gvim বা vim -S অধিবেশন নাম


যোগ করা এবং বিয়োগ করা

ক। যোগ করা এবং বিয়োগ করা

সিটিআরএল-এ; কার্সারের বা তার পরে সংখ্যা বা বর্ণমালার অক্ষরে [গণনা] যুক্ত করুন। Vi vi তে নয়

CTRL-X; কার্সার বা তার পরে সংখ্যা বা বর্ণমালা অক্ষর থেকে [গণনা] বিয়োগ করুন। আমি ভি মধ্যে নেই}

খ। উইন্ডো কী আনম্যাপিং

উইন্ডোতে, সিটিআরএল-এ ইতিমধ্যে পুরো ফাইল নির্বাচনের জন্য ম্যাপ করা হয়েছে আপনাকে আরসি ফাইলটিতে আনম্যাপ করতে হবে। চিহ্ন হিসাবে মিসউইন.ভিম সিটিআরএল-একটি ম্যাপিং অংশ হিসাবে মন্তব্য করুন বা আপনার আরসি ফাইল আনম্যাপে যুক্ত করুন

গ। ম্যাক্রো সহ

সিটিআরএল-এ কমান্ড ম্যাক্রোতে খুব কার্যকর is উদাহরণ: একটি নম্বরযুক্ত তালিকা তৈরি করতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন।

  1. প্রথম তালিকার এন্ট্রি তৈরি করুন, এটি নিশ্চিত করুন যে এটি কোনও সংখ্যার সাথে শুরু হয়।
  2. QA - বাফার 'এ' রেকর্ডিং শুরু করুন
  3. Y - এঙ্ক এন্ট্রি
  4. পি - প্রথমটির নীচে প্রবেশের একটি অনুলিপি রাখুন
  5. সিটিআরএল-এ - সংখ্যা বৃদ্ধি করুন
  6. q - রেকর্ডিং বন্ধ করুন
  7. @ এ - ইয়াঙ্ক, পুট এবং ইনক্রিমেন্টের পুনরাবৃত্তি করুন

1
উইন্ডোজ শর্টকাট কি কোন ধারণা?
ডন রেবা

32

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

আমাদের কাছে ~ 80 টি ফাইল ছিল যা অবজেক্ট অরিয়েন্টেড হওয়ার জন্য পুনরায় কাজ করা দরকার - সমস্ত ফাংশন ক্লাসে সরানো হয়েছিল, প্যারামিটারগুলি পরিবর্তিত হয়েছে, আমদানির বিবৃতি যুক্ত হয়েছে, ইত্যাদি। আমাদের কাছে প্রায় 20 ধরণের ফিক্সের একটি তালিকা ছিল যা প্রতিটি ফাইলে করা দরকার needed আমি অনুমান করব যে এটি নিজের হাতে করা একজন ব্যক্তি প্রতিদিন 2-4 করতে পারে।

সুতরাং আমি প্রথমটি হাতে হাতে করেছিলাম এবং তারপরে পরিবর্তনগুলি স্বয়ংক্রিয় করতে একটি ভিএম স্ক্রিপ্ট লিখেছিলাম। এটি বেশিরভাগ ভিএম কমান্ডের একটি তালিকা ছিল

" delete an un-needed function "
g/someFunction(/ d

" add wibble parameter to function foo "
%s/foo(/foo( wibble,/

" convert all function calls bar(thing) into method calls thing.bar() "
g/bar(/ normal nmaf(ldi(`aPa.

শেষটি কিছুটা ব্যাখ্যার দাবি রাখে:

g/bar(/  executes the following command on every line that contains "bar("
normal   execute the following text as if it was typed in in normal mode
n        goes to the next match of "bar(" (since the :g command leaves the cursor position at the start of the line)
ma       saves the cursor position in mark a
f(       moves forward to the next opening bracket
l        moves right one character, so the cursor is now inside the brackets
di(      delete all the text inside the brackets
`a       go back to the position saved as mark a (i.e. the first character of "bar")
P        paste the deleted text before the current cursor position
a.       go into insert mode and add a "." 

আরও কয়েকটি জটিল রূপান্তরের জন্য যেমন সমস্ত আমদানি বিবরণী উত্পন্ন করে আমি কিছু পাইথনকে ভিএম স্ক্রিপ্টে এম্বেড করেছি।

এটিতে কয়েক ঘন্টা কাজ করার পরে আমার কাছে একটি স্ক্রিপ্ট ছিল যা কমপক্ষে 95% রূপান্তরটি করবে। আমি কেবল একটি ভিএম ফাইল খুলি তারপরে রান করুন :source fixit.vimএবং ফাইলটি চোখের পলকে রূপান্তরিত হবে।

আমাদের এখনও বাকি 5% পরিবর্তন করার কাজ রয়েছে যা স্বয়ংক্রিয়করণ এবং ফলাফলগুলি পরীক্ষার জন্য উপযুক্ত ছিল না, তবে এই স্ক্রিপ্টটি লেখার জন্য একটি দিন ব্যয় করে আমি অনুমান করি যে আমরা সপ্তাহের কাজ সংরক্ষণ করেছি have

অবশ্যই এটি পাইথন বা রুবির মতো স্ক্রিপ্টিং ভাষার সাহায্যে স্বয়ংক্রিয়ভাবে চালানো সম্ভব হত তবে এটি লিখতে অনেক বেশি সময় লেগে যেত এবং কম নমনীয় হত - শেষ উদাহরণটি এত কঠিন হত যেহেতু একমাত্র রেইগেক্স হ্যান্ডেল করতে সক্ষম না হত নেস্টেড বন্ধনী, যেমন রূপান্তর bar(foo(xxx))করতে foo(xxx).bar()। ভিম কাজের জন্য নিখুঁত ছিল।


1
ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ যা "দরকারী এবং না ধ্রুপদী" ম্যাক্রোগুলি থেকে শিখতে সত্যিই দুর্দান্ত।
অলিভিয়ার পন্স

%s/\(bar\)(\(.\+\))/\2.\1()/এটাও করবে। (পালানো সামঞ্জস্যপূর্ণ :set magic।) কেবল রেকর্ডের জন্য। :)
ইপসকিগল

1
এর মধ্যে যদি আপনি %s/\v(bar)\((.+)\)/\2.\1()/
ভিম

@lpsquiggle: আপনার পরামর্শটি একাধিক ব্র্যাকেটের সাথে জটিল এক্সপ্রেশনগুলি পরিচালনা করবে না। যেমন if bar(foo(xxx)) or wibble(xxx): হয়ে যায় if foo(xxx)) or wibble(xxx.bar(): যা সম্পূর্ণ ভুল।
ডেভ কির্বি

28

বিল্টিন ফাইল এক্সপ্লোরার ব্যবহার করুন! কমান্ডটি হ'ল :Exploreএটি আপনাকে খুব দ্রুত আপনার উত্স কোডের মাধ্যমে নেভিগেট করতে দেয়। আমার এগুলিতে এই ম্যাপিং রয়েছে .vimrc:

map <silent> <F8>   :Explore<CR>
map <silent> <S-F8> :sp +Explore<CR>

এক্সপ্লোরার আপনাকেও ফাইল পরিবর্তন করতে দেয়। আমি আমার কয়েকটি প্রিয় কী পোস্ট করব, টিপলে <F1>আপনাকে সম্পূর্ণ তালিকা দেওয়া হবে:

  • - : সর্বাধিক দরকারী: উপরের ডিরেক্টরিতে পরিবর্তন করুন ( cd ..)
  • এমএফ : একটি ফাইল চিহ্নিত করুন
  • ডি : চিহ্নিত ফাইল বা কার্সার ফাইলটি মুছুন, যদি কিছু না চিহ্নিত থাকে।
  • আর : কার্সার চালু থাকা ফাইলটির পুনরায় নাম দিন।
  • : বর্তমান ডিরেক্টরিতে একটি নতুন ডিরেক্টরি তৈরি করুন
  • % : বর্তমান ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করুন

1
আমি সর্বদা ভেবেছিলাম যে বেশিরভাগ স্টাফের জন্য চুষে নেওয়া কিন্ডা ব্রাউজ করার ডিফল্ট পদ্ধতিগুলি। আপনি কোথায় যেতে চান তা যদি আপনি জানেন তবে এটি ব্রাউজ করতে কেবল ধীর। ভিমি.আর.এস এর স্ক্রিপ্ট বিভাগ থেকে লাস্টি এক্সপ্লোরার একটি প্রয়োজনীয় উন্নতি।
Svend

আপনার দ্বিতীয় ম্যাপিংটি আরও সহজ হতে পারে: মানচিত্র <সাইলেন্ট> <এস- এফ 8>: সেক্সপ্লোর <সিআর>
বৃষ ওলসন

8
আমি বিল্ট-ইন এক্সপ্লোরার পরিবর্তে NERDtree এর প্রস্তাব দিই। প্রকল্পগুলির জন্য আমি ভিএম ব্যবহার করার পদ্ধতিটি পরিবর্তিত হয়েছে এবং আমাকে আরও উত্পাদনশীল করে তুলেছে। কেবল এটির জন্য গুগল।
কেপ্রোবস্ট

আমি উৎস গাছ অন্বেষণ করার প্রয়োজন নেই মনে, আমি শুধু ব্যবহার :find, :tagএবং বিভিন্ন সংশ্লিষ্ট কীস্ট্রোকগুলি প্রায় তিড়িং লাফ করতে। (সম্ভবত এটি হ'ল কারণ আমি যে উত্স গাছগুলিতে কাজ করি সেগুলি আমার চেয়ে আলাদা এবং সংগঠিত হয়? :))
ড্যাশ-টম-ব্যাং

25

আমি আমেরিকান ক্রিপটোগ্রাম অ্যাসোসিয়েশনের সদস্য। দ্বিমাংশ পত্রিকাতে বিভিন্ন ধরণের 100 টিরও বেশি ক্রিপ্টোগ্রাম অন্তর্ভুক্ত রয়েছে। এর মধ্যে প্রায় 15 টি হ'ল "ক্রিপ্টারিদমস" - অঙ্কগুলির পরিবর্তে বর্ণগুলি সহ বিভিন্ন ধরণের পাটিগণিত সমস্যা। এর মধ্যে দুটি বা তিনটি হ'ল সুডোকাস, সংখ্যার পরিবর্তে অক্ষর বাদে। গ্রিডটি সমাপ্ত হলে, নয়টি পৃথক অক্ষর গ্রিডের কোথাও কোনও লাইন, তির্যক, সর্পিল ইত্যাদিতে একটি শব্দ বা শব্দের বানান করবে।

পেন্সিল দিয়ে কাজ করা বা হাতে সমস্যাগুলি টাইপ করার পরিবর্তে আমি তাদের ওয়েবসাইটের সদস্য অঞ্চল থেকে সমস্যাগুলি ডাউনলোড করি।

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

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

ফলাফলটি এরকম দেখাবে:

T-O-----C
-E-----S-
--AT--N-L
---NASO--
---E-T---
--SPCL---
E-T--OS--
-A-----P-
S-----C-T

সুতরাং, এটি সংখ্যায় রূপান্তর করার প্রথম পদক্ষেপটি পৃথক বর্ণগুলির একটি তালিকা তৈরি করা। প্রথমত, আমি ব্লকের একটি অনুলিপি তৈরি করি। আমি ব্লকের শীর্ষে কার্সারটি অবস্থান করি, তারপরে টাইপ করুন :y}}p:আমাকে কমান্ড মোডে রাখে, yপরবর্তী মুভমেন্ট কমান্ডটি ইয়াঙ্ক্স করে। যেহেতু }পরবর্তী অনুচ্ছেদের শেষে চলে আসা, অনুচ্ছেদটি y}yanks। }তারপরে কার্সারটিকে অনুচ্ছেদের শেষে সরিয়ে নিয়ে যায় এবং pআমরা কার্সারের পরে যা করেছি তা আটকায়। সুতরাং y}}pপরবর্তী অনুচ্ছেদের একটি অনুলিপি তৈরি করে এবং দুটি কপির মধ্যে কার্সার দিয়ে শেষ হয়।

এরপরে, আমি সেই অনুলিপিগুলির মধ্যে একটিকে পৃথক বর্ণের তালিকায় পরিণত করব। এই আদেশটি কিছুটা জটিল:

:!}tr -cd A-Z | sed 's/\(.\)/\1\n/g' | sort -u | tr -d '\n'

:আবার আমাকে কমান্ড মোডে রাখে। !ইঙ্গিত দেয় যে পরবর্তী ইয়ঙ্কের সামগ্রীটি একটি কমান্ড লাইনের মাধ্যমে পাইপ করা উচিত। }পরের অনুচ্ছেদে yanks, এবং কমান্ড লাইন তারপরে কমান্ড ব্যবহার করে trআপার-কেস অক্ষর ব্যতীত সমস্ত কিছু সরিয়ে ফেলার জন্য sed, প্রতিটি অক্ষরকে একটি লাইনে মুদ্রণের জন্য sortআদেশ এবং সেই লাইনগুলি সাজানোর জন্য আদেশ, নকলগুলি সরিয়ে, এবং তারপরে trস্ট্রিপ আউট করে out নতুন লাইনগুলি, একক লাইনে নয়টি পৃথক অক্ষর রেখে মূলত অনুচ্ছেদে তৈরি হওয়া নয়টি লাইনের পরিবর্তে। এই ক্ষেত্রে, অক্ষর আছেন: ACELNOPST

পরবর্তী পদক্ষেপটি গ্রিডের আরেকটি অনুলিপি করা। এবং তারপর চিঠি আমি ঠিক যে সহজ 9. 1 থেকে কোনো সংখ্যা দিয়ে ঐ অক্ষর প্রতিটি প্রতিস্থাপন সনাক্ত করেছি ব্যবহার করার জন্য: :!}tr ACELNOPST 0-9। ফলাফল হলো:

8-5-----1
-2-----7-
--08--4-3
---4075--
---2-8---
--7613---
2-8--57--
-0-----6-
7-----1-8

এটি তখন স্বাভাবিক উপায়ে সমাধান করা যেতে পারে বা আপনার পছন্দের কোনও সুডোকু সলভারে প্রবেশ করতে পারে। সম্পূর্ণ সমাধানটি আবার অক্ষরে রূপান্তরিত করা যায়:!}tr 1-9 ACELNOPST

Vi তে এমন শক্তি রয়েছে যা খুব কম অন্যের সাথে মিলে যায়। সবচেয়ে বড় সমস্যা হ'ল ভিআই টিউটোরিয়াল বই, ওয়েবসাইট, হেল্প-ফাইল ইত্যাদির মধ্যে খুব অল্প কিছুই সম্ভব যা সম্ভব তার পৃষ্ঠকে স্পর্শ করার চেয়ে আরও বেশি কিছু করে।


এবং একটি জ্বালা হ'ল কিছু উগ্র যেমন উবুন্টুতে "vi" থেকে "ভিম" শব্দটির উপকরণ রয়েছে যাতে লোকেরা সত্যই vi দেখতে পাবে না। দুর্দান্ত উদাহরণ, চেষ্টা করতে হবে ... +1
এইচএইচh

1
Vim নামটি কীভাবে এটি শুরু করা হয়েছিল তা পরীক্ষা করে না যাতে এটি সঠিক 'মোডে' আসতে পারে?
ড্যাশ-টম-ব্যাং

3
আমি এই পুনরাবৃত্তি ত্রুটি দ্বারা বিস্মিত: আপনি বলে যে আপনার :কমান্ড মোডে যেতে হবে, কিন্তু তারপর আপনি অবশ্যই স্বাভাবিক মোড কমান্ডগুলি নির্দিষ্ট করে (যেমন y}}p) যা সম্ভবত কমান্ড মোড থেকে কাজ করতে পারে না ?!
শেহে

অনন্য অক্ষর আমার নিন চ্যালেঞ্জ: :se tw=1 fo=(প্রস্তুতি) VG:s/./& /g(ব্যবধান সন্নিবেশ), gvgq(পৃথক লাইন সম্মুখের দিকে বিভক্ত), V{:sort u(সাজানোর এবং অপসারণ সদৃশ)
sehe

23

বুক টেক্সট হেরফের!

হয় ম্যাক্রোর মাধ্যমে:

  • রেকর্ডিং দিয়ে শুরু করুন: qq
  • স্টাফ কর
  • রেকর্ডিং বন্ধ করুন: q
  • পুনরাবৃত্তি: @q(প্রথমবার), তার @@পরে।
  • 20 বার পুনরাবৃত্তি করুন: 20@@

বা নিয়মিত প্রকাশের মাধ্যমে:

  • স্টাফ প্রতিস্থাপন: :%s/[fo]+/bar/g

(তবে সতর্ক হতে হবে: আপনি যদি এটি করেন তবে আপনার 2 টি সমস্যা হবে :)))


5
জেমি জাওনস্কি রেফারেন্সের জন্য +1 । (এর সাথে লিঙ্ক করতে ব্যর্থ হওয়ার জন্য কোনও পয়েন্ট ফেরত নেওয়া হয়নি) এমনকি। :)
জিম ডেনিস

1
@ জিম আমি জানতাম না এটি জ্যামি জাওনস্কি উক্তি :)। আমি এখন থেকে এটি মনে রাখার চেষ্টা করব।
jqno

আমি নিম্নলিখিত কৌশলটি ক্রমবর্ধমান দরকারী বলে মনে করি ... যে ক্ষেত্রে আপনি আগের লাইনের সাথে কিছু প্যাটার্ন মেলে (বা যা মেলে না) লাইনগুলিতে যোগ দিতে চান: :% g/foo/-1jবা :'a,'z v/bar/-1jউদাহরণস্বরূপ (যেখানে পূর্ববর্তীটি "সমস্ত লাইন এবং প্যাটার্নের সাথে মিলছে" যদিও পরবর্তীটি "চিহ্ন একটি এবং চিহ্ন z এর মধ্যে রেখা যা প্যাটার্নের সাথে মেলে না"। কোনও gবা vপ্রাক্তন কমান্ডের প্যাটারের পরে অংশটি অন্য কোনও প্রাক্তন কম্যান্ড হতে পারে, -১ জেজ কেবল একটি আপেক্ষিক লাইন আন্দোলন এবং কমান্ডে যোগদান করুন।
জিম ডেনিস

অবশ্যই আপনি যদি নিজের ম্যাক্রোর নাম রাখেন '2', তবে এটি ব্যবহারের সময় আসার পরে আপনার আঙুলটি '@' কী থেকে 'কিউ' কীতে সরিয়ে নিতে হবে না। সম্ভবত সেখানে প্রতিবার 50 থেকে 100 মিলিসেকেন্ড সাশ্রয় করে। = পি
জাস্টজেফ

@ জাস্টজেফ পুরোপুরি আপনার কীবোর্ড লেআউটে নির্ভর করে, আমার @ কী আমার 2 কী থেকে কীবোর্ডের অন্য দিকে রয়েছে।
সাইমন স্টিল

23

আমি সম্প্রতি আবিষ্কার করেছি q:। এটি "কমান্ড উইন্ডো" খুলবে এবং আপনার সাম্প্রতিক প্রাক্তন মোড (কমান্ড-মোড) কমান্ডগুলি দেখায়। আপনি উইন্ডোতে যথারীতি স্থানান্তরিত করতে পারেন এবং <CR>কমান্ডটি কার্যকর করে টিপুন । আপনি সম্পাদনা করতে পারেন, ইত্যাদি। অমূল্য যখন আপনি কিছু জটিল কমান্ড বা রেজেক্স নিয়ে ঘোরাফেরা করছেন এবং আপনি পুরো জিনিসটি আবার টাইপ করতে চান না, বা আপনি যে জটিল জিনিসটি করতে চান তা যদি 3 টি কমান্ড ফিরে আসে। এটি প্রায় বাশের মতোset -o vi , তবে ভিমে নিজেই (হি!)।

:help q:পিছনে পিছনে যেতে আরও আকর্ষণীয় বিট দেখুন ।


22

আমি অন্যদিন মাত্র ভিমের সর্বব্যাপী আবিষ্কারটি আবিষ্কার করেছি এবং আমি স্বীকার করব যখন আমি যা কিছু করি তাতে কিছুটা বিরক্ত, আমি আশ্চর্যজনকভাবে ভাল ফলাফল পেয়েছি eitherোকানো মোডে কেবল Ctrl+ x Ctrl+ uবা Ctrl+ n/ Ctrl+ জালিয়াতি করছি p। এটি একেবারে ইন্টেলিজেন্স নয় , তবে আমি এটি এখনও শিখছি।

চেষ্টা কর! :help ins-completion


20

এগুলি শর্টকাট নয়, তবে এগুলি সম্পর্কিত:

  1. ক্যাপসলক একটি অতিরিক্ত ইসি (বা সিটিআরএল) করুন
  2. এই কমান্ডটি সহ "," (কমা) তে মানচিত্রের নেতা: ম্যাপেলেডার = ","

তারা আমার উত্পাদনশীলতা বৃদ্ধি।


আরে "\" সম্পর্কে সুন্দর ইঙ্গিত! "" "এর চেয়ে", "টাইপ করা অনেক ভাল।
অলিভিয়ার পন্স

2
উইন্ডোজে ক্যাপস লককে একটি অতিরিক্ত এসকিউ করতে (কোনও "কোনও কী" এর জন্য ক্যাপস লক কী কী?) করতে, এটি ব্যবহার করে দেখুন: web.archive.org/web/20100418005858/http://webpages.charter.net/…
আর মার্টিনহো ফার্নান্দেস

এ বিবরণ - Mac এ, আপনি PCKeyboardHack প্রয়োজন superuser.com/questions/34223/...
টম মরিস

1
সহ Windows আমি ব্যবহারের AutoHotKey উপরCapslock::Escape
Jeromy Anglim

19

আর একটি দরকারী vi "শর্টকাট" আমি প্রায়শই ব্যবহার করি 'এক্সপি'। এটি পরবর্তী অক্ষরের সাথে কার্সারের নীচে অক্ষরটিকে অদলবদল করবে।


3
Xpঅন্য পথে যেতে
পরীক্ষক

5
উইন্ডোজ এক্সপি যখন বেরিয়েছিল তখন প্রায় আমি রসিকতা করতাম যে এটির জন্য এটিই কেবল ভাল ব্যবহার।
kguest

18

<Ctrl> + W, V স্ক্রিনটিকে উল্লম্বভাবে বিভক্ত করতে
<Ctrl> + ডাব্লু, ডাব্লু উইন্ডোগুলির মধ্যে স্থানান্তরিত করতে

আমি এই উইন্ডোটিতে সম্পাদনা করছি স্ক্রিপ্টটি চালাতে পাইথন% [টি]

যথেচ্ছ লাইনগুলি ভাঁজ করতে ভিজ্যুয়াল মোডে জেডএফ


2
<Ctrl> + ডাব্লু এবং জে / কে আপনাকে একেবারে নেভিগেট করতে দেবে (জে আপ, কে ডাউন, সাধারণ ভিমের মতো)। আপনার 3+ বিভক্ত হয়ে গেলে এটি দুর্দান্ত।
অ্যান্ড্রু স্কাগনেলি

1
ভিজ্যুয়াল মোডে জেডএফের জন্য +1, আমি কোড ভাঁজ পছন্দ করি তবে সে সম্পর্কে জানি না।
কোডার_টিম

2
আমার কীবোর্ডে বাশ দেওয়ার পরে আমি এটি অনুমিত করেছি <C-w>nবা <C-w>sনতুন অনুভূমিক উইন্ডোটি <C-w>bনীচে ডান উইন্ডো, <C-w>cবা <C-w>qবন্ধ উইন্ডোটি <C-w>xবৃদ্ধি পেয়েছে এবং তারপরে উইন্ডো প্রস্থ (??) হ্রাস করবে, <C-w>pশেষ উইন্ডোটি, <C-w>backspaceবাম দিকে সরানো হয়েছে (ইশ) উইন্ডো
পুক

:help ctrl-wএফটিডব্লিউ ... নিজেকে অনুগ্রহ করুন এবং নিজেকে এই জিনিসগুলি কমপক্ষে 15 মিনিটের জন্য ব্যবহার করতে বাধ্য করুন!
sjas

18

ভিজ্যুয়াল মোড

অন্য বেশিরভাগ লোক যেমন বলেছে, ভিজ্যুয়াল মোড হ'ল আপনার অনুলিপি / কাটা ও পেস্ট সমস্যার উত্তর। ভিম আপনাকে 'ভি', 'ভি', এবং সিভি দেয়। ভিমে লোয়ার কেস 'ভি' মূলত নোটপ্যাডের শিফট কী হিসাবে সমান। সুন্দর জিনিস হ'ল আপনাকে এটিকে চেপে ধরে রাখতে হবে না। আপনি আপনার নির্বাচনের শুরু (বা শেষ) পয়েন্টে দক্ষতার সাথে নেভিগেট করতে যে কোনও চলন কৌশল ব্যবহার করতে পারেন। তারপরে 'ভি' চাপুন এবং আপনার নির্বাচনের অন্য প্রান্তে নেভিগেট করতে আবার দক্ষ চালচলনের কৌশল ব্যবহার করুন। তারপরে 'd' বা 'y' আপনাকে সেই নির্বাচনটি কাটা বা অনুলিপি করার অনুমতি দেয়।

ভিআইএম এর ভিজ্যুয়াল মোডে সুবিধাটি হ'ল জিম ডেনিসের কাট / অনুলিপি / পেস্টের বিবরণে বিবরণটি হ'ল আপনাকে ঠিক ঠিক স্থানটি পেতে হবে না। কখনও কখনও আপনি যেখানে যেতে চান সেই সাধারণ আশেপাশে পৌঁছানোর জন্য দ্রুত আন্দোলন ব্যবহার করা আরও কার্যকর এবং এরপরে আরও একটি জটিল একক মুভমেন্ট কমান্ডটি চিন্তা করার চেয়ে অন্যান্য আন্দোলনের সাথে এটি পরিমার্জন করে যা আপনাকে ঠিক কোথায় যেতে চায় gets

এই পদ্ধতিতে ভিজ্যুয়াল মোডকে ব্যাপকভাবে ব্যবহার করার ক্ষতিটি হ'ল এটি ক্রাচ হয়ে উঠতে পারে যা আপনি সর্বদা ব্যবহার করেন যা আপনাকে নতুন vi (এম) কমান্ড শিখতে বাধা দেয় যা আপনাকে আরও দক্ষতার সাথে কাজ করতে দেয়। তবে, আপনি যদি ভি (এম) এর নতুন দিকগুলি শিখতে খুব সক্রিয় হন তবে সম্ভবত এটি আপনাকে খুব বেশি প্রভাবিত করবে না।

আমি আবার জোর দিয়ে বলব যে ভিজ্যুয়াল লাইন এবং ভিজ্যুয়াল ব্লক মোডগুলি আপনাকে একই থিমের বিভিন্নতা দেয় যা খুব শক্তিশালী হতে পারে ... বিশেষত ভিজ্যুয়াল ব্লক মোড।

কীবোর্ডের কার্যকর ব্যবহারের উপর

আপনার এই দাবির সাথে আমিও একমত নই যে বিকল্প হাত হ'ল কীবোর্ড ব্যবহারের দ্রুততম উপায়। এটিতে সত্যের একটি উপাদান রয়েছে। খুব সাধারণভাবে বলতে গেলে, একই জিনিসটির বারবার ব্যবহার ধীর হয়। এই নীতির এই সর্বাধিক উল্লেখযোগ্য উদাহরণ হ'ল একই আঙুল দিয়ে টাইপ করা একটানা কীস্ট্রোকগুলি খুব ধীর। আপনার দাবি সম্ভবত এই প্যাটার্ন উপর s / আঙুল / হাত / রূপান্তর ব্যবহার প্রাকৃতিক প্রবণতা থেকে উদ্ভূত। কিছুটা হলেও এটি সঠিক, তবে দক্ষতার বর্ণালীটির অত্যন্ত উচ্চতায় এটি ভুল rect

শুধু যে কোনও পিয়ানোবাদককে জিজ্ঞাসা করুন। তাদের কয়েকজন নোটের ধারাবাহিকতায় ক্রমাগত বা একক হাতের একটানা আঙ্গুলগুলি ক্রমানুসারে ব্যবহার করা আরও নোটের উত্তরাধিকারী খেলতে দ্রুত কিনা তা জিজ্ঞাসা করুন। 4 কীস্ট্রোক টাইপ করার দ্রুততম উপায় হ'ল বিকল্প হাত নয়, একই হাতের 4 টি আঙুল দিয়ে আরোহণ বা অবতরণ ক্রমে টাইপ করা (এটি একটি "রান" বলুন)। একবার আপনি এই সম্ভাবনাটি বিবেচনা করলে এটি স্ব-স্পষ্ট হওয়া উচিত।

আরও কঠিন সমস্যা এটির জন্য অনুকূলিতকরণ। কীবোর্ডে পরম দূরত্বের জন্য অনুকূলকরণ করা বেশ সহজ। ভিম তা করে। এটি "রান" স্তরে অনুকূলিতকরণের পক্ষে অনেক বেশি শক্ত, তবে vi (m) এর মডেল সম্পাদনা আপনাকে যে কোনও নন-মডেল পদ্ধতির (আহেম, ইম্যাকস) এর চেয়ে বেশি করতে পারার পক্ষে আরও ভাল সুযোগ দেয়।

ইমাসে

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

ভিম আপনাকে তুলনামূলকভাবে কাঁচা পাঠ্য সম্পাদনা দক্ষতা দেয় ইমাক্স আপনাকে সম্পাদককে কাস্টমাইজ করতে এবং প্রোগ্রাম করার জন্য অতুলনীয় ক্ষমতা দেয়

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

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

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

সুতরাং আপনি যদি কাঁচা সম্পাদনার দক্ষতা চান তবে ভিএম ব্যবহার করুন। আপনি যদি স্ক্রিপ্টিং এবং প্রোগ্রামিংয়ের জন্য চূড়ান্ত পরিবেশ চান তবে আপনার সম্পাদক ইমাস ব্যবহার করুন। যদি আপনি উভয়কেই প্রোগ্রামেমিবিলিটির উপর জোর দিয়ে কিছু করতে চান তবে ভাইপার মোড (বা আপনার নিজের মোড প্রোগ্রাম করুন) এর সাথে ইম্যাক্স ব্যবহার করুন। আপনি যদি উভয় বিশ্বের সেরা চান, আপনি আপাতত ভাগ্য থেকে দূরে।


17

ভিএম টিউটোরিয়ালটি করতে 30 মিনিট ব্যয় করুন (টার্মিনালে ভিমের পরিবর্তে ভিটমিটার চালান)। আপনি বেসিক চলন এবং কিছু কীস্ট্রোক শিখতে পারবেন, এটি আপনাকে আগে ব্যবহৃত পাঠ্য সম্পাদকের মতো ভিমে কমপক্ষে উত্পাদনশীল করে তুলবে। এর পরে, ভাল, আবার জিম ডেনিসের উত্তর পড়ুন :)


1
ওপি পড়ার সময় এই প্রথম জিনিসটি আমি ভেবেছিলাম। এটা স্পষ্ট যে পোস্টারটি এটি কখনও চালায় নি; আমি দু'বছর আগে প্রথম যখন ভিএম শেখার চেষ্টা করেছি তখন এটি আমার মনে পড়ে আমি যে অন্য সম্পাদকদের ব্যবহার করেছি তার সাথে ভিমের শ্রেষ্ঠত্বকে সীমাবদ্ধ করে (আমার জন্য, ইমাকস যেহেতু কী কম্বো একটি ম্যাক ব্যবহার করতে বিরক্ত করছে) ।
ড্যাশ-টম-ব্যাং

16

আপনি কীভাবে ভিম ব্যবহার করেন যা আপনাকে সমসাময়িক সম্পাদকের চেয়ে বেশি উত্পাদনশীল করে তোলে?

খুব কম কী-স্ট্রোক (প্রায়শই ম্যাক্রো ব্যবহার করে ) দিয়ে জটিল, পুনরাবৃত্ত সম্পাদনাগুলি সম্পাদন করতে সক্ষম হচ্ছেনভিমগল্ফ একবার দেখুনভিম শক্তির সাক্ষী হতে!

প্রায় দশ বছরের বেশি ব্যবহারের পরে, অন্য কোনও সম্পাদক ব্যবহার করা কল্পনা করা শক্ত।


16

\cকেস উপেক্ষা করার জন্য অনুসন্ধানের যে কোনও জায়গায় ব্যবহার করুন (আপনার উপেক্ষা বা স্মার্টকেস সেটিংসকে ওভাররাইড করা)। যেমন /\cfooবা /foo\cম্যাচ হবে foo, Foo, fOO, FOO, ইত্যাদি

\Cকেস ম্যাচিংয়ে জোর করতে অনুসন্ধানের যে কোনও জায়গায় ব্যবহার করুন । যেমন /\Cfooবা /foo\Cকেবল ফু-র সাথে মেলে।


16

tআন্দোলনের কেউ উল্লেখ না করে আমি অবাক হয়ে গেলাম । আমি প্রায়শই এটি আকারে dt,বা আকারে প্যারামিটার তালিকা সহ ব্যবহার করি withyt,


2
বা dfx, dFx, dtx, ytx, ইত্যাদি যেখানে x একটি চর, +1
এইচএইচ

হ্যাঁ! এবং সিটি (পরিবর্তন করুন) ভুলে যাবেন না।
মার্কেল 976

16

অদ্ভুত কারওর উল্লিখিত সিটি্যাগগুলি নেই। "বিস্ময়কর সিটি্যাগস" ডাউনলোড করুন এবং আপনার অনুসন্ধানের পথে ইতিমধ্যে থাকা কৃপণমূলক প্রাক-ইনস্টল করা সংস্করণটি এটিকে সামনে রেখে দিন। আপনি যা কাজ করছেন তার মূলে সিডি; উদাহরণস্বরূপ অ্যান্ড্রয়েড কার্নেল বিতরণ। "Ctags -R" টাইপ করুন। "ট্যাগস" নামের একটি ফাইলের মধ্যে সেই ডিয়ারের নীচে যে কোনও জায়গায় উত্স ফাইলগুলির সূচক তৈরি করা। এটিতে সমস্ত ট্যাগ রয়েছে, ভাষা নড়বড়ে নয় যেখানে একটি ফাইলের মধ্যে ডায়ারে রয়েছে, তাই ক্রস-ল্যাঙ্গুয়েজের কাজটি সহজ।

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

  • পদ্ধতির সংকেতটিতে কার্সারটি লিখুন এবং পদ্ধতি সংজ্ঞাতে যেতে CTRL-] টাইপ করুন।

  • নামের সংজ্ঞাতে যেতে নাম লিখুন।


14

স্বয়ংক্রিয় ইন্ডেন্টেশন:

gg(দস্তাবেজের শুরুতে যান)
=(ইনডেন্ট সময়!)
shift-g (নথির শেষে যান)

আপনার .vimrcফাইলটিতে 'ফাইল টাইপ প্লাগইন ইনডেন্ট ' লাগবে এবং সম্ভবত উপযুক্ত 'শিফটউইথ' এবং 'এক্সপ্রেডট্যাব' সেটিংস প্রয়োজন।


4
অথবা কেবল ": সেট আই" (স্বতঃ-ইনডেন্ট) সুবিধাটি ব্যবহার করুন, যা প্রথম থেকেই vi।
এক্সক্র্যাম্প

14

আপনি উত্পাদনশীল শর্টকাট সম্পর্কে জিজ্ঞাসা করেছিলেন, তবে আমার মনে হয় আপনার আসল প্রশ্নটি: ভিম কি মূল্যবান? এই স্ট্যাকওভারফ্লো প্রশ্নের উত্তরটি -> "হ্যাঁ"

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

আপনি যে সমস্ত বিনিয়োগ ভিমে রেখেছেন তা এক হাজারগুণ ফেরত দেবে। আপনি মারা যাওয়ার অনেক আগে, আপনি অনেকগুলি টেক্সট সম্পাদকের ভিতরে থাকবেন। ভিম আপনার সঙ্গী হবে।


13

একাধিক বাফার, এবং বিশেষত দ্রুত দুটি জাম্পের সাথে দুটি ফাইলের তুলনা করতে :bpএবং :bn(সঠিকভাবে একটি একক Shift+ pবা Shift+ এ পুনরায় তৈরি করা হয়েছে n)

vimdiff মোড (পার্থক্য দেখানোর জন্য দুটি উল্লম্ব বাফারগুলিতে বিভক্ত)

Ctrl+ সহ অঞ্চল-অনুলিপিv

এবং পরিশেষে, সনাক্তকারীদের ট্যাব সমাপ্তি ("মোশ_ত্যাব_অর_কম্পল" অনুসন্ধান করুন)। ওটা লাইফ চেঞ্জার।


12

শীর্ষ পোস্টারের সাথে সম্মত - দ্য ! আর! কমান্ড খুব দরকারী।

প্রায়শই আমি জিনিসগুলিকে "পেস্ট" করতে ব্যবহার করি:

:r!cat
**Ctrl-V to paste from the OS clipboard**
^D

এইভাবে আমার সাথে গলগল করতে হবে না :set paste


3
ডিফল্টরূপে সিস্টেম ক্লিপবোর্ড ব্যবহার clipboardকরতে unnamed( set clipboard=unnamedআপনার .vimrc এ) বিকল্পটি সেট করা সম্ভবত আরও ভাল । অথবা আপনি যদি এখনও চান সিস্টেম নামহীন রেজিস্টার থেকে আলাদা ক্লিপবোর্ড, উপযুক্তভাবে নামে ক্লিপবোর্ড রেজিস্টার ব্যবহার করুন: "*p
আর মার্টিনহো ফার্নান্দেস

2
এটা ভালবাসা! ওয়েবে থেকে কোডের উদাহরণগুলি আটকানোর মাধ্যমে হতাশ হওয়ার পরে এবং আমি সবেমাত্র ভিএম-এ দক্ষ হতে শুরু করি। ঘটনাস্থলে আমি যে কমান্ডটি স্বপ্ন দেখেছিলাম সেটাই ছিল। ভিম আমাকে পুরোপুরি জড়িয়ে ধরার সময় এটি ছিল।
কেভিপি

যদি আপনি ম্যাক, কমান্ড + সি এবং কমান্ড + ভি কপি এবং সিস্টেম ক্লিপবোর্ড ব্যবহার করে পেস্ট করে থাকেন তবে কোনও পুনর্নির্মাণের প্রয়োজন নেই।
বেন

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