जवाबों:
सबसे पहले, प्रासंगिक दस्तावेज :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
सभी हेल्पैग उत्पन्न होते हैं।
:helptags ALL
।
:helptag ALL
मैं एक नजर है और यह सुझाव के लिए जोड़ने के लिए, धन्यवाद करेंगे!
update
आपके प्लगइन्स को कमांड प्रदान करता है या clean
उन्हें (अप्रयुक्त प्लगइन्स को हटाता है)। बोनस अंक के लिए, यह समानांतर में कई अपडेट करने के लिए नई नौकरी नियंत्रण सुविधा का भी उपयोग करता है। मुझे लगता है कि यह वास्तव में आशाजनक है, क्योंकि यह बेहतर UX के साथ अंतर्निहित पैकेज को बढ़ाता है।
"यह प्लगइन प्रबंधकों की जगह ले सकता है" पर विस्तार करने के लिए,
मैं वुंडले का उपयोग करता था, जो शानदार था, लेकिन अब इसे 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
@Statox द्वारा प्रदान किया गया उत्तर बहुत ही वर्णनात्मक है, लेकिन एक नए उपयोगकर्ता के लिए जो विचलित करने वाला हो सकता है, क्योंकि वे मदद फ़ाइल को सीधे पढ़ सकते हैं। मैं इंगित करना चाहता हूं कि आपको पॉइंटर्स में क्या करने की आवश्यकता है।
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
प्लगइन की डॉक्टर निर्देशिका में एक फ़ाइल उत्पन्न करेगा । यदि आप निर्देशिका से प्लगइन निकालते हैं, तो टैग फ़ाइल चली जाएगी और विम को सहायता फ़ाइल नहीं मिलेगी, इसलिए आपको मैन्युअल रूप से डॉक्टर फ़ाइल को अनइंस्टॉल करने की आवश्यकता नहीं है।नए फॉर्मेट को पैथोजन समकक्ष के रूप में सोचा जा सकता है इसलिए प्रबंधक के लिए अभी भी जगह है जो आपके इच्छित प्लगइन्स को डाउनलोड कर सकता है। कुछ नए प्लगइन प्रबंधक हैं जो इस नए पैक प्रारूप का लाभ उठाते हैं, लेकिन मैंने अभी भी Vire किया है क्योंकि वे vimrc
आपके लिए प्रबंधन का सिरदर्द छोड़ते हैं। यदि आपके पास एक से अधिक मशीनें हैं और समान कॉन्फ़िगरेशन चाहते हैं, तो Vire इसे सुपर आसान बनाता है।
package
सुविधा अंत में विंबल और संबंधित डायनासोर को समाप्त करने के लिए है, आधुनिक प्लगइन प्रबंधकों के साथ प्रतिस्पर्धा करने के लिए नहीं। यह एक व्यवहार्य प्रतिस्थापन हैpathogen
, बशर्ते कि आपpathogen
अधिक अस्पष्ट सुविधाओं पर निर्भर न हों । यह बदलने, कहने का कोई प्रयास नहीं करता हैVundle
। प्लगइन्स के संग्रह के रूप में पैकेज की अवधारणा अच्छी तरह से सोची-समझी और संभावित रूप से उपयोगी है, लेकिन मुझे डर है कि कोई भी इसका उपयोग नहीं करेगा क्योंकि आधुनिक प्लगइन प्रबंधक इसका समर्थन करते हैं। और प्लगइन प्रबंधक इसका समर्थन नहीं करेंगे क्योंकि कोई भी इसका उपयोग नहीं करता है। यह चिकन और अंडे की समस्या का एक सा है।