কাস্টম .vimrc ব্যবহার করতে ভিমকে বলা সহজ, তবে ~ / .vim এর পরিবর্তে বিকল্প পথ ব্যবহার করতে কীভাবে এটি বলবেন?


15

আমি আমার ডিফল্ট পরিবর্তে ব্যবহার vim -u filenameকরতে পারেন । আমি ব্যবহারকারীর প্রসঙ্গগুলি ( ) স্যুইচ করার সময় আমার ব্যবহারকারীর সুপারসওয়ার হিসাবে চালিত হয়েও এই পদ্ধতিটি ব্যবহার করছিfilename.vimrcsu .vimrc

ডিফল্টরূপে যে ফোল্ডারে আমি কীভাবে ভিমকে কমান্ড লাইন থেকে বিকল্প ফোল্ডারের দিকে নির্দেশ করতে পারি তার জন্য আমি কীভাবে তা অর্জন করতে পারি ?~/.vim


আমি যা অর্জন করতে চাই

ঠিক আছে, ব্যবহারকারী joe( HOME=/home/joe) এবং ব্যবহারকারী root( HOME=/root) ধরে নিন। ব্যবহারকারীর joeএকটি উপকরণ সেট রয়েছে vimযার জন্য এটি দেখতে দেখতে (তবে মূলত $HOMEএই গতিশীল তৈরি করতে ভেরিয়েবলটি ব্যবহার করে সেট করা হয়েছে ):

alias vim='vim -p -N -n -i NONE -u "/home/joe/.vimrc"'

তারপরে ব্যবহারকারী joeলাইনগুলি বরাবর কিছু করে sudo su -(তবে যুক্ত যাদু দিয়ে) যার ফলস্বরূপ .bashrcএবং অন্যান্য গুডির /home/joeজন্য লোড করা যায় root। উপরের rootচিত্রের মত vimসেট করার জন্য ব্যবহারকারী এখন ঠিক একইরূপে আছে ।

সমস্যাটি হ'ল .vimrcএটি বিভিন্ন সিস্টেমে এবং বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়। প্রায়শই জো এর অ্যাকাউন্ট বলা হয় joe, তবে কখনও কখনও এটি এমন কিছু local.joeবা অন্য যে কোনও কিছু হয়ে থাকে, যার ফলস্বরূপ আলাদা মান হয় $HOME। এত শক্তভাবে ~/.vimফোল্ডারে একটি নিখুঁত পথ কোডিং করা ভাল ধারণা বলে মনে হয় না। তবে, আমাদের উপরের দৃশ্যে ব্যবহারকারীর rootএমন একটি ফোল্ডার নেই /root/.vimযা লোড হওয়া .vimrc( /home/joe/.vimrc) মাধ্যমে ডিফল্টরূপে উপস্থিত থাকার প্রত্যাশা ।

কমান্ড লাইনে আমি যা অর্জন করতে চাই তা হল - /home/joe/.vimযখন শুরু করা হয় তখন ভিমকে নীচে থেকে প্লাগিন ইত্যাদির ব্যবহার করা হয় root(ধরে নেওয়া হয়েছে aliasযে সেটটি সেট করা হিসাবে ধরে নেওয়া হয়েছে - অন্যান্য ক্ষেত্রে উপেক্ষা করা যেতে পারে)। যদি ভিমস্ক্রিপ্টের মাধ্যমে কিছু গতিশীল পদ্ধতি থাকে তবে দয়া করে পয়েন্টার সরবরাহ করুন। তবে ভেরিয়েবলগুলি ব্যবহার করে $HOME22 টি ধরা পড়বে বলে আমি মনে করি।


আপনি সম্ভবত ভাল পুরানো দিয়ে এটি করতে পারেন ln। 'এমভি ~ ​​/ .ভিম ~ / .ভিম-যা কিছু && ln -s ~ / .vim- যাই হোক না কেন। / .vim` এর জন্য একই কাজ করুন .vimrc। এটিকে কিছু কিছু বাশ ওরফে দিয়ে মুড়িয়ে রাখুন যাতে আপনি সহজেই একটি উপায় বা অন্যটি স্যুইচ করতে পারেন
জার

উত্তর:


9

ভিম ~ / .vim এ দেখায় কারণ সেই ডিরেক্টরিটি 'রানটাইমপথ' -র ডিফল্ট তালিকায় রয়েছে, সংক্ষেপে 'আরটিপি' হিসাবে। ভিমকে অন্য কোথাও দেখতে বলার জন্য, আপনাকে সম্পূর্ণ আলাদা আলাদা 'আরটিপি' মান নির্দিষ্ট করতে হবে, বা উদাহরণস্বরূপ বিকল্পের জন্য কলটি ব্যবহার করে ডিফল্ট সম্পাদনা করতে হবে। আপনি যদি চান যে প্রথমে আপনার কনফিগারেশন ফাইলগুলির জন্য ভিম অন্য কোনও জায়গায় সন্ধান করতে চান তবে এটি ~ / .vim এও দেখায় সেদিকে খেয়াল রাখবেন না এবং নির্দেশনা পরে আপনার বিকল্পটি এটি দেখতে না পাচ্ছেন না care বেশ সহজ:

vim --cmd 'set rtp^=alternate_dir'

দেখা

:help --cmd
:help :set^=

আপনার বিকল্প ডিরেক্টরিটি দিয়ে .vim প্রতিস্থাপনে আরও কিছুটা টাইপ করা লাগে।

vim --cmd 'let &rtp = substitute(&rtp, "\.vim", "alternate", "g")'

আমি ~/.vimঅন্য পথ দিয়ে প্রতিস্থাপন করার চেষ্টা করেছি , তবে আমি এর সাথে মেলে না ~, তাই আমি এগিয়ে গিয়ে আমার যা পোস্ট করেছি তা পোস্ট করেছিলাম।

সম্পাদন করা

কারনেই আমি সাথে মেলে না পারে ~'RTP' মূল্য যে যখন মান মান হিসাবে প্রাপ্ত হয় &rtpআউটপুট বদলে :set rtp?, ~ব্যবহারকারীর হোম ডিরেক্টরি সম্পূর্ণ পাথ নাম প্রসারিত করা হয়। সেখানে নেই ~ফলাফলে।

নিম্নলিখিত কাজ করে।

vim --cmd 'let &rtp = substitute(&rtp, $HOME."/\.vim", "alternate", "g")'

উত্তর দেওয়ার জন্য সময় দেওয়ার জন্য একগুচ্ছ ধন্যবাদ এটি খুব আশাব্যঞ্জক দেখাচ্ছে। আমি আগামীকাল এই সাথে একটু ঝাঁকুনি দেব এবং কীভাবে এটি আপনাকে জানাতে হবে। আমি আশা করি আমার ভিমস্ক্রিপ্ট ফু আরও শক্তিশালী হয়েছে তবে আমি এটিতে কাজ করছি এবং এটি একটি আশাব্যঞ্জক দিক নির্দেশ করে।
0xC0000022L

@ 0xC0000022L: আপনি যেভাবে এটি দেখিয়েছেন তা \\~কাজ করে। বাশের জন্য একজন পালাতে পেরেছিল? যাইহোক এটি এখনও কাজ করে না, কারণ ভিমস্ক্রিপ্ট কীভাবে পরিচালনা করে সে সম্পর্কে কিছু আলাদা ~
0xC0000022L

আমার মনে হয় এটা আমার আছে। লক্ষ্য করুন যে :set rtp?"~ / .vim" দেখায় তবে এটি পুরো পথের নাম পর্যন্ত :echo &rtpপ্রসারিত ~। নিম্নলিখিতটি কাজ করছে বলে মনে হচ্ছে: `vim --cmd 'let & rtp = متبادل (& rtp, $ HOM।" / V। ভিম "," বিকল্প "," g ")'। আমি আমার উত্তর আপডেট করব।
গ্যারিজোহান

ধন্যবাদ, খুব আকর্ষণীয় এবং সূক্ষ্ম পার্থক্য। আমার নির্দিষ্ট ক্ষেত্রে কিছু জিনিসকে আরও সমস্যাযুক্ত করে তোলে তবে আমি তা গ্রহণ করতে চলেছি। এটি আমাকে আরও অনেক কিছু পেয়েছে।
0xC0000022L

3

আপনি যে .vimrc চয়ন করেছেন তাতে আপনি রানটাইম পাথটি নির্দিষ্ট করতে পারেন:

let &runtimepath=/path/to/specific/vim/folder

আপনি যদি নিজের ব্যক্তি ব্যবহার করে থাকেন .vimrcতবে আপনি .vimএটি আপনার ব্যক্তিগত ডিরেক্টরিতে সেট করতে পারেন এবং এটি suআপনার সাধারণ অ্যাকাউন্ট হিসাবে উভয়ই কাজ করা উচিত ।


এটি ঠিক কমান্ড লাইন থেকে নয়। এই গতিশীল করার কোনও উপায় আছে বা তাই? দেখুন, আমি মনে করি আমি যদি $HOMEনিজের অ্যাকাউন্টে এর মতো কিছু ব্যবহার করি তবে এটির সংকল্প হবে /home/joeতবে মূল হিসাবে এখনও অবধি /root... সুতরাং কিছুই জিতেনি। এটি .vimrcপ্ল্যাটফর্ম এবং ভিম সংস্করণ জুড়ে কাজ করার এবং একটি নিখুঁত পাথ সেট করার সম্পূর্ণরূপে ভাঙ্গার কথা। উত্তর দেওয়ার জন্য সময় দেওয়ার জন্য ধন্যবাদ।
0xC0000022L

@ 0xC আপনি ইতিমধ্যে কমান্ড লাইন থেকে vimrc নির্দিষ্ট করে দিচ্ছেন এবং এর ফলে রানটাইম পথটি নির্দিষ্ট করা হবে। মনে রাখবেন যে ভিআইএমআরসি-তে আপনি ভেরিয়েবলগুলি সংজ্ঞায়িত করতে স্ক্রিপ্টগুলি চালাতে পারেন, সুতরাং আপনি যদি সঠিক ফলাফলের সাথে আপনার প্রশ্নটি সম্পাদনা করেন তবে আমরা সম্ভবত এটি করার একটি উপায় কাজ করতে পারি।
পল

আমার প্রশ্ন সম্পাদনা। ধৈর্য জন্য ধন্যবাদ :)
0xC0000022L

ব্যবহারকারীদের মধ্যে .bashrc, আপনি ভেরিয়েবল সেট করতে পারেন, বলুন $REALHOMEযে এটি থেকে অব্যাহতি পেয়েছে sudo reset_envএবং তারপরে সেই ভিত্তি হিসাবে ব্যবহার করতে rtpপারি?
পল

এটি একটি কার্যকর বিকল্প হিসাবে শোনাচ্ছে । আমি ভেরিয়েবলগুলি এইভাবে চোরাচালান করে আরও সহজ পেয়েছি:alias sudosu='sudo su -l root -c "REALHOME='\''/home/joe'\'' /bin/bash --rcfile /home/joe/.bashrc"'
0xC0000022L
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.