কীভাবে ভিমেতে কোড ফোল্ডিং সক্ষম এবং ব্যবহার করবেন?


48

আমি কীভাবে ভিমেতে কোড ফোল্ডিং সক্ষম এবং করতে পারি ?

আমার কি কিছু বদলাতে হবে ~/.vimrc?

আমি z+ aএবং z+ cএবং z+ টাইপ করি oএবং কিছুই ঘটে না।

এখানে ভাঁজ সম্পর্কে একটি নিবন্ধ: ভিমে কোড ফোল্ডিং

উত্তর:


40

কোন আপনি আপনি যে পৃষ্ঠাটি আপনার লিঙ্ক থেকে কমান্ড করা হবে না ~/.vimrc, আপনি শুধু তাদের দেয়ার পর টাইপ করতে পারেন :মধ্যে vimকম্যান্ড প্রম্প্ট জন্য।

তবে আপনি যদি লাইনগুলি রাখেন:

set foldmethod=indent   
set foldnestmax=10
set nofoldenable
set foldlevel=2

আপনি যে লিঙ্কটি দিয়েছেন তাতে ইঙ্গিত করা হয়েছে, আপনার ~/.vimrcপ্রতিবার যখন আপনি কোনও ফাইলে ফোল্ডিং ব্যবহার করতে চান তখন এগুলি টাইপ করতে হবে না। set nofoldenableনিশ্চিত করে তোলে যে, যখন খোলার, ফাইল, "স্বাভাবিক" হয় অর্থাত গুটান না।


আমার কাছে একটি কোড রয়েছে যা সি লিখেছেন, সুতরাং এর কার্যকারিতাগুলির মধ্যে একটিতে কর্নার। কমান্ডে যাওয়ার জন্য আমি <kbd> এসএস </ কেবিডি> টিপুন, এর পরে:, আমি zc লিখি এবং কিছুই ঘটে না।
মোহাম্মদ রেজা রেজওয়ানি

1
@ আলেক্স জেডিসি আপনার পরে টাইপ করা উচিত নয় :। টাইপ করার setসময় প্রম্পট পাওয়ার পরে আপনি কমান্ডগুলি টাইপ করেন :zcআপনি টাইপ যখন আপনি অবাধে কার্সার স্থানান্তর করতে পারেন, শুধু মনে হচ্ছে আপনি ব্যবহার করেন ztটেক্সট কার্সার বর্তমান স্ক্রীনে শীর্ষে রয়েছে জন্য।
অ্যান্থন

39

ডিফল্ট ভাঁজ

ভিমের ডিফল্ট ভাঁজ পদ্ধতিটির manualঅর্থ হ'ল ভাঁজগুলি ম্যানুয়ালি তৈরি করা হয়েছে; অন্যথায়, সেখানে বন্ধ বা ব্যবহার খুলতে হবে তার কোন ধা za, zoঅথবা zcহিসাবে আপনি বর্ণনা করেছেন। কিন্তু, আপনি একটি দ্বারা ভাঁজ তৈরি করতে পারেন zf{motion}মধ্যে সাধারন মোড অথবা zfমধ্যে ভিসুয়াল মোড; উদাহরণস্বরূপ zfjবর্তমান রেখার জন্য একটি ভাঁজ এবং পরের নরমাল মোডে তৈরি করা হয়।

ভাঁজ করে indent

@ অ্যানথনের গৃহীত উত্তরটি কীভাবে ভাঁজ পদ্ধতিতে সেট করতে হবে তা বর্ণনা করে indent; অর্থাত ভাঁজ ইন্ডেন্টের স্তর দ্বারা সংজ্ঞায়িত করা হয়।

ভাঁজ করে syntax

আরও সুবিধাজনক উপায়ে, বর্তমান বাফার এর ভাষা বাক্য গঠনের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ভাঁজ তৈরি করা যেতে পারে। আপনি একটি প্রোগ্রামিং ভাষা ব্যবহার করে থাকেন, এটা কল দিন এল , আর তোমাদের মধ্যের ভাঁজ সংজ্ঞা আছে এল (যেমন আপনি যা এর ভাঁজ তথ্য তেজ প্লাগইন ইনস্টল করা আছে এল যেমন; সংজ্ঞায়িত করা হয় c.vim সি / সি জন্য ++ বা পাইথন -পাইথনের জন্য মোড ), আপনাকে কেবল এখানে ভাঁজ পদ্ধতি সেট করতে হবে syntax:

set foldmethod=syntax

এটাই. ভাঁজগুলির সাথে কাজ করার জন্য সবচেয়ে দরকারী কমান্ডগুলি হ'ল:

  • zo কার্সারে একটি ভাঁজ খোলে।
  • zShift+ oকার্সারে সমস্ত ভাঁজ খোলে।
  • zc কার্সারে একটি ভাঁজ বন্ধ করে।
  • zmfoldlevelএক এক দ্বারা বৃদ্ধি ।
  • zShift+ + mসব খোলা ভাঁজ বন্ধ করে।
  • zrfoldlevelএক এক করে কমে যায় ।
  • zShift+ শূন্য থেকে rহ্রাস foldlevel- সমস্ত ভাঁজ খোলা থাকবে।

14

আপনাকে এটি পদ্ধতিগতভাবে ব্যবহার করতে হবে না: আমি সাধারণত মোশন বা বিভাগ দ্বারা ম্যানুয়ালি ভাঁজগুলি নির্বাচন করি। উদাহরণস্বরূপ, অনুচ্ছেদে zfipভাঁজ করা এবং পরবর্তী 20 লাইনগুলি ভাঁজ করা zf20jzaটগল এবং zdঅপসারণ করতে ব্যবহার করুন ।

এর জন্য আরও কিছু কাজ প্রয়োজন তবে আপনার ভাঁজটি হাতের কাজটি প্রতিফলিত করার অনুমতি দেয়।


4

আপনি folding@ অ্যান্টনের উত্তরের মতো বর্তমান সেশনে সক্ষম করতে পারবেন । তবে আপনি যদি এটিকে স্থায়ী করতে চান তবে আপনার অবশ্যই কমপক্ষে এই লাইনটি .vimrcভাঁজ কাজে লাগাতে হবে:

set foldmethod=indent

indent ভাঁজ এক ধরণের, আপনি আরও দেখতে পারেন :help foldmethod

'foldmethod' 'fdm'      string (default: "manual")
                        local to window
                        {not in Vi}
                        {not available when compiled without the +folding
                        feature}
        The kind of folding used for the current window.  Possible values:
        fold-manual     manual      Folds are created manually.
        fold-indent     indent      Lines with equal indent form a fold.
        fold-expr       expr        'foldexpr' gives the fold level of a line.
        fold-marker     marker      Markers are used to specify folds.
        fold-syntax     syntax      Syntax highlighting items specify folds.
        fold-diff       diff        Fold text that is not changed.

এখন, আপনি যখনই কোনও ফাইল খোলেন vim, আপনি যে পদ্ধতিটি সেট করেছিলেন তার দ্বারা কোডটি ভাঁজ হয়ে যায়। তারপর আপনি ব্যবহার করতে পারেন za, zc, zo


ভিআইএমআরসি ব্যবহার করার দরকার নেই, আমি কখনও কখনও কখনও কখনও ভাঁজ ব্যবহার করি না বলে এটি করেনি
অ্যান্থন

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