ভিআইএম এ হাইলাইটেড স্ট্রিংয়ের দৈর্ঘ্য গণনা করুন


24

আমি আশ্চর্য হই যে vim(সাদা জায়গাগুলি সহ) হাইলাইট করা প্রতীকগুলি গণনা করার কোনও উপায় আছে ?

হালনাগাদ

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

আমার নির্বাচনটি একাধিক সারিতে থাকলে এটি সারিগুলি গণনা দেখায়। আমার প্রতীক গণনা দরকার।

উত্তর:


28

যদি আমি কিছু মিস না করি তবে ভিম ইতিমধ্যে তা করে ফেলেছে। আমি যদি মাউস ব্যবহার করে বা vকার্সারটি টাইপ করে এবং সরানোর মাধ্যমে কিছু পাঠ্য হাইলাইট করি তবে আমি পর্দার নীচে দেখতে পাচ্ছি

- দর্শন - 12

যেখানে ডানদিকে সংখ্যাটি হাইলাইট করা অক্ষরের সংখ্যা। এটি কেবলমাত্র যদি কাজটি একটি একক সারিতে থাকে তবে কাজ করে, অন্যথায় এটি সারি গণনা দেখায়।

আপনি টেক্সট এবং টাইপের কিছু অঞ্চলটি দৃশ্যত নির্বাচন করতে পারেন g Ctrl-Gযা নির্বাচিত লাইন, শব্দ এবং বাইটের সংখ্যা দেখায়।


4
(স্তম্ভিত) আমি কীভাবে এতক্ষণ হিমকে ভিম ব্যবহার করেছি এবং তা কখনই লক্ষ্য করে না ? তবে আমার প্রতিরক্ষার ক্ষেত্রে, আমি প্রোগ্রামটিভভাবে নম্বরটি পাওয়ার বিষয়ে ভাবছিলাম।
এনজিডি

ভাল উত্তর, তবে আপডেট করা প্রশ্নটি একবার দেখুন। পাশাপাশি @ এনজেডি আমি তা লক্ষ্য করি নি।
নেমোডেন

1
@ নিমোডেন: গ্যারিজন-এর পরামর্শের দ্বিতীয় ভাগ চেষ্টা করুন (জি সিটিআরএল-জি)। এটিতে "লাইনের # নির্বাচিত # এর মতো একটি লাইন দেখাতে হবে; # শব্দের # টি; # বাইটের #
48

উহু. আমার খারাপ। আমি জানি না কেন আমি দ্বিতীয় সমাধানটি এড়িয়ে গেছি। এটা কাজ করে। ধন্যবাদ!
নেমোডেন

12
এটি কয়েকটি সিস্টেমে ডিফল্টরূপে সক্ষম হয় না। এটি সক্ষম set showcmdকরতে কেবল আপনার যুক্ত করুন vimrc
টাইলার হলিয়ান

8

আপনি কী এবং কীভাবে কল্পনা করেন তার উপর নির্ভর করে ভিজ্যুয়ালাইজড পাঠ্যের জন্য অক্ষর গণনা এবং লাইন গণনা প্রদর্শনের মধ্যে ভিম ফ্লপ হয় (ভিম 7.4 সেপ্টেম্বর 2015-এ প্যাচড)

V will display line count
v$ will display character count

আপনি যদি একের বেশি লাইন ভিজ্যুয়ালাইজ করেন তবে এটি কেবল লাইন গণনা প্রদর্শন করে

g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line

যেমন প্রশ্নটি বলেছে, এমনকি যদি vচরিত্র-গণনা থেকে লাইন-কাউন্টে সাধারণ পরিবর্তনগুলি নির্বাচনটি একাধিক লাইনের বিস্তৃত হয়। তবে g CTRL-Gকাজটি সুন্দরভাবে করে।
জোয়েটউইডল

2
:function VisualLength()
:  exe 'normal "xy'
:  echo "Visual: " . strlen(@x) . "\n"
:  exe 'normal gv'
:endfunction

:map ,q "xy:call VisualLength()<CR>
  1. প্রথমে আপনি বর্তমান নির্বাচনটি ইঙ্ক করে (বাফার এক্সে)

  2. তারপরে আপনি সেই বাফারটির দৈর্ঘ্য প্রদর্শন করুন: strlen(@x)
    ( দর্শনটি - স্ট্যাটাস লাইনে প্রদর্শিত এটি এটিকে অস্পষ্ট করে তোলে , সুতরাং আমাদের একটি নতুন লাইন যুক্ত করতে হবে)

  3. পূর্ববর্তী চাক্ষুষ পরিসীমা হাইলাইট করুন: gv

এটি ভিজ্যুয়াল মোডটি লাইন-, চরিত্রের- বা ব্লক-মোডের ছিল কিনা তা বিবেচনা করে না তবে বেশিরভাগ ক্ষেত্রে এটি যথেষ্ট।


2

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

ভিমের একটি আন্ডার-ইউজড (আইএমও) বৈশিষ্ট্যটি হ'ল বাহ্যিক আদেশগুলি ভারী উত্তোলন করতে দেয়।

এই ক্ষেত্রে, আপনি যদি ইউনিক্স-এর মতো সিস্টেমে থাকেন তবে আপনি এটি করতে wcকমান্ডটি ব্যবহার করতে পারেন ।

সহজ উপায় হ'ল নির্বাচিত পাঠ্যটি কমান্ডের আউটপুট সহ টাইপ করে (নির্বাচিত পাঠ্য সহ) প্রতিস্থাপন করা:

:!wc

(তারপরে এন্টার টিপুন)।

এটি আপনার কমান্ড লাইনে প্রদর্শিত হবে:

'<,'>!wc

আপনি তথ্যটি পড়ার পরে, আপনি uযেখানে শুরু করেছিলেন সেখানে ফিরে যেতে আপনি পূর্বাবস্থায় ফিরে যেতে পারেন।

দ্রষ্টব্য: এই প্রক্রিয়াজাতকরণ কেবল পুরো লাইনেই করা হয় । আপনি যদি আংশিক লাইনগুলি চান তবে আমার কাছে মনে হয় @ গ্যারিজন'ই g_CTRL-Gআপনার সেরা বাজি।

পরিবর্তে চালিয়ে আপনি পূর্বাবস্থায় ফেলার প্রয়োজনীয়তা এড়াতে পারেন:

:w !wc

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

দ্রষ্টব্য: আমি :write_cতথ্যটি পেয়েছি: /programming/1237780/vim-execute-shell-command-without-filtering

এখন, আরও সাধারণভাবে:

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

এছাড়াও, আপনি যে কোনও কমান্ডলাইন প্রোগ্রাম লিখেছেন যে স্টিডিন / স্টাডাউট নিয়ে কাজ করে তা কেবল আপনার টার্মিনালেই নয়, ভিমের অভ্যন্তরেও উপকৃত হতে পারে।

আমি নিজেকে খুঁজে পাই, উদাহরণস্বরূপ, দৌড়ে tidyএবং json-formatভিএম এর ভিতরে থেকে ফাইলগুলি তৈরি করতে আমি আরও পাঠযোগ্য looking

আপনি উইন্ডোজেও এটি করতে পারেন, তবে উইন্ডোজে অন্তর্নির্মিত কমান্ডগুলির সমৃদ্ধ সেট নেই। যদিও এই সুবিধাগুলি পেতে আপনি সর্বদা GNUWin32 বা অনুরূপ ইনস্টল করতে পারেন ।


1

উইমস্ক্রিপ্টের মধ্যে একটি প্রোগ্রামেটিক উপায়ে, নির্বাচনটি যখন এক লাইনের মধ্যে সীমাবদ্ধ থাকে তখন এটি আমার পক্ষে কাজ করে:

let amount = virtcol("'>") - virtcol("'<")

(এর virtcol(..)পরিবর্তে ব্যবহার করা যেমন সক্রিয় col(..)হওয়ার সময় :set ve=allএটি প্রত্যাশার মতো কাজ করে ))

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