Vim8 প্যাকেজ বৈশিষ্ট্যটি কী এবং আমি কীভাবে এটি ব্যবহার করব?


108

ভিম 8 আজ মুক্তি পেয়েছে এবং রিলিজ নোটগুলিতে একটি নতুন "প্যাকেজ" বৈশিষ্ট্য উল্লেখ রয়েছে। এটি কী এবং আমি কীভাবে এটি ব্যবহার করব?

সবচেয়ে গুরুত্বপূর্ণ, এটি কি পুরানো প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করে ?

উত্তর:


74

প্রথমত, প্রাসঙ্গিক ডকুমেন্টেশন :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সমস্ত হেল্পট্যাগ তৈরি করা হয়।


11
ভাল সংক্ষিপ্তসার। packageবৈশিষ্ট্য পরিশেষে vimballs ও সংশ্লিষ্ট ডাইনোসর শেষ করা, আধুনিক প্লাগইন পরিচালকদের সঙ্গে প্রতিযোগিতা করতে না বোঝানো হয়। এটি pathogenযদি আপনার pathogenআরও অস্পষ্ট বৈশিষ্ট্যগুলির উপর নির্ভর না করে তবে এটি একটি কার্যকর প্রতিস্থাপন । এটি বলুন, প্রতিস্থাপন করার কোনও চেষ্টা করে না Vundle। প্লাগইনগুলির সংগ্রহ হিসাবে প্যাকেজটির ধারণাটি খুব চিন্তা-ভাবনা এবং সম্ভাব্য কার্যকর, তবে আমি আশঙ্কা করি যে কেউ এটি ব্যবহার করবে না কারণ আধুনিক প্লাগইন পরিচালকরা এটি সমর্থন করে না। এবং প্লাগইন পরিচালকরা এটি সমর্থন করবে না কারণ কেউ এটি ব্যবহার করে না। এটি একটি মুরগি এবং ডিমের সমস্যা কিছুটা।
সাতো ক্যাটসুরা

2
সম্পর্কিত নয়: আপনি সম্ভবত একটি নোট যুক্ত করতে চাইবেন :helptags ALL
সাতো ক্যাটসুরা

1
@ সিমো ভিম্বলগুলি সম্পর্কে নোটের জন্য ধন্যবাদ: আমি এগুলি কখনও ব্যবহার করি না যদিও আমি এটি সম্পর্কে ব্যবহার করি নি তবে এখন আপনি এটি উল্লেখ করেছেন এটি বেশ সুস্পষ্ট বলে মনে হয়। "কেউ এটি ব্যবহার করবে না" সম্পর্কে আমি আপনার সাথে একমত নোট আমি সে সম্পর্কে সত্যই আশাবাদী নই। :helptag ALLআমি জন্য একটি চেহারা আছে এবং এটি যুক্ত করব, পরামর্শের জন্য ধন্যবাদ!
স্ট্যাটক্স


4
মিনপ্যাক হ'ল ভিম 8 (এবং নিওভিম) এর জন্য একটি নতুন প্যাকেজ ম্যানেজার। এটি ভিম 8 এর প্যাকেজগুলির শীর্ষে তৈরি করে, updateআপনার প্লাগইনগুলি বা cleanতাদের (অব্যবহৃত প্লাগইনগুলি সরিয়ে) কমান্ড সরবরাহ করে । বোনাস পয়েন্টগুলির জন্য, এটি সমান্তরালভাবে একাধিক আপডেট সম্পাদন করতে নতুন কাজের নিয়ন্ত্রণ বৈশিষ্ট্যটিও ব্যবহার করে। আমি মনে করি এটি সত্যিই প্রতিশ্রুতিবদ্ধ, কারণ এটি আরও ভাল ইউএক্স সহ অন্তর্নির্মিত প্যাকেজগুলিকে উন্নত করে।
নেলস্ট্রোম

11

"এটি প্লাগইন পরিচালকদেরকে প্রতিস্থাপন করতে পারে" তে প্রসারিত করতে,

আমি ভন্ডল ব্যবহার করতাম, যা দুর্দান্ত ছিল তবে এখন এটির পরিবর্তে 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

4

@ স্টাটক্সের দেওয়া উত্তরটি খুব বর্ণনামূলক, তবে এমন একটি নতুন ব্যবহারকারীর জন্য যা বিভ্রান্ত করতে পারে, কারণ তারা সরাসরি সহায়তা ফাইলটি পড়তে পারে। পয়েন্টারগুলিতে আপনাকে কী করতে হবে তা আমি রূপরেখাতে চাই।

  1. pack/*/startপ্রদত্ত যে কোনও ডিরেক্টরিতে ডিরেক্টরি তৈরি করুন set packpath। আমি ভিতরে ছিল ~/.config/nvim/pack/*/startনোট করুন যে আপনি যে ডিরেক্টরিতে চান তার পরিবর্তে ডিরেক্টরি ব্যবহার করতে পারেন *তবে আপনি এটি পুরোপুরি বাদ দিতে পারবেন না, কেন তা আমি জানি না। উদাহরণস্বরূপ, যদি আপনি তালিকা ব্যবহার করতে পারেন ~/.config/nvim/pack/foo/startবা ~/.config/nvim/pack/bar/startনা কিন্তু ~/.config/nvim/pack/start

  2. pack/*/startডিরেক্টরিতে যান এবং সেখানে প্যাকেজ ক্লোন করুন।

  3. এন / ভিএম ফায়ার করুন এবং :scriptnamesসবকিছু লোড হয়েছে কিনা তা পরীক্ষা করে দেখুন। প্রতিটি অংশ লোড না হলে চিন্তা করবেন না, কারণ কিছু ফাইল কিছু হুকের পরে বোঝা বোঝানো হয়, যেমন autoload/plugin.vim
  4. আনইনস্টল করতে, কেবলমাত্র সেই ডিরেক্টরিটি সরিয়ে ফেলুন যেখানে আপনি প্যাকেজটি ক্লোন করেছেন। আর কিছু করার দরকার নেই।
  5. কি :helptags ALLসব ধরনের সাহায্য দস্তাবেজের জন্য ট্যাগ তৈরি করতে। কি :helptags {dir}ডিরেক্টরির অধীনে সাহায্যের দস্তাবেজের জন্য ট্যাগ জেনারেট করার জন্য dir। উদাহরণস্বরূপ, আপনি যদি নিজের প্লাগইনটি এতে রেখে দেন ~/.config/nvim/pack/foo/plugin_nameতবে তা করুন :helptags ~/.config/nvim/pack/foo/plugin_name/doctagsএটি প্লাগইনটির ডক ডিরেক্টরিতে একটি ফাইল তৈরি করবে । আপনি যদি ডিরেক্টরিটি থেকে প্লাগইনটি সরিয়ে থাকেন তবে ট্যাগ ফাইলটি চলে যাবে এবং vim সাহায্যের ফাইলটি খুঁজে পাবে না, সুতরাং আপনাকে ডক ফাইলটি ম্যানুয়ালি আনইনস্টল করার দরকার নেই।

2

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


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