লেট এবং সেট মধ্যে পার্থক্য কি?


29

আমি ভিমের পিছনে তত্ত্বের অনেক কিছুই জানি না। দেখে মনে হচ্ছে যেন আমরা setকিছু ভেরিয়েবল এবং letঅন্যান্য ভেরিয়েবল। পার্থক্য কী এবং কখন একজনের অপরটির প্রয়োজন হয়?

এছাড়াও, সোলারাইজড ভিম রঙশ্মি বলে let g:blabla...যে g:এই উদাহরণটির তাত্পর্য কী ?

উত্তর:


35

letএকটি চলককে setএকটি মান নির্ধারণ করে এবং ভিমের অভ্যন্তরীণ বিকল্পগুলির মধ্যে একটিতে একটি মান নির্ধারণ করে।

উদাহরণস্বরূপ, আপনি ব্যবহার করবেন

:let mystring='Hello!'

একটি নতুন ভেরিয়েবল ঘোষণা করার জন্য, তবে আপনি ব্যবহার করবেন

:set tabstop=4

অথবা

:set expandtab

ভিমের একটি বিকল্প সেট করতে to

আরও দেখুন: :help let, :help set

g:কেবল একটি গ্লোবাল ভেরিয়েবলের ইঙ্গিত দেয়। এর মধ্যে বেশ কয়েকটি "ভেরিয়েবল নেমস্পেস" রয়েছে - যা থেকে :help internal-variables:

        (nothing) In a function: local to a function; otherwise: global
|buffer-variable|    b:   Local to the current buffer.
|window-variable|    w:   Local to the current window.
|tabpage-variable|   t:   Local to the current tab page.
|global-variable|    g:   Global.
|local-variable|     l:   Local to a function.
|script-variable|    s:   Local to a |:source|'ed Vim script.
|function-argument|  a:   Function argument (only inside a function).
|vim-variable|       v:   Global, predefined by Vim.

8
মনে রাখবেন যে আপনি ব্যবহার letকরে ভীমের অভ্যন্তরীণ বিকল্পগুলি সেট করতে পারেনlet &{option name}=value
এভারগ্রিনট্রি

11

:setঅভ্যন্তরীণ বিকল্পগুলির জন্য ব্যবহৃত হয় এবং বিকল্পের ধরণের পরিচালনা করে। এটি বুলিয়ান বিকল্পগুলির বিপরীতকরণের মতো জিনিসগুলিকে মঞ্জুরি দেয় (উদাহরণস্বরূপ :set invpaste) তালিকা থেকে সেটিংস যোগ করা এবং মুছে ফেলা (যেমন :set dictionary-=/tmp/myfile)।

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

উদাহরণস্বরূপ, আপনি যা করতে পারেন :let &dictionary=/tmp/myfileবিকল্প সেট করতে 'dictionary'করতে /tmp/myfile(সুতরাং উপরে দেখানো একই বিকল্প পরিবর্তন :setউদাহরণ)

আপনি একটি বৈশ্বিক পরিবর্তনশীল এর সাথে সেট করতে পারেন :let g:myvar=42। আপনি যে উপসর্গ সম্পর্কে জিজ্ঞাসা করেছিলেন তা সুযোগ প্রদান করে। ডুরকনব এর উত্তরটি স্কোপিংটিকে খুব ভালভাবে কভার করে।

আপনি :let @a="Some text"একটি রেজিস্টার কন্টেন্ট অন্তর্ভুক্ত পরিবর্তন করতে পারেন Some text, যা আপনি "apউদাহরণস্বরূপ পরে পেস্ট করতে পারে ।

আপনি :let $PATH = $PATH . ":/home/me/bin"আপনার নিজের বিন ডিরেক্টরিটি PATHপরিবেশের ভেরিয়েবলের সাথে যুক্ত করতে পারেন , যা ভিম দ্বারা নির্বাহিত কোনও বাহ্যিক কমান্ডগুলিতে প্রেরণ করা হয় (এটি কোনও পরিবেশের পরিবর্তনশীলের জন্য কাজ করে)।

যদিও letকিছু বেশ শক্তিশালী ক্ষমতা রয়েছে ( :let $MYFILE = @%বর্তমান বাফারের ফাইলনামে পরিবেশের পরিবর্তনশীল সেট করতে চান ), এটি জানেন না যে একটি সেটিংসটি বুলিয়ান, সুতরাং এটি দুর্দান্ত অ্যাক্সেস বা ত্রুটিযুক্ত পরীক্ষা করার মতো প্রস্তাব দেয় না :set

শেষ পর্যন্ত, এটি কাজের জন্য সেরা সরঞ্জামটি ব্যবহার করার বিষয়ে। আপনি যদি কেবল কোনও বিকল্প পরিবর্তন করতে চান তবে :setএটি আপনার সরঞ্জাম। আপনি যদি কোনও রেজিস্ট্রি, বিকল্পগুলি, ভেরিয়েবলগুলির মধ্যে তথ্য স্থানান্তর করতে চান বা কোনও অভিব্যক্তির ফলাফলের ভিত্তিতে আপনার মানকে ভিত্তি করে তুলতে চান তবে :letতা আপনার সরঞ্জাম।

যদিও আপনি ভিম সম্পর্কে স্পষ্টভাবে জিজ্ঞাসা করেছিলেন, অন্য একটি বিষয় লক্ষণীয় যা ভিআইভি :set/ ভিম পরিবারগুলিতে বেশি দেখা যায়, যেখানে :letখুব কম দেখা যায় (উদাহরণস্বরূপ, letএনভি-র কোনও কমান্ড নেই, এবং ভিউমু রেজিস্টারগুলির মাধ্যমে প্রবেশাধিকার সরবরাহ করে না let) ।

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