আমি কীভাবে একটি নির্দিষ্ট মানরেখার লাইনটি স্থানান্তর করব?


11

অনেক সময় আমি এমন পরিস্থিতি পেরিয়ে যাই যেখানে কোনও লাইন সঠিকভাবে ইন্টেন্ট করা হয় না। একটি পেস্টের মাধ্যমে ইথার, খারাপ / পছন্দসই ইনডেন্ট প্লাগইন, বা প্রায়শই অতিরিক্ত স্থান ফাঁকা মান অফসেট করে। আমি সাধারণত <<বা >>লাইনটি কয়েকবার এটি ঠিক করার জন্য ঠিক করি। অতিরিক্ত স্পেস যদি আমি একটি চেষ্টা করবো 100<<তারপর একটি >>প্রতিটি ইন্ডেন্ট স্তর আমি আসলে চান তাদের জন্য।

প্রশ্নটি হল |গতির মতো যা আপনাকে সংখ্যায় কলাম সেট 10|করতে দেয় 10 তম কলামে কার্সার প্রেরণ করে। আমি কীভাবে ইনডেন্ট স্তরটি নির্দিষ্ট করতে পারি?

এর সাথে একটি উদাহরণ (এটি কাজ করে না) shiftwidth=4 expandtab:

The quick (indent level 0)
••••Brown Fox (indent level 1)
••••••••••Jumped over the lazy dog (indent level 2 with two extra spaces)

এই ক্ষেত্রে আমাকে বর্তমানে শেষ লাইনের ইনডেন্ট স্তরটি গণনা করতে হবে (2) এবং অতিরিক্ত স্থানের জন্য একটি যুক্ত করতে হবে তারপর টাইপ করুন 3<<তারপরে আমি কীসের ইনডেন্ট স্তরটি গণনা করব 1>>(বা ব্যবহার করুন autoindentএবং ==আদেশ দিন)।

আমি 1==ইনডেন্টকে ইনডেন্ট স্তর 1 এর জন্য বাধ্য করার মতো কিছু জিজ্ঞাসা করছি বা কিছু ক্ষেত্রে 0==সবগুলি একসাথে ইন্ডেন্ট অপসারণ করার জন্য।

আমি বুঝতে পেরেছি যে উপরের উদাহরণটি 1 বা 0 লাইনগুলিতে যথাক্রমে স্বয়ংক্রিয়ভাবে ইনডেন্টিং করে (যথাক্রমে) এবং তাই আমি যা চাই তা করি না তবে আশা করি এটি আরও ভাল করে প্রশ্নটি তুলে ধরতে সহায়তা করবে।

উত্তর:


18

আপনি :leftকমান্ডটি ব্যবহার করতে পারেন :

:[range]le[ft] [indent]
লাইনগুলি বামে সারিবদ্ধ করুন [range]। লাইনে ইনডেন্ট সেট করে [indent](ডিফল্ট 0)। আমি ভি মধ্যে নেই}

দ্রষ্টব্য যে :leftএনডেন্টগুলিকে এন স্পেসে সেট করে এবং এটি সম্পর্কে অবগত নয় shiftwidthবা tabstopতাই ব্যবহার করে :left 88 টি স্পেস ব্যবহার করা হবে।

আপনি যদি ইন্ডেন্টেশন স্তরটি সেট করতে চান তবে আপনি সহজেই একটি আদেশ নির্ধারণ করতে পারেন:

command! -nargs=1 Left execute 'left ' . &sw * <args>

ব্যবহার :Left 28 স্পেসে ইন্ডেন্টেশন সেট করবে।

এটিকে মানচিত্র করতে <Leader>=, আপনি এটি ব্যবহার করতে পারেন:

noremap <expr> <Leader>= ':left ' . str2nr(nr2char(getchar())) * &sw . '<CR>'

আমি নিশ্চিত নই যে এটি সর্বোত্তম উপায় কিনা তবে এটিই আমি পরিচালনা করতে পারি ... \=2বর্তমান লাইনটি 8 স্পেসে 5\=3ইন্ডেন্ট করবে এবং পরবর্তী 5 লাইন 12 স্পেসে প্রবেশ করবে।


সম্পর্কিত সমস্যা যা আপনার সমস্যার সমাধানও করে shiftroundবিকল্পটি সেট করা setting থেকে:help 'shiftround'

এর একাধিক রাউন্ড ইনডেন্ট 'shiftwidth'। প্রয়োগ >এবং < আদেশ। সন্নিবেশ মোডে সিটিআরএল-টি এবং সিটিআরএল-ডি সর্বদা ইনডেন্টকে একাধিকের 'shiftwidth'(এটি ভি সামঞ্জস্যপূর্ণ) গোল করে ।

আপনার উদাহরণে, প্রথমটি <<"বৃত্তাকার" থেকে 8 টি স্পেসে যাবে। সুতরাং আপনার সমস্যা (ব্যবহার 3<<এবং তারপরে >>) সমাধান হয়ে গেছে। এবং সহায়তা পৃষ্ঠাটি যেমন বলেছে আপনি <C-d>সন্নিবেশ মোড থেকেও ব্যবহার করতে পারেন ।


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