Co to jest funkcja pakietu Vim8 i jak go używać?


Odpowiedzi:


74

Po pierwsze, odpowiednią dokumentację można znaleźć :h packagesw nowo skompilowanej wersji Vim8 i tutaj na Github .

Pierwsza ważna uwaga dotyczy słownictwa: w Vim8 pakiet jest zdefiniowany w następujący sposób:

Pakiet Vima to katalog zawierający jedną lub więcej wtyczek.

Oznacza to, że nowy menedżer pakietów został stworzony, aby pomóc użytkownikom w zarządzaniu wszystkimi wtyczkami w tym samym archiwum. Dokument przedstawia następujące zalety:

  • Pakiet można pobrać jako archiwum i rozpakować we własnym katalogu. Dlatego pliki nie są mieszane z plikami innych wtyczek. Ułatwia to aktualizację i usunięcie.

  • Pakiet może być repozytorium git, mercurial itp. To sprawia, że ​​aktualizacja jest naprawdę łatwa.

  • Pakiet może zawierać wiele wtyczek, które są od siebie zależne.

  • Pakiet może zawierać wtyczki, które są automatycznie ładowane podczas uruchamiania i te, które są ładowane tylko w razie potrzeby z :packadd.

Pomysł polega więc na utworzeniu folderu zawierającego wszystkie wtyczki o następującej strukturze:

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

Położenie folderu określa opcja packpath(patrz :h 'packpath').

Zwróć uwagę na znaczenie struktury folderu:

  • startFolder zawiera pluginy, które zostaną załadowane automatycznie przy starcie.
  • optFolder zawiera „opcjonalne” wtyczek, załadowane z packaddpoleceniem.
  • Podfoldery ( plugin, autoload, doc, ...) są te masz w zwyczaju w wtyczek.

Oto podsumowanie folderów:

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

Gdy te pliki znajdą się we właściwym miejscu, otwarcie Vima załaduje wtyczki starti udostępni te optz :packadd.


Czy ta funkcja może zastąpić istniejących menedżerów wtyczek?

Oświadczenie: Ta część może być nieco uparta.

Myślę, że podejście tego nowego menedżera pakietów jest naprawdę inne niż menedżera wtyczek, do którego byliśmy przyzwyczajeni, ponieważ jest stworzony do zarządzania jednym (lub kilkoma) archiwami zawierającymi niektóre wtyczki.

Po wyjęciu z pudełka menedżer pakietów nie udostępnia funkcji aktualizowania wtyczek jeden po drugim, automatycznego pobierania ich z adresu Github lub wybierania wtyczek, które chcesz włączyć / wyłączyć.

Nie jestem pewien, czy naprawdę wygodne będzie używanie go od razu po wyjęciu z pudełka (szczególnie dlatego, że obsługa zagnieżdżonych repozytoriów kontroli wersji może być bolesnym zadaniem), ale może jest to okazja, aby zwiększyć efektywność menedżerów wtyczek?

Teraz można również wyobrazić sobie przeniesienie istniejących wtyczek w celu dostosowania struktury wymaganej przez menedżera pakietów i zarządzania nimi bezpośrednio z systemu plików. Być może zostanie utworzone opakowanie do korzystania z tej nowej funkcji.


EDYCJA Zgodnie z sugestią @Sato Katsura tutaj jest notatka dotycząca helptagspolecenia. Zatwierdzenie Vim8 wprowadziło dwie linie w helptagdokumencie :

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

Co oznacza, że ​​nowy menedżer pakietów ułatwia generowanie helptagów umieszczanych w archiwum użytkownika. Za pomocą jednego polecenia :helptags ALLgenerowane są wszystkie helptagi.


11
Dobre podsumowanie. Ta packagefunkcja ma wreszcie położyć kres vimballom i pokrewnym dinozaurom, a nie konkurować z nowoczesnymi menedżerami wtyczek. Jest to realny zamiennik pathogen, pod warunkiem, że nie polegasz na pathogenbardziej niejasnych funkcjach. Nie próbuje, powiedzmy, zastąpić Vundle. Koncepcja pakietu jako kolekcji wtyczek jest dobrze przemyślana i potencjalnie przydatna, ale obawiam się, że nikt go nie użyje, ponieważ współczesni menedżerowie wtyczek go nie obsługują. A menedżerowie wtyczek nie będą go obsługiwać, ponieważ nikt go nie używa. To trochę problem z kurczakiem i jajkiem.
Sato Katsura,

2
Niepowiązane: możesz chcieć dodać notatkę o :helptags ALL.
Sato Katsura,

1
@Sato dziękuje za notatkę o vimballach: ponieważ nigdy ich nie używałem, nawet o tym nie myślałem, ale teraz, kiedy o tym wspominasz, wydaje się to dość oczywiste. Zgadzam się z tobą w sprawie „nikt tego nie użyje”. Nie jestem zbyt optymistyczny. Do :helptag ALLzobaczenia i dodam, dzięki za sugestię!
statox


4
minpac to nowy menedżer pakietów dla Vima 8 (i NeoVim). Opiera się na pakietach Vima 8, dostarczając polecenia do updatewtyczek lub cleanich (usuwając nieużywane wtyczki). W przypadku punktów bonusowych wykorzystuje także nową funkcję kontroli zadań do wykonywania wielu aktualizacji równolegle. Myślę, że to naprawdę obiecujące, ponieważ ulepsza wbudowane pakiety o lepszy UX.
nelstrom

11

Aby rozwinąć „czy może zastąpić menedżerów wtyczek”,

Kiedyś korzystałem z Vundle, co było fantastyczne, ale teraz zastąpiłem go około 18 liniami bash.

Uważam, że przydatne jest używanie podfolderów w katalogu pack do grupowania powiązanych wtyczek. Np. „Składnia” lub „Ruby”.

Odpowiedni przykład bash znajduje się poniżej. Umieść w pliku i uruchom go.

Dodatkowa dyskusja na ten temat pod adresem : 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

Odpowiedź udzielona przez @statox jest bardzo opisowa, ale dla nowego użytkownika może być rozpraszająca, ponieważ może on bezpośrednio odczytać plik pomocy. Chcę nakreślić, co musisz zrobić we wskazówkach.

  1. Utwórz pack/*/startkatalog w dowolnym katalogu podanym przez set packpath. Zrobiłem to ~/.config/nvim/pack/*/start. Pamiętaj , że możesz użyć dowolnej nazwy katalogu zamiast, *ale nie możesz jej całkowicie pominąć, nie wiem dlaczego. Na przykład możesz użyć katalogu ~/.config/nvim/pack/foo/startlub ~/.config/nvim/pack/bar/startnie ~/.config/nvim/pack/start.

  2. Przejdź do pack/*/startkatalogu i sklonuj tam pakiet.

  3. Uruchom n / vim i :scriptnamessprawdź, czy wszystko jest załadowane. Nie martw się, jeśli nie każda część jest załadowana, ponieważ niektóre pliki mają być ładowane po pewnym zawieszeniu, np autoload/plugin.vim.
  4. Aby odinstalować, wystarczy usunąć katalog, w którym sklonowałeś pakiet. Nie musisz robić nic więcej.
  5. Czy :helptags ALLgenerować tagi dla wszystkich dokumentów pomocy. Wykonaj w :helptags {dir}celu wygenerowania tagów dla dokumentów pomocy w katalogu dir. Na przykład, jeśli wstawisz wtyczkę ~/.config/nvim/pack/foo/plugin_name, to zrób :helptags ~/.config/nvim/pack/foo/plugin_name/doc. To wygeneruje tagsplik w katalogu doc ​​wtyczki. Jeśli usuniesz wtyczkę z katalogu, plik znaczników zniknie, a vim nie znajdzie pliku pomocy, więc nie musisz ręcznie odinstalowywać pliku doc.

2

Nowy format można traktować jako ekwiwalent Pathogenu, więc nadal jest miejsce dla menedżera, który może pobrać żądane wtyczki. Jest kilku nowych menedżerów wtyczek, którzy wykorzystują ten nowy format paczki, ale nadal stworzyłem Vire, ponieważ pozostawiają ci problemy z zarządzaniem nimi vimrc. Jeśli masz wiele komputerów i chcesz mieć taką samą konfigurację w całej sieci, Vire sprawia, że ​​jest to bardzo łatwe.


Jeśli masz wiele maszyn WINDOWS i chcesz mieć tę samą konfigurację ... FTFY
Dan J.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.