Vim8 पैकेज फीचर क्या है और मुझे इसका उपयोग कैसे करना चाहिए?


108

विम 8 आज जारी किया गया था और रिलीज नोट में एक नए "पैकेज" फीचर का उल्लेख किया गया है। यह क्या है और मुझे इसका उपयोग कैसे करना चाहिए?

सबसे महत्वपूर्ण बात, क्या यह अच्छे पुराने प्लगइन प्रबंधकों को प्रतिस्थापित करता है ?

जवाबों:


74

सबसे पहले, प्रासंगिक दस्तावेज :h packagesको नए संकलित विम 8 संस्करण के साथ और यहां जीथब पर पाया जा सकता है ।

पहला महत्वपूर्ण नोट शब्दावली के बारे में है: Vim8 में एक पैकेज को इस तरह परिभाषित किया गया है:

विम पैकेज एक निर्देशिका है जिसमें एक या अधिक प्लगइन्स होते हैं।

इसका मतलब यह है कि नए पैकेज प्रबंधक को उपयोगकर्ताओं को एक ही संग्रह में अपने सभी प्लगइन्स को प्रबंधित करने में मदद करने के लिए बनाया गया था। डॉक्टर निम्नलिखित लाभों को सूचीबद्ध करता है:

  • एक पैकेज को एक संग्रह के रूप में डाउनलोड किया जा सकता है और अपनी स्वयं की निर्देशिका में अनपैक किया जा सकता है। इस प्रकार फ़ाइलें अन्य प्लगइन्स की फ़ाइलों के साथ मिश्रित नहीं होती हैं। इससे अपडेट करना और निकालना आसान हो जाता है।

  • एक पैकेज एक गिट, मर्क्यूरियल आदि रिपोजिटरी हो सकता है। यह अद्यतन करने के लिए वास्तव में आसान बनाता है।

  • एक पैकेज में कई प्लगइन्स हो सकते हैं जो एक दूसरे पर निर्भर करते हैं।

  • एक पैकेज में प्लगइन्स शामिल हो सकते हैं जो स्वचालित रूप से स्टार्टअप पर लोड होते हैं और जो केवल जरूरत के समय लोड होते हैं :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

एक बार जब ये फाइलें सही जगह पर होती हैं, तो Vim खोलने से प्लगइन्स लोड हो जाएंगे startऔर इनमें optउपलब्ध होंगे :packadd


अब, क्या यह सुविधा मौजूदा प्लगइन प्रबंधकों को बदल सकती है?

डिस्क्लेमर: यह हिस्सा थोड़ा राय वाला हो सकता है।

मुझे लगता है कि इस नए पैकेज प्रबंधक का दृष्टिकोण उन प्लगइन्स प्रबंधकों में से एक से वास्तव में अलग है, जिनका हम उपयोग करते थे क्योंकि यह एक (या कई) संग्रह (ओं) को प्रबंधित करने के लिए बना है जिसमें कुछ प्लगइन्स होते हैं।

बॉक्स से बाहर, पैकेज मैनेजर आपके प्लग-इन को एक-एक करके अपडेट करने के लिए, उन्हें जीथब एड्रेस से स्वचालित रूप से लाने के लिए या उन प्लगइन्स का चयन करने के लिए सुविधाएँ प्रदान नहीं करता है जिन्हें आप सक्षम / अक्षम करना चाहते हैं।

मुझे यकीन नहीं है कि यह बॉक्स से बाहर का उपयोग करने के लिए वास्तव में सुविधाजनक होगा (विशेषकर इसलिए क्योंकि नेस्टेड संस्करण नियंत्रण रिपॉजिटरी एक दर्दनाक काम हो सकता है) लेकिन शायद यह प्लगइन प्रबंधकों को अधिक कुशल बनाने का अवसर है?

अब पैकेज मैनेजर द्वारा आवश्यक संरचना को अपनाने और फ़ाइल सिस्टम से सीधे उन्हें प्रबंधित करने के लिए मौजूदा प्लगइन्स को स्थानांतरित करने की कल्पना करना भी संभव है। हो सकता है कि इस नए फीचर का इस्तेमाल करने के लिए कुछ रैपर बनाए जाएंगे।


EDIT जैसा कि @Sato Katsura द्वारा सुझाया गया है, 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सुविधा अंत में विंबल और संबंधित डायनासोर को समाप्त करने के लिए है, आधुनिक प्लगइन प्रबंधकों के साथ प्रतिस्पर्धा करने के लिए नहीं। यह एक व्यवहार्य प्रतिस्थापन है pathogen, बशर्ते कि आप pathogenअधिक अस्पष्ट सुविधाओं पर निर्भर न हों । यह बदलने, कहने का कोई प्रयास नहीं करता है Vundle। प्लगइन्स के संग्रह के रूप में पैकेज की अवधारणा अच्छी तरह से सोची-समझी और संभावित रूप से उपयोगी है, लेकिन मुझे डर है कि कोई भी इसका उपयोग नहीं करेगा क्योंकि आधुनिक प्लगइन प्रबंधक इसका समर्थन करते हैं। और प्लगइन प्रबंधक इसका समर्थन नहीं करेंगे क्योंकि कोई भी इसका उपयोग नहीं करता है। यह चिकन और अंडे की समस्या का एक सा है।
सातो कैटसुरा

2
असंबंधित: आप के बारे में एक नोट जोड़ना चाह सकते हैं :helptags ALL
सातो कैटसुरा

1
@ विम्बोल के बारे में नोट के लिए शुक्रिया: जैसा कि मैंने कभी भी उनका इस्तेमाल नहीं किया, हालांकि मैं इसके बारे में नहीं जानता था, लेकिन अब जब आप इसका उल्लेख करते हैं तो यह बहुत स्पष्ट लगता है। मैं आपके साथ "कोई भी इसका उपयोग नहीं करेगा" के बारे में सहमत हूं मैं उस बारे में वास्तव में आशावादी नहीं हूं। के लिए :helptag ALLमैं एक नजर है और यह सुझाव के लिए जोड़ने के लिए, धन्यवाद करेंगे!
statox


4
मिनपैक Vim 8 (और NeoVim) के लिए एक नया पैकेज मैनेजर है। यह Vim 8 के पैकेज के ऊपर बनाता है, updateआपके प्लगइन्स को कमांड प्रदान करता है या cleanउन्हें (अप्रयुक्त प्लगइन्स को हटाता है)। बोनस अंक के लिए, यह समानांतर में कई अपडेट करने के लिए नई नौकरी नियंत्रण सुविधा का भी उपयोग करता है। मुझे लगता है कि यह वास्तव में आशाजनक है, क्योंकि यह बेहतर UX के साथ अंतर्निहित पैकेज को बढ़ाता है।
nelstrom 10

11

"यह प्लगइन प्रबंधकों की जगह ले सकता है" पर विस्तार करने के लिए,

मैं वुंडले का उपयोग करता था, जो शानदार था, लेकिन अब इसे 18 या इतने ही बैश की लाइनों के साथ बदल दिया गया है।

मुझे समूह से संबंधित प्लगइन्स में पैक निर्देशिका में सबफ़ोल्डर्स का उपयोग करना उपयोगी लगता है। जैसे "सिंटेक्स" या "रूबी"।

प्रासंगिक बैश उदाहरण नीचे है। एक फ़ाइल में रखें और इसे चलाएं।

इस विषय पर अतिरिक्त चर्चा: 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

@Statox द्वारा प्रदान किया गया उत्तर बहुत ही वर्णनात्मक है, लेकिन एक नए उपयोगकर्ता के लिए जो विचलित करने वाला हो सकता है, क्योंकि वे मदद फ़ाइल को सीधे पढ़ सकते हैं। मैं इंगित करना चाहता हूं कि आपको पॉइंटर्स में क्या करने की आवश्यकता है।

  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. N / vim फायर करें :scriptnamesऔर जांचें कि क्या सब कुछ लोड है। चिंता मत करो अगर हर हिस्सा लोड नहीं है, क्योंकि कुछ फाइलें कुछ हुक के बाद लोड करने के लिए होती हैं, जैसे autoload/plugin.vim
  4. अनइंस्टॉल करने के लिए, केवल उस निर्देशिका को हटा दें जहाँ आपने पैकेज को क्लोन किया था। कुछ और करने की जरूरत नहीं है।
  5. क्या :helptags ALLसभी मदद डॉक्स के लिए टैग उत्पन्न करने के लिए। क्या :helptags {dir}निर्देशिका के अंतर्गत सहायता डॉक्स के लिए टैग पैदा करने के लिए dir। उदाहरण के लिए, यदि आप अपना प्लगइन डालते हैं ~/.config/nvim/pack/foo/plugin_name, तो करें :helptags ~/.config/nvim/pack/foo/plugin_name/doc। कि tagsप्लगइन की डॉक्टर निर्देशिका में एक फ़ाइल उत्पन्न करेगा । यदि आप निर्देशिका से प्लगइन निकालते हैं, तो टैग फ़ाइल चली जाएगी और विम को सहायता फ़ाइल नहीं मिलेगी, इसलिए आपको मैन्युअल रूप से डॉक्टर फ़ाइल को अनइंस्टॉल करने की आवश्यकता नहीं है।

2

नए फॉर्मेट को पैथोजन समकक्ष के रूप में सोचा जा सकता है इसलिए प्रबंधक के लिए अभी भी जगह है जो आपके इच्छित प्लगइन्स को डाउनलोड कर सकता है। कुछ नए प्लगइन प्रबंधक हैं जो इस नए पैक प्रारूप का लाभ उठाते हैं, लेकिन मैंने अभी भी Vire किया है क्योंकि वे vimrcआपके लिए प्रबंधन का सिरदर्द छोड़ते हैं। यदि आपके पास एक से अधिक मशीनें हैं और समान कॉन्‍फ़िगरेशन चाहते हैं, तो Vire इसे सुपर आसान बनाता है।


यदि आपके पास कई विन्डोज़ मशीनें हैं और उसी विन्यास को चाहते हैं ... FTFY
Dan J.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.