Vim8 paket özelliği nedir ve nasıl kullanmalıyım?


Yanıtlar:


74

Öncelikle, ilgili belgeler :h packagesyeni derlenmiş Vim8 sürümünde ve burada Github'da bulunabilir .

İlk önemli not sözcük dağarcığı hakkındadır: Vim8'de şöyle bir paket tanımlanır:

Vim paketi, bir veya daha fazla eklenti içeren bir dizindir.

Bu, yeni paket yöneticisinin, kullanıcıların tüm eklentilerini aynı arşivde yönetmelerine yardımcı olmak üzere oluşturulduğu anlamına gelir. Doktor aşağıdaki avantajları listeler:

  • Bir paket arşiv olarak indirilebilir ve kendi dizininde açılabilir. Bu nedenle, dosyalar diğer eklentilerin dosyalarıyla karışmaz. Bu güncelleme ve kaldırmayı kolaylaştırır.

  • Bir paket git, mercurial, vb. Depo olabilir. Bu güncelleme gerçekten kolaylaştırır.

  • Bir paket, birbirine bağlı olan birden fazla eklenti içerebilir.

  • Bir paket, başlangıçta otomatik olarak yüklenen ve yalnızca gerektiğinde yüklenen eklentileri içerebilir :packadd.

Bu nedenle fikir, aşağıdaki eklentilere sahip tüm eklentileri içeren bir klasör oluşturmaktır:

$HOME/.vim/pack/my-plugins/
                        start/
                            foo/
                                plugin/
                                    foo.vim
                                syntax/
                                    some.vim
                            bar/
                                plugin/
                                    bar.vim
                        opt/
                            buzz/
                                plugin/
                                    buzz.vim

Klasörün yerleştirme seçeneği packpath(bkz. :h 'packpath') Seçeneği ile tanımlanır .

Klasörünüzün yapısının önemine dikkat edin:

  • startKlasör başlangıçta otomatik olarak yüklenir eklentileri içeriyor.
  • optKlasör yüklü "isteğe bağlı" eklentileri içerir packaddkomuta.
  • Alt klasörler ( plugin, autoload, doc, ...) Eğer eklentileri içinde alışık olanlardır.

İşte klasörlerin bir özeti:

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

Bu dosyalar doğru yerde olduktan sonra, Vim'i açmak eklentileri yükler startve optkullanılabilir olanları hazırlar :packadd.


Şimdi, bu özellik mevcut eklenti yöneticilerinin yerini alabilir mi?

Feragatname: Bu bölüm biraz tartışmalı olabilir.

Bu yeni paket yöneticisinin yaklaşımının alıştığımız eklenti yöneticilerinden gerçekten farklı olduğunu düşünüyorum çünkü bazı eklentileri içeren bir (veya birkaç) arşiv (ler) i yönetmek için yapıldı.

Paket yöneticisi, eklentilerinizi birer birer güncelleme, bir Github adresinden otomatik olarak alma veya etkinleştirmek / devre dışı bırakmak istediğiniz eklentileri seçmek için özellikler sunmaz.

Kutudan çıkarmanın gerçekten uygun olacağından emin değilim (özellikle iç içe sürüm kontrol havuzlarını kullanmak acı verici bir iş olabilir çünkü) ama belki de bu eklenti yöneticilerini daha verimli kılma zamanıdır?

Şimdi mevcut eklentileri, paket yöneticisi tarafından istenen yapıyı benimsemek ve bunları doğrudan dosya sisteminden yönetmek için hareket ettirmeyi hayal etmek de mümkün. Belki bu yeni özelliği kullanmak için bir paketleyici oluşturulabilir.


EDIT @ Sato Katsura tarafından önerildiği gibi burada helptagskomut hakkında bir nottur . Vim8 taahhüdü helptagdokümanda iki satır tanıttı :

: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.

Bu, yeni paket yöneticisinin, kullanıcı arşivine yerleştirilen yardım etiketlerinin oluşturulmasını kolaylaştırdığı anlamına gelir. Tek komutla :helptags ALLtüm yardım etiketleri oluşturulur.


11
İyi bir özeti. Bu packageözellik nihayet, modern eklenti yöneticileriyle rekabet etmemek için vimball'lara ve ilgili dinozorlara son vermeyi amaçlıyor. Daha belirsiz özelliklere pathogengüvenmemeniz şartıyla, bu uygun bir alternatif pathogen. Değiştirmeye teşebbüs etmez, demek Vundle. Eklenti koleksiyonu olarak paket kavramı iyi düşünülmüş ve potansiyel olarak faydalıdır, ancak modern eklenti yöneticilerinin desteklemediği için kimsenin kullanmayacağından korkuyorum. Ve eklenti yöneticileri bunu desteklemiyor çünkü kimse kullanmıyor. Biraz tavuk ve yumurta problemi.
Sato Katsura

2
İlgisiz: hakkında bir not eklemek isteyebilirsiniz :helptags ALL.
Sato Katsura

1
@Sato vimball'lar hakkındaki not için teşekkür eder: Onları hiç kullanmadığım için bile düşünmedim ama şimdi bahsettiğin çok açık görünüyor. "Hiç kimse onu kullanmayacak" konusunda seninle aynı fikirdeyim. Çünkü :helptag ALLbir bakacağım ve ekleyeceğim, öneriniz için teşekkürler!
statox


4
minpac , Vim 8 (ve NeoVim) için yeni bir paket yöneticisidir. Vim 8'in paketlerinin üstüne kurulur update, eklentilerinize veya cleanonlara ( komutlar kullanılmayan eklentileri kaldırarak) komutlar sağlar . Bonus puanlarda, paralel olarak birden fazla güncelleme yapmak için yeni iş kontrol özelliğini de kullanır. Bunun gerçekten umut verici olduğunu düşünüyorum çünkü yerleşik paketleri daha iyi bir UX ile geliştiriyor.
nelstrom

11

"Eklenti yöneticilerinin yerini alabilir" i genişletmek için,

Eskiden harika olan Vundle'ı kullanırdım, ama şimdi onu 18 ya da daha fazla bash çizgisiyle değiştirdim.

İlgili eklentileri gruplandırmak için paket dizinindeki alt klasörleri kullanmayı faydalı buluyorum. Örneğin, "Sözdizimi" veya "Yakut".

İlgili bash örneği aşağıdadır. Bir dosyaya yerleştirin ve çalıştırın.

Konuyla ilgili ek tartışma: 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 tarafından verilen cevap çok açıklayıcıdır, ancak yardım dosyasını doğrudan okuyabildiğinden rahatsız edici olabilecek yeni bir kullanıcı için. İşaretçilerde yapmanız gerekenleri ana hatlarıyla belirtmek istiyorum.

  1. pack/*/startTarafından sağlanan herhangi bir dizinin altında dizin oluşturun set packpath. Ben yaptığım ~/.config/nvim/pack/*/start. Not Eğer yerine istediğiniz herhangi dizin adını kullanabilmesi *ancak tamamen ihmal edemez, nedenini bilmiyorum. Örneğin, dizini kullanabilir ~/.config/nvim/pack/foo/startveya ~/.config/nvim/pack/bar/startkullanamazsınız ~/.config/nvim/pack/start.

  2. Git pack/*/startdizin ve orada paketi klonlamak.

  3. N / vim'i ateşleyin ve :scriptnamesher şeyin yüklü olup olmadığını kontrol etmek için yapın. Her parça yüklenmemişse endişelenmeyin, çünkü bazı dosyalar bazı kancalardan sonra yüklenmelidir, örn autoload/plugin.vim.
  4. Kaldırmak için, sadece paketi klonladığınız dizini kaldırın. Başka bir şey yapmana gerek yok.
  5. Do :helptags ALLtüm yardım dokümanlar için etiket oluşturmak için. Do :helptags {dir}dizin altında yardım docs için etiket üretmek için dir. Örneğin, içinde eklentinizi koyarsanız ~/.config/nvim/pack/foo/plugin_name, o zaman yapmak :helptags ~/.config/nvim/pack/foo/plugin_name/doc. Bu tagseklentinin doc dizininde bir dosya üretecektir . Eklentiyi dizinden kaldırırsanız, etiketler dosyası kaybolur ve vim yardım dosyasını bulamaz, bu nedenle doküman dosyasını el ile kaldırmanız gerekmez.

2

Yeni biçim Patojen eşdeğeri olarak düşünülebilir, bu nedenle hala istediğiniz eklentileri indirebilecek bir yönetici için yer var. Bu yeni paket biçiminden yararlanan birkaç yeni eklenti yöneticisi var, ancak sizi yönetme baş ağrısını bıraktıklarından beri hala Vire yaptım vimrc. Birden fazla makineniz varsa ve aynı yapılandırmayı istiyorsanız, Vire bunu çok kolaylaştırır.


Birden fazla WINDOWS makineniz varsa ve aynı yapılandırmayı istiyorsanız ... FTFY
Dan J.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.