Vim 8 serbest bırakıldı bugün ve sürüm notları yeni bir "paket" özelliği bahseder. Bu nedir ve nasıl kullanmalıyım?
En önemlisi, eski eklenti yöneticilerinin yerini alıyor mu?
Vim 8 serbest bırakıldı bugün ve sürüm notları yeni bir "paket" özelliği bahseder. Bu nedir ve nasıl kullanmalıyım?
En önemlisi, eski eklenti yöneticilerinin yerini alıyor mu?
Yanıtlar:
Öncelikle, ilgili belgeler :h packages
yeni 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:
start
Klasör başlangıçta otomatik olarak yüklenir eklentileri içeriyor.opt
Klasör yüklü "isteğe bağlı" eklentileri içerir packadd
komuta.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 start
ve opt
kullanı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 helptags
komut hakkında bir nottur . Vim8 taahhüdü helptag
dokü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 ALL
tüm yardım etiketleri oluşturulur.
:helptags ALL
.
:helptag ALL
bir bakacağım ve ekleyeceğim, öneriniz için teşekkürler!
update
, eklentilerinize veya clean
onlara ( 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.
"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
@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.
pack/*/start
Tarafı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/start
veya ~/.config/nvim/pack/bar/start
kullanamazsınız ~/.config/nvim/pack/start
.
Git pack/*/start
dizin ve orada paketi klonlamak.
:scriptnames
her ş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
.:helptags ALL
tü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 tags
eklentinin 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.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.
package
özellik nihayet, modern eklenti yöneticileriyle rekabet etmemek için vimball'lara ve ilgili dinozorlara son vermeyi amaçlıyor. Daha belirsiz özelliklerepathogen
güvenmemeniz şartıyla, bu uygun bir alternatifpathogen
. Değiştirmeye teşebbüs etmez, demekVundle
. 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.