Vim 8 ได้รับการปล่อยตัวในวันนี้และบันทึกประจำรุ่นระบุถึงคุณสมบัติ "แพ็คเกจ" ใหม่ มันคืออะไรและฉันควรใช้มันอย่างไร?
สิ่งสำคัญที่สุดคือมันจะแทนที่ตัวจัดการปลั๊กอินเก่าที่ดีหรือไม่?
Vim 8 ได้รับการปล่อยตัวในวันนี้และบันทึกประจำรุ่นระบุถึงคุณสมบัติ "แพ็คเกจ" ใหม่ มันคืออะไรและฉันควรใช้มันอย่างไร?
สิ่งสำคัญที่สุดคือมันจะแทนที่ตัวจัดการปลั๊กอินเก่าที่ดีหรือไม่?
คำตอบ:
แรกของทุกเอกสารที่เกี่ยวข้องที่สามารถพบได้กับ:h packages
ในรุ่น Vim8 เรียบเรียงใหม่และนี่บน Github
สิ่งสำคัญอันดับแรกคือเกี่ยวกับคำศัพท์: ใน Vim8 แพ็คเกจมีการกำหนดดังนี้:
แพ็คเกจ Vim เป็นไดเรกทอรีที่มีปลั๊กอินหนึ่งรายการขึ้นไป
ซึ่งหมายความว่าผู้จัดการแพ็คเกจใหม่ถูกสร้างขึ้นเพื่อช่วยให้ผู้ใช้จัดการปลั๊กอินทั้งหมดของพวกเขาในการจัดเก็บเดียวกัน เอกสารแสดงข้อดีดังต่อไปนี้:
สามารถดาวน์โหลดแพคเกจเป็นไฟล์เก็บถาวรและคลายในไดเรกทอรีของตัวเอง ดังนั้นไฟล์จะไม่รวมกับไฟล์ของปลั๊กอินอื่น ๆ ทำให้ง่ายต่อการอัพเดทและลบ
แพคเกจสามารถเป็นคอมไพล์, Mercurial, ฯลฯ พื้นที่เก็บข้อมูล ทำให้ง่ายต่อการอัพเดท
แพคเกจสามารถมีหลายปลั๊กอินที่ขึ้นอยู่กับแต่ละอื่น ๆ
แพ็คเกจสามารถมีปลั๊กอินที่โหลดโดยอัตโนมัติเมื่อเริ่มต้นและปลั๊กอินที่โหลดเมื่อจำเป็น
: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
เมื่อไฟล์เหล่านี้อยู่ในสถานที่ที่เหมาะสมในการเปิดเป็นกลุ่มจะโหลดปลั๊กอินในstart
และทำให้คนที่อยู่ในที่สามารถใช้ได้กับopt
:packadd
ตอนนี้คุณสมบัตินี้สามารถแทนที่ตัวจัดการปลั๊กอินที่มีอยู่ได้หรือไม่?
คำเตือน:ส่วนนี้อาจจะดื้อดึงเล็กน้อย
ฉันคิดว่าวิธีการของตัวจัดการแพ็กเกจใหม่นี้แตกต่างจากตัวจัดการปลั๊กอินที่เราคุ้นเคยเพราะมันถูกสร้างขึ้นเพื่อจัดการไฟล์เก็บถาวรหนึ่งไฟล์ (หรือหลายไฟล์) ที่มีปลั๊กอินบางตัว
ผู้จัดการแพ็คเกจไม่ได้ให้ฟีเจอร์ในการอัปเดตปลั๊กอินของคุณทีละรายการเพื่อดึงข้อมูลเหล่านั้นโดยอัตโนมัติจากที่อยู่ Github หรือเพื่อเลือกปลั๊กอินที่คุณต้องการเปิด / ปิดใช้งาน
ฉันไม่แน่ใจว่าจะสะดวกจริง ๆ ที่จะใช้งานนอกกรอบ (โดยเฉพาะอย่างยิ่งเนื่องจากการจัดการที่เก็บซ้อนการควบคุมเวอร์ชันอาจเป็นงานที่เจ็บปวด) แต่บางทีนี่เป็นโอกาสที่จะทำให้ผู้จัดการปลั๊กอินมีประสิทธิภาพมากขึ้นหรือไม่
ตอนนี้ก็เป็นไปได้ที่จะจินตนาการถึงการย้ายปลั๊กอินที่มีอยู่เพื่อนำโครงสร้างที่ต้องการโดยตัวจัดการแพคเกจและจัดการโดยตรงจากระบบไฟล์ บางทีเสื้อคลุมบางส่วนอาจถูกสร้างขึ้นเพื่อใช้คุณสมบัติใหม่นี้
แก้ไขตามที่แนะนำโดย @Sato Katsura นี่คือหมายเหตุเกี่ยวกับhelptags
คำสั่ง Vim8 คอมมิชชันที่แนะนำสองบรรทัดใน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 ในการจัดเก็บถาวรของผู้ใช้ง่ายขึ้น ด้วยคำสั่งเดียว:helptags ALL
helptags ทั้งหมดจะถูกสร้างขึ้น
:helptags ALL
คุณอาจต้องการที่จะเพิ่มหมายเหตุเกี่ยวกับ
:helptag ALL
ฉันจะดูและเพิ่มขอบคุณสำหรับคำแนะนำ!
update
ปลั๊กอินของคุณหรือclean
พวกมัน (ลบปลั๊กอินที่ไม่ได้ใช้) สำหรับคะแนนโบนัสมันยังใช้คุณสมบัติการควบคุมงานใหม่เพื่อทำการอัพเดตหลายแบบพร้อมกัน ฉันคิดว่ามันเป็นสัญญาที่ดีเพราะมันช่วยปรับปรุงแพ็คเกจในตัวด้วย UX ที่ดีกว่า
เพื่อขยายใน "มันสามารถแทนที่ผู้จัดการปลั๊กอิน"
ฉันเคยใช้ Vundle ซึ่งยอดเยี่ยม แต่ตอนนี้แทนที่ด้วยทุบตี 18 บรรทัดหรือมากกว่านั้น
ฉันพบว่ามีประโยชน์ในการใช้โฟลเดอร์ย่อยในไดเรกทอรี pack เพื่อจัดกลุ่มปลั๊กอินที่เกี่ยวข้อง เช่น "ไวยากรณ์" หรือ "ทับทิม"
ตัวอย่างทุบตีที่เกี่ยวข้องอยู่ด้านล่าง วางไฟล์และเรียกใช้
การอภิปรายเพิ่มเติมเกี่ยวกับหัวข้อที่: 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
ไฟล์ในไดเรกทอรี doc ของปลั๊กอิน หากคุณลบปลั๊กอินออกจากไดเรกทอรีไฟล์แท็กจะหายไปและกลุ่มจะไม่พบไฟล์ช่วยเหลือดังนั้นคุณไม่จำเป็นต้องถอนการติดตั้งไฟล์ doc ด้วยตนเองรูปแบบใหม่นั้นสามารถเทียบเท่ากับ Pathogen ได้ดังนั้นยังมีพื้นที่สำหรับผู้จัดการที่สามารถดาวน์โหลดปลั๊กอินที่คุณต้องการ มีผู้จัดการปลั๊กอินใหม่ไม่กี่คนที่ใช้ประโยชน์จากแพ็ครูปแบบใหม่นี้ แต่ฉันยังคงทำVire อยู่เพราะพวกเขาไม่ต้องกังวลกับการจัดการvimrc
กับคุณ หากคุณมีเครื่องหลายเครื่องและต้องการกำหนดค่าเดียวกัน Vire ทำให้มันง่ายมาก
package
ฟีเจอร์นี้ก็มีจุดมุ่งหมายที่จะทำให้ vimballs และไดโนเสาร์ที่เกี่ยวข้องไม่สามารถแข่งขันกับผู้จัดการปลั๊กอินที่ทันสมัยได้ มันเป็นสิ่งทดแทนที่ใช้pathogen
งานได้โดยที่คุณไม่ต้องพึ่งพาpathogen
คุณสมบัติที่คลุมเครือมากขึ้นVundle
มันทำให้ความพยายามที่จะเข้ามาแทนที่ไม่มีการพูด แนวคิดของแพ็คเกจเป็นชุดของปลั๊กอินนั้นคำนึงถึงและอาจเป็นประโยชน์ แต่ฉันกลัวว่าจะไม่มีใครใช้เพราะผู้จัดการปลั๊กอินที่ทันสมัยไม่รองรับมัน และผู้จัดการปลั๊กอินจะไม่สนับสนุนเพราะไม่มีใครใช้มัน มันเป็นปัญหาของไก่และไข่