কীভাবে .vimrc- র মধ্যে কম্পিউটার নির্ভর ভিআইএম সেটিংস করবেন?


44

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

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

.vimrcমেশিনে কয়েকটি সেটিংস করার উপায় আছে- বা ওএস-নির্ভর?

উত্তর:


44

ওএস সনাক্তকরণ এতে .vimrc:

if has('win32')
    ......
elseif has('mac')
    ......
elseif has('unix')
    ......
endif

4
এছাড়াও দরকারী: আপনার has('gui_running')যদি টিটিটি মোড এবং জিইউআই মোডের মধ্যে পার্থক্য করতে হয়।
ক্রিস জনসেন

10
() ফাংশনটি ভিম বৈশিষ্ট্যগুলির উপস্থিতি পরীক্ষা করে। কোনও 'লিনাক্স' বৈশিষ্ট্য নেই। যথাযথ যুক্তি হ'ল ইউনিক্স '। এছাড়াও, ওএস-এক্স এর সঠিক যুক্তি হ'ল ম্যাকুনিক্স '। একটি 'ম্যাক' বৈশিষ্ট্যও রয়েছে, তবে আমি জানি না যে has('mac')সমস্ত ম্যাকের জন্য সত্য বা ঠিক প্রি-ওএস-এক্স ম্যাকস। :help feature-listসম্পূর্ণ তালিকা জন্য দেখুন ।
গ্যারিজোহান

1
হ্যাঁ has('unix'),। আমার ভুল.
ক্যাজুয়াল কোডার

খুব দেরিতে উত্তর, তবে হ্যাঁ, ('ম্যাক') আমার জন্য ওএসএক্সে ট্রিগার করেছে।
ডায়াব্লো-ডি 3

1
আমি ভিএম ১ পরীক্ষা করে দেখেছি যে ওএস এক্স এর সাথে আসে এবং ২) আমি জেন্টু প্রিক্সের মাধ্যমে ইনস্টল করেছি (হোমব্রিউয়ের অনুরূপ কিছু), এবং ৩) যা ম্যাকভিম থেকে আসে। ম্যাকভিম থেকে কেবলমাত্র একজনই সঠিকভাবে আসবে has("mac")। আমার অনুমান যে তারা কিছু প্যাচ ব্যবহার করেছিল যা প্রকৃতপক্ষে বৈশিষ্ট্য পরীক্ষার কাজ করে। আপনি যদি has("mac")পরীক্ষার উপর নির্ভর করেন তবে এটি আপনার ভিমে সমর্থিত তা নিশ্চিত করার জন্য কিছু পরীক্ষা করুন।
ইগল

26

একটি নির্দিষ্ট মেশিন পরীক্ষা করার জন্য, আপনি hostnameকমান্ডের আউটপুট পরীক্ষা করতে পারেন । উদাহরণ স্বরূপ,

let hostname = substitute(system('hostname'), '\n', '', '')
if hostname == "tigger"
   ...
elseif hostname == "pooh"
   ...
endif

আপনি উপলব্ধ পরিবেশের ভেরিয়েবলের মানও পরীক্ষা করতে পারেন:

if $HOSTNAME == "tigger"
   ...
elseif $HOSTNAME == "pooh"
   ...
endif

$DISPLAYপরিবর্তনশীল এছাড়াও উপযোগী হতে পারে।


13
হোস্টনেম () এটি করবে, উদাহরণস্বরূপ: যদি হোস্টনাম () == 'টিগার' ..., সিস্টেম কল না করেই।
টিভিন

ফলাফলটি system('hostname')ছিল machine.mycompany.com\n, সুতরাং আমাকে বিকল্প কমান্ডটি পরিবর্তন করতে হয়েছিল substitute(system('hostname'), '\.\_.*$', '', '')
জেপেজেট

9

আমার এই স্নিপেটটি আমার vimrc:

let s:host_vimrc = $HOME . '/.' . hostname() . '.vimrc'                                                                                                                               
if filereadable(s:host_vimrc)                                                                                                                                                        
  execute 'source ' . s:host_vimrc                                                                                                                                                   
endif

source $HOME/.$HOSTNAME.vimrcএটি উপস্থিত থাকলে কেবল কার্যকর করে । আমি ব্যবহার করেছি hostname()এবং অবলম্বন করছি, আপনি expand('$HOME/.$HOSTNAME.vimrc')যদি জানেন যে $HOSTNAMEসর্বদা সেট করা থাকে তবে আপনি আরও সংযোগ ব্যবহার করতে পারেন ।


7

ওএস সনাক্তকরণ সম্পর্কে পূর্ববর্তী উত্তরটি আমার জন্য ম্যাকভিমে ওএস এক্স শনাক্ত করে না (এবং has("macunix")ডকুমেন্টেশন হিসাবে এটি ব্যবহার করা উচিত বলেও বোঝায় না)।

আমি উইন্ডোজ এবং ওএস এক্স এর মধ্যে পার্থক্য করার জন্য যা ব্যবহার করি তা এখানে:

if has("win32")
  "Windows options here
else
  if has("unix")
    let s:uname = system("uname")
    if s:uname == "Darwin\n"
      "Mac options here
    endif
  endif
endif

নোট যেটি has("win32")আমার পক্ষে কাজ করেছে, এমনকি 64৪ বিট উইন্ডোতে bit৪ বিট ভিমে।

আপনি ইউনিক্সের অন্যান্য স্বাদগুলি আলাদা unameকরতে if has("unix")ব্লকের মধ্যে একই রকম পরীক্ষাগুলি ব্যবহার করতে পারেন । আপনার কী তুলনা করতে হবে তা দেখতে কেবল চালান unameবা uname -aকমান্ড-লাইন থেকে s:uname with:h matchstr()আপনার যদি আনামের আউটপুটটির মাত্র একটি অংশের তুলনা করতে হয় তবে তাও দেখুন ।


2

প্রচুর মেশিনের সাহায্যে সমস্ত হোস্টনামের তালিকা তৈরি করা .vimrcক্লান্তিকর হয়ে উঠতে পারে, বিভিন্ন ইউনিক্স স্বাদের মধ্যে পার্থক্য করা আরও সহজ হতে পারে:

" set font when running on Solaris
if (match(system('uname -s'), 'SunOS') >= 0)  
   set guifont=*   " fixes "E665: Cannot start GUI, no valid font found"
endif

দুর্ভাগ্যক্রমে, উইন্ডোজ মেশিনে এটি বিরতি।
ওলিগোফ্রেন

1

আপনি কেবল প্রতিটি মেশিনের জন্য কাস্টম .gvimrc এ ওএস-নির্দিষ্ট স্টাফ রাখতে পারেন এবং সেগুলির উপরে একটি সাধারণ .vimrc ব্যবহার করতে পারেন। জিভিম শুরু হলে উভয় ফাইলই পঠিত হয়, যখন নন-গুই ভিম শুরু হয় কেবল তখনই .vimrc পড়ে।


1

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

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