ভিম 8 আজ মুক্তি পেয়েছে এবং রিলিজ নোটগুলিতে একটি নতুন "প্যাকেজ" বৈশিষ্ট্য উল্লেখ রয়েছে। এটি কী এবং আমি কীভাবে এটি ব্যবহার করব?
সবচেয়ে গুরুত্বপূর্ণ, এটি কি পুরানো প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করে ?
ভিম 8 আজ মুক্তি পেয়েছে এবং রিলিজ নোটগুলিতে একটি নতুন "প্যাকেজ" বৈশিষ্ট্য উল্লেখ রয়েছে। এটি কী এবং আমি কীভাবে এটি ব্যবহার করব?
সবচেয়ে গুরুত্বপূর্ণ, এটি কি পুরানো প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করে ?
উত্তর:
প্রথমত, প্রাসঙ্গিক ডকুমেন্টেশন :h packages
সদ্য সংকলিত ভিম 8 সংস্করণে এবং এখানে গিথুব-এ পাওয়া যাবে ।
প্রথম গুরুত্বপূর্ণ নোটটি ভোকাবুলারি সম্পর্কে: ভিএম 8-এ একটি প্যাকেজটি এভাবে সংজ্ঞায়িত করা হয়:
ভিম প্যাকেজ হ'ল একটি ডিরেক্টরি যা এক বা একাধিক প্লাগইন ধারণ করে।
এর অর্থ হ'ল নতুন প্যাকেজ ম্যানেজারটি একই সংরক্ষণাগারে তাদের সমস্ত প্লাগইন পরিচালনা করতে সহায়তা করার জন্য তৈরি করা হয়েছিল। ডকটি নিম্নলিখিত সুবিধাগুলি তালিকাবদ্ধ করে:
একটি প্যাকেজ সংরক্ষণাগার হিসাবে ডাউনলোড করা যায় এবং নিজস্ব ডিরেক্টরিতে প্যাক করা যায়। সুতরাং ফাইলগুলি অন্য প্লাগইনগুলির ফাইলগুলির সাথে মিশ্রিত হয় না। এটি আপডেট এবং সরানো সহজ করে তোলে।
একটি প্যাকেজ একটি গিট, পার্কিয়াল ইত্যাদি সংগ্রহস্থল হতে পারে। এটি আপডেট করা সত্যিই সহজ করে তোলে।
একটি প্যাকেজে একাধিক প্লাগইন থাকতে পারে যা একে অপরের উপর নির্ভর করে।
কোনও প্যাকেজটিতে এমন প্লাগইন থাকতে পারে যা স্বয়ংক্রিয়ভাবে প্রারম্ভকালে লোড হয় এবং কেবলমাত্র যখন প্রয়োজন হয় তখন লোড হয়
:packadd
।
সুতরাং ধারণাটি হ'ল নিম্নলিখিত কাঠামোর সাথে সমস্ত প্লাগইন যুক্ত একটি ফোল্ডার তৈরি করা:
$HOME/.vim/pack/my-plugins/
start/
foo/
plugin/
foo.vim
syntax/
some.vim
bar/
plugin/
bar.vim
opt/
buzz/
plugin/
buzz.vim
ফোল্ডারের এম্পলেসমেন্টটি বিকল্পটি packpath
(দেখুন :h 'packpath'
) দ্বারা সংজ্ঞায়িত করা হয়েছে ।
আপনার ফোল্ডারের কাঠামোর গুরুত্ব নোট করুন:
start
ফোল্ডারের প্লাগিন যা স্টার্টআপে স্বয়ংক্রিয়ভাবে লোড হবে ধারণ করে।opt
ফোল্ডার "ঐচ্ছিক" প্লাগিন, লোড রয়েছে packadd
কমান্ড।plugin
, autoload
, doc
, ...) আপনি যেগুলি প্লাগ-ইনের মধ্যে ব্যবহার করছি হয়।এখানে ফোল্ডারগুলির একটি পুনর্নির্মাণ:
start/foobar/plugin/foo.vim " always loaded, defines commands
start/foobar/plugin/bar.vim " always loaded, defines commands
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
opt/fooextra/doc/tags " help tags
একবার এই ফাইলগুলি সঠিক জায়গায় এলে, ভিম খোলার ফলে প্লাগইনগুলি লোড হয়ে যায় start
এবং ফাইলগুলি এটিকে opt
উপলব্ধ করে দেবে :packadd
।
এখন, এই বৈশিষ্ট্যটি কি বিদ্যমান প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করতে পারে?
দাবি অস্বীকার: এই অংশটি কিছুটা মতামতযুক্ত হতে পারে।
আমি মনে করি যে এই নতুন প্যাকেজ ম্যানেজারটির পন্থাগুলি আমরা যে কোনও প্লাগইন পরিচালকদের ব্যবহার করতাম তার চেয়ে আলাদা কারণ কারণ এটি কিছু প্লাগইনযুক্ত একটি (বা বেশ কয়েকটি) সংরক্ষণাগার (গুলি) পরিচালনা করার জন্য তৈরি হয়েছিল।
বাক্সের বাইরে, প্যাকেজ ম্যানেজার আপনার প্লাগইনগুলিকে একের পর এক আপডেট করার জন্য, গিথুব ঠিকানা থেকে স্বয়ংক্রিয়ভাবে আনতে বা আপনি সক্ষম / অক্ষম করতে চান এমন প্লাগইনগুলি নির্বাচন করতে বৈশিষ্ট্যগুলি সরবরাহ করে না।
আমি নিশ্চিত নই যে এটি বাক্সের বাইরে ব্যবহার করা সত্যিই সুবিধাজনক হবে (বিশেষত কারণ নেস্টেড সংস্করণ নিয়ন্ত্রণের সংগ্রহগুলি পরিচালনা করা একটি বেদনাদায়ক কাজ হতে পারে) তবে প্লাগইন পরিচালকদের আরও দক্ষ করার জন্য এই উপলক্ষটি কি?
প্যাকেজ ম্যানেজারের প্রয়োজনীয় কাঠামো অবলম্বন করতে এবং সরাসরি ফাইল সিস্টেম থেকে সেগুলি পরিচালনা করার জন্য বিদ্যমান প্লাগইনগুলি সরানো কল্পনা করাও সম্ভব। এই নতুন বৈশিষ্ট্যটি ব্যবহার করতে হয়ত কিছু মোড়ক তৈরি করা হবে।
সম্পাদনা @ সাতো কাতসুরার পরামর্শ অনুসারে এখানে helptags
কমান্ডটি সম্পর্কে একটি মন্তব্য রয়েছে । ভিম 8 কমিট helptag
ডকটিতে দুটি লাইন প্রবর্তন করেছে :
:helpt[ags] [++t] {dir} Generate the help tags file(s) for directory {dir}. When {dir} is ALL then all "doc" directories in 'runtimepath' will be used.
যার অর্থ হ'ল নতুন প্যাকেজ ম্যানেজারটি ব্যবহারকারী সংরক্ষণাগারে রাখা হেল্প ট্যাগগুলির প্রজন্মকে সহজ করে দেয়। একক কমান্ডের সাহায্যে :helptags ALL
সমস্ত হেল্পট্যাগ তৈরি করা হয়।
:helptags ALL
।
:helptag ALL
আমি জন্য একটি চেহারা আছে এবং এটি যুক্ত করব, পরামর্শের জন্য ধন্যবাদ!
update
আপনার প্লাগইনগুলি বা clean
তাদের (অব্যবহৃত প্লাগইনগুলি সরিয়ে) কমান্ড সরবরাহ করে । বোনাস পয়েন্টগুলির জন্য, এটি সমান্তরালভাবে একাধিক আপডেট সম্পাদন করতে নতুন কাজের নিয়ন্ত্রণ বৈশিষ্ট্যটিও ব্যবহার করে। আমি মনে করি এটি সত্যিই প্রতিশ্রুতিবদ্ধ, কারণ এটি আরও ভাল ইউএক্স সহ অন্তর্নির্মিত প্যাকেজগুলিকে উন্নত করে।
"এটি প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করতে পারে" তে প্রসারিত করতে,
আমি ভন্ডল ব্যবহার করতাম, যা দুর্দান্ত ছিল তবে এখন এটির পরিবর্তে 18 বা তার বেশি লাইন বাশ লাগিয়েছে।
গ্রুপ সম্পর্কিত প্লাগইনগুলিতে প্যাক ডিরেক্টরিতে সাবফোল্ডারগুলি ব্যবহার করা আমার পক্ষে দরকারী find যেমন "সিনট্যাক্স" বা "রুবি"।
সম্পর্কিত বাশ উদাহরণ নীচে। একটি ফাইল রাখুন এবং এটি চালান।
বিষয়টিকে ঘিরে অতিরিক্ত আলোচনা: https://stories.abletech.nz/get-rid-of-your-vim-plugin-manager-7c8ff742f643#.abnjauzgk
#!/usr/bin/env bash
# This file lives in ~/.vim/pack/install.sh
# Remember to add executable: chmod +x ~/.vim/pack/install.sh
#
# Create new folder in ~/.vim/pack that contains a start folder and cd into it.
#
# Arguments:
# package_group, a string folder name to create and change into.
#
# Examples:
# set_group syntax-highlighting
#
function set_group () {
package_group=$1
path="$HOME/.vim/pack/$package_group/start"
mkdir -p "$path"
cd "$path" || exit
}
# Clone or update a git repo in the current directory.
#
# Arguments:
# repo_url, a URL to the git repo.
#
# Examples:
# package https://github.com/tpope/vim-endwise.git
#
function package () {
repo_url=$1
expected_repo=$(basename "$repo_url" .git)
if [ -d "$expected_repo" ]; then
cd "$expected_repo" || exit
result=$(git pull --force)
echo "$expected_repo: $result"
else
echo "$expected_repo: Installing..."
git clone -q "$repo_url"
fi
}
(
set_group ruby
package https://github.com/tpope/vim-rails.git &
package https://github.com/tpope/vim-rake.git &
package https://github.com/tpope/vim-bundler.git &
package https://github.com/tpope/vim-endwise.git &
wait
) &
(
set_group syntax
package https://github.com/kchmck/vim-coffee-script.git &
package https://github.com/tpope/vim-markdown.git &
package https://github.com/ap/vim-css-color.git &
wait
) &
(
set_group colorschemes
package https://github.com/altercation/vim-colors-solarized.git &
wait
) &
wait
@ স্টাটক্সের দেওয়া উত্তরটি খুব বর্ণনামূলক, তবে এমন একটি নতুন ব্যবহারকারীর জন্য যা বিভ্রান্ত করতে পারে, কারণ তারা সরাসরি সহায়তা ফাইলটি পড়তে পারে। পয়েন্টারগুলিতে আপনাকে কী করতে হবে তা আমি রূপরেখাতে চাই।
pack/*/start
প্রদত্ত যে কোনও ডিরেক্টরিতে ডিরেক্টরি তৈরি করুন set packpath
। আমি ভিতরে ছিল ~/.config/nvim/pack/*/start
। নোট করুন যে আপনি যে ডিরেক্টরিতে চান তার পরিবর্তে ডিরেক্টরি ব্যবহার করতে পারেন *
তবে আপনি এটি পুরোপুরি বাদ দিতে পারবেন না, কেন তা আমি জানি না। উদাহরণস্বরূপ, যদি আপনি তালিকা ব্যবহার করতে পারেন ~/.config/nvim/pack/foo/start
বা ~/.config/nvim/pack/bar/start
না কিন্তু ~/.config/nvim/pack/start
।
pack/*/start
ডিরেক্টরিতে যান এবং সেখানে প্যাকেজ ক্লোন করুন।
:scriptnames
সবকিছু লোড হয়েছে কিনা তা পরীক্ষা করে দেখুন। প্রতিটি অংশ লোড না হলে চিন্তা করবেন না, কারণ কিছু ফাইল কিছু হুকের পরে বোঝা বোঝানো হয়, যেমন autoload/plugin.vim
।:helptags ALL
সব ধরনের সাহায্য দস্তাবেজের জন্য ট্যাগ তৈরি করতে। কি :helptags {dir}
ডিরেক্টরির অধীনে সাহায্যের দস্তাবেজের জন্য ট্যাগ জেনারেট করার জন্য dir
। উদাহরণস্বরূপ, আপনি যদি নিজের প্লাগইনটি এতে রেখে দেন ~/.config/nvim/pack/foo/plugin_name
তবে তা করুন :helptags ~/.config/nvim/pack/foo/plugin_name/doc
। tags
এটি প্লাগইনটির ডক ডিরেক্টরিতে একটি ফাইল তৈরি করবে । আপনি যদি ডিরেক্টরিটি থেকে প্লাগইনটি সরিয়ে থাকেন তবে ট্যাগ ফাইলটি চলে যাবে এবং vim সাহায্যের ফাইলটি খুঁজে পাবে না, সুতরাং আপনাকে ডক ফাইলটি ম্যানুয়ালি আনইনস্টল করার দরকার নেই।নতুন ফর্ম্যাটটিকে একটি প্যাথোজেন সমতুল্য হিসাবে ভাবা যেতে পারে তাই কোনও ম্যানেজারের জন্য এখনও জায়গা রয়েছে যা আপনার পছন্দসই প্লাগইনগুলি ডাউনলোড করতে পারে। কয়েকটি নতুন প্লাগইন পরিচালকদের লিভারেজ এই নতুন প্যাক বিন্যাস কিন্তু আমি এখনও তৈরি Vire, যেহেতু তারা পরিচালনার মাথা ব্যাথা ছেড়ে vimrc
আপনাকে। আপনার যদি একাধিক মেশিন থাকে এবং জুড়ে একই কনফিগার করতে চান তবে ভাইরা এটিকে অতি সহজ করে তোলে।
package
বৈশিষ্ট্য পরিশেষে vimballs ও সংশ্লিষ্ট ডাইনোসর শেষ করা, আধুনিক প্লাগইন পরিচালকদের সঙ্গে প্রতিযোগিতা করতে না বোঝানো হয়। এটিpathogen
যদি আপনারpathogen
আরও অস্পষ্ট বৈশিষ্ট্যগুলির উপর নির্ভর না করে তবে এটি একটি কার্যকর প্রতিস্থাপন । এটি বলুন, প্রতিস্থাপন করার কোনও চেষ্টা করে নাVundle
। প্লাগইনগুলির সংগ্রহ হিসাবে প্যাকেজটির ধারণাটি খুব চিন্তা-ভাবনা এবং সম্ভাব্য কার্যকর, তবে আমি আশঙ্কা করি যে কেউ এটি ব্যবহার করবে না কারণ আধুনিক প্লাগইন পরিচালকরা এটি সমর্থন করে না। এবং প্লাগইন পরিচালকরা এটি সমর্থন করবে না কারণ কেউ এটি ব্যবহার করে না। এটি একটি মুরগি এবং ডিমের সমস্যা কিছুটা।