ฉันจะติดตั้งปลั๊กอินใน Vim / vi ได้อย่างไร


96

ฉันจะติดตั้งปลั๊กอินใน Vim ได้อย่างไร?

มันเป็นเรื่องสำคัญ:

  • ไม่ว่าฉันจะใช้ vi หรือ Vim?
  • ไม่ว่าฉันจะใช้ gVim?
  • Vim รุ่นใดที่ฉันกำลังใช้อยู่
  • ระบบปฏิบัติการของฉันคืออะไร

คำตอบ:


65

ในการติดตั้งปลั๊กอินเราจำเป็นต้องรู้ว่ามันมาในรูปแบบใดมันอาจจะเป็น:

.vimไฟล์เดียวควรถูกวางไว้ใน.vim/pluginไดเรกทอรี

ไฟล์ Vimball สามารถติดตั้งได้:source %โดยการเปิดในกลุ่มและทำงาน

ชุดของไฟล์ในรูปแบบไดเรกทอรีมาตรฐานสามารถติดตั้งได้ทั้งโดยการคัดลอกพวกเขาไป.vimหรือใช้แพคเกจผู้จัดการปลั๊กอิน

ปลั๊กอินอาจขึ้นอยู่กับคุณสมบัติบางอย่าง ดังนั้น:

  • อาจสำคัญหากคุณใช้ Vi หรือ Vim
  • อาจสำคัญว่าคุณกำลังใช้ gVim หรือไม่ (โดยทั่วไป gVim จะมีคุณสมบัติเพิ่มเติมที่เปิดใช้งานในเวลารวบรวมกว่า Vim ในการแจกจ่ายแบบเดียวกัน)
  • มันอาจมีความสำคัญว่าคุณกำลังใช้ Vim เวอร์ชันใดเนื่องจากอาจมีการเพิ่มฟีเจอร์หลังจาก Vim เวอร์ชันของคุณ
  • มันอาจสำคัญว่าคุณใช้ระบบปฏิบัติการใดอยู่โดยเฉพาะถ้าปลั๊กอินเรียกใช้ในคำสั่งภายนอก

สำหรับปลั๊กอินส่วนใหญ่แม้ว่ามันอาจไม่สำคัญ


9
มันจะสำคัญถ้าคุณใช้ Vi - แนวคิดของปลั๊กอินไม่มีอยู่สำหรับ Vi แน่นอนว่าการพิมพ์viลงบนกล่องที่ทันสมัยอาจจะเพิ่งเปิดตัวvimพร้อมกับปิดคุณสมบัติบางอย่าง ฉันสงสัยว่าหลายคนมีโอกาสเข้าถึงVi จริงในปัจจุบัน
tommcdo

37

เป็นกลุ่มปลั๊ก

ฉันชอบใช้ตัวจัดการปลั๊กอินvim-plug

ปัญหาของการติดตั้งปลั๊กอินด้วยตนเองคือการลบปลั๊กอินนั้นค่อนข้างยาก คุณมักจะมีไฟล์หลายไฟล์ในไดเรกทอรีที่แตกต่างกันคุณจะต้องค้นหาด้วยตนเอง & ลบมัน

ปัญหาการอัพเกรดนั้นยากเหมือนกัน: จะเกิดอะไรขึ้นถ้าautoload/old-name.vimเปลี่ยนชื่อเป็นautoload/new-name.vim? ตอนนี้คุณมีทั้งปลั๊กอินรุ่นเก่าและใหม่

vim-plugแก้ปัญหานี้โดยการจัดเก็บปลั๊กอินแต่ละตัวในไดเรกทอรีของตัวเอง นอกจากนี้ยังมีคำสั่งให้ติดตั้ง / ลบปลั๊กอินได้ง่ายคุณจึงไม่ต้องยุ่งกับการคลายการบีบอัดปลั๊กอินและสิ่งที่คล้ายกัน

ข้อได้เปรียบที่สำคัญของ vim-plug เหนือ Pathogenคือ vim-plug ช่วยให้คุณสามารถติดตั้งและลบปลั๊กอินได้ง่ายขึ้น สิ่งที่ Pathogen ทำคืออนุญาตให้ปลั๊กอินแต่ละตัวอยู่ในไดเรกทอรีที่มีอยู่แยกต่างหาก

vim-plug อาศัยgit ; สำหรับ MS Windows คุณต้องการ msysgit

คุณสามารถกำหนดปลั๊กอินใน vimrc ของคุณดังนี้:

call plug#begin('~/.vim/plugged')

" For MS Windows, this is probably better:
"call plug#begin('~/vimfiles/plugged')

Plug 'embear/vim-localvimrc'
Plug 'kchmck/vim-coffee-script'
" ... etc

call plug#end()

จากนั้นรีสตาร์ท Vim จากนั้นติดตั้งปลั๊กอินด้วย:

:PlugInstall

สิ่งนี้จะใส่ปลั๊กอินใน~/.vim/pluggedหรือ$HOME\vimfiles\pluggedสำหรับ MS Windows

คุณสามารถเพิ่ม ตัวอย่างนี้จากคำถามที่พบบ่อยในไฟล์ vimrc ของคุณก่อนการplug#begin()โทร:

if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall
endif

โปรดทราบว่าคุณต้องการcurlให้สิ่งนี้ทำงาน มีให้ใช้งานบน Linux และ OSX เกือบทุกครั้ง แต่ไม่ใช่ใน MS Windows ดังนั้นเคล็ดลับนี้จะไม่ทำงานที่นั่น ...

หากต้องการลบปลั๊กอินให้ลบออกจากไฟล์ vimrc และรัน:

:PlugClean

โปรดทราบว่า vim-plug ไม่รองรับการติดตั้งสคริปต์จากเว็บไซต์สคริปต์ Vim แต่สคริปต์เหล่านั้นสะท้อนอยู่บน GitHubดังนั้นจึงไม่จำเป็นต้องทำเช่นนั้น

นอกจากนี้ยังมีข้อดีเพิ่มเติมบางประการเช่นการปรับปรุงปลั๊กอินให้ง่ายขึ้นและการโหลดตามความต้องการเพื่อประสิทธิภาพที่ดีขึ้น คุณสามารถคัดลอก vimrc ของคุณไปยังคอมพิวเตอร์เครื่องอื่นเรียกใช้:PlugInstallและมีปลั๊กอินทั้งหมดของคุณได้อย่างง่ายดาย

หมายเหตุมีตัวจัดการปลั๊กอินเพิ่มเติม vim-plugผมก็จะใช้ ดูเพิ่มเติม: อะไรคือความแตกต่างระหว่างผู้จัดการแพ็คเกจที่เป็นกลุ่ม?


1
หนึ่งในข้อดีที่สำคัญที่สุด vim-plug มีมากกว่าตัวอื่น ๆ คือการติดตั้ง / ปรับปรุงแบบขนานของปลั๊กอิน
r3bo0t

"สคริปต์เหล่านั้นสะท้อนอยู่บน GitHub ดังนั้นจึงไม่จำเป็นต้องทำเช่นนั้น" น่าเสียดายที่มีดโกนหยุดทำงานมานานแล้ว github.com/vim-scraper/vim-scraper/issues/…
Bluu

@Bluu ใช่ฉันติดต่อผู้ดูแลของปีที่แล้ว; มีบิตทางเทคนิคบางอย่างที่จำเป็นต้องอัปเดตและไม่มีใครก้าวไปที่จะกล่าวว่าการอัปเดต: - / มันยังคงมีประโยชน์อยู่บ้างเนื่องจากสคริปต์จำนวนมากไม่ได้รับการอัปเดตทั้งหมดบ่อยครั้ง
Martin Tournoij

25

เชื้อโรค

Pathogen เป็นตัวจัดการเส้นทางรันไทม์ซึ่งโหลดปลั๊กอินภายใน Vim มันทำให้การติดตั้งปลั๊กอินง่าย นี่คือวิธีการ:

หมายเหตุ: หากคุณกำลังใช้ Windows แทนที่ด้วย~/.vim$HOME\vimfiles

  1. คัดลอกไปpathogen.vim~/.vim/autoload/pathogen.vim

  2. สร้าง~/.vim/bundleไดเรกทอรีถ้าไม่มีอยู่แล้ว

  3. เพิ่มบรรทัดต่อไปนี้ไปยังจุดเริ่มต้นของคุณ.vimrc:

    execute pathogen#infect()
    
  4. คุณทำเสร็จแล้ว! เมื่อคุณต้องการเพิ่มปลั๊กอินเพียงแค่คัดลอกไดเรกทอรีของปลั๊กอินทั้งหมดไปที่~/.vim/bundleนั่นหรือgit cloneไปที่นั่น ตัวอย่างเช่น:

    cd ~/.vim/bundle
    git clone https://github.com/tpope/vim-surround
    
  5. * Caveat: หากปลั๊กอินของคุณมาในรูปแบบของ.vimไฟล์มันจะไม่ทำงานกับ Pathogen คัดลอกไปที่~/.vim/pluginแทน (คุณอาจต้องสร้างไดเรกทอรีนี้หากไม่มีอยู่)


5
หมายเหตุ: เชื้อโรคไม่ใช่ผู้จัดการปลั๊กอิน
romainl

หรือgit submodule add(แทนgit clone) หากการกำหนดค่า vim ของคุณเป็นส่วนหนึ่งของโครงการคอมไพล์ของคุณเอง
Martin York

@ ฉีดแล้วมันคืออะไร?
RodrikTheReader

3
มันเป็นผู้จัดการ runtimepath ในขณะที่มันจัดการruntimepathตัวเลือกและนั่นคือทั้งหมด มันไม่ได้เกี่ยวข้องกับการอัปเดตเพิ่มดึงเอาปลั๊กอินออกเลย
romainl

1
ยังเห็นดีเยี่ยม @romainl 's สรุปสาระสำคัญเกี่ยวกับการใช้เชื้อโรค
icc97

23

เป็นกลุ่ม 8+ / Neovim

เวอร์ชัน 8 นำเสนอกลไกแพ็กเกจใหม่ที่แทนที่ความต้องการตัวจัดการปลั๊กอินที่มีอยู่ส่วนใหญ่ (pathogen, vim-plug, vundle และอื่น ๆ ) ในขณะที่เขียน (2017)

จากเอกสาร :

แพ็คเกจ Vim เป็นไดเรกทอรีที่มีปลั๊กอินหนึ่งรายการขึ้นไป

ไดเรกทอรีแพ็คเกจประกอบด้วยไดเรกทอรีย่อยสองไดเรกทอรี:

  • start/ - มีปลั๊กอินที่จะถูกโหลดโดยอัตโนมัติ
  • opt/ - มีปลั๊กอินที่โหลดตามต้องการ :packadd

อาจดูเหมือนซับซ้อนเล็กน้อย แต่ในทางปฏิบัติสิ่งที่คุณต้องทำคือเพิ่มปลั๊กอินของคุณที่นี่ :

                 ↓ package name
~/ .vim / pack / bundle / start / some-plugin
          ↑ packages dir          ↑ plugin dir

บน Windows : ใช้~\vimfiles\pack\แทน~/.vim/pack/

ตามแบบแผนเราได้ใช้ชื่อแพ็คเกจ "มัด" เป็นไดเรกทอรีที่จะมีปลั๊กอินทั้งหมดของเรา คุณสามารถใช้ชื่อใดก็ได้ที่คุณต้องการและคุณยังสามารถวางปลั๊กอินของคุณในไดเรกทอรีแพคเกจแยกต่างหากหากคุณต้องการ

ตัวอย่าง: การติดตั้งsensible.vim

mkdir -p ~/.vim/pack/bundle/start
cd ~/.vim/pack/bundle/start
git clone https://github.com/tpope/vim-sensible.git

บน Windows : ใช้~\vimfiles\pack\แทน~/.vim/pack/

ครั้งต่อไปที่คุณเริ่มเป็นกลุ่มปลั๊กอินจะโหลดโดยอัตโนมัติ


3
หากมีใคร.vimอยู่ภายใต้การควบคุมเวอร์ชันคุณควรติดตั้งปลั๊กอินด้วย submodules ของ git ดูshapeshed.com/vim-packages/#adding-a-package
Arch Stanton

หากมีคำตอบตามเวลานี่จะเป็นคำตอบที่ยอมรับในปัจจุบัน ณ วันนี้
Amin NAIRI

12

อย่าให้เราลืมสิ่งที่ยิ่งใหญ่ & ยิ่งใหญ่Vundle !

Vundle เป็นผู้จัดการปลั๊กอินที่สมบูรณ์พร้อมฟังก์ชั่นสำหรับ:

  • ค้นหาปลั๊กอิน (โดยใช้:PluginSearch)
  • การติดตั้งปลั๊กอิน (โดยใช้:PluginInstall)
  • การอัปเดตปลั๊กอิน (โดยใช้:PluginUpdate)
  • การจัดการเส้นทางโหลดปลั๊กอินใน. vimrc (เพียงคอมเม้นท์รายการปลั๊กอินที่คุณไม่ต้องการโหลด)
  • การลบปลั๊กอินที่คุณไม่ต้องการ (ใช้:PluginClean)

อย่างที่คุณเห็นมันเป็นเหมือนตัวจัดการ vim-plug ที่ Carpetsmoker พูดถึง ฉันไม่รู้ว่าอันไหนมาก่อน แต่ API ของพวกเขาดูคล้ายกับฉันมากเช่นเดียวกับกระบวนการตั้งค่า


สิ่งที่ดีเกี่ยวกับ Vundle คล้ายกับ vim-plug คุณสามารถจัดเก็บปลั๊กอินทั้งหมดของคุณ.vimrcได้ดังนั้นเมื่อติดตั้งบนเซิร์ฟเวอร์ใหม่สิ่งที่คุณต้องมีคือการติดตั้ง Vundle + .vimrcเพื่อติดตั้งทุกอย่าง นอกจากนี้คุณสามารถแสดงความคิดเห็นปลั๊กอินของคุณและ 'ทำความสะอาด' แต่สามารถแสดงความคิดเห็นได้ในอีกไม่กี่เดือนหรือหลายปีต่อมาเมื่อคุณลืมชื่อมานาน
icc97

บวกฉันชอบ Vundle เพราะมันค่อนข้างเป็นมิตรกับการเริ่มต้น มันให้วิธีเดียวในการทำสิ่งต่าง ๆ และทำงานในลักษณะเดียวกันกับ Sublime Text
icc97

1

ส่วนใหญ่ปลั๊กอินของคุณจะเป็นไฟล์. vim ไฟล์เดียว

หากเป็นกรณีนี้ฉันค้นหาความช่วยเหลือและทดลองและคิดหาสิ่งต่อไปนี้ จากภายในเป็นกลุ่ม (โหมดคำสั่ง) พิมพ์:

:set runtimepath

สิ่งนี้จะแสดงชุดไดเรกทอรี บางไดเรกทอรีเหล่านี้จะมีpluginไดเรกทอรีย่อย การวางไฟล์. vim ใด ๆ ในหนึ่งในpluginไดเรกทอรีย่อยเหล่านี้จะถูกโหลดโดยอัตโนมัติเมื่อคุณเริ่มเรียกใช้จากที่ใดก็ได้

สำหรับฉันแล้วบน Ubuntu linux ฉันพบว่าใช้/usr/share/vim/vim74/pluginงานได้ดีสำหรับผู้ใช้ทุกคน คุณอาจต้องขออนุญาตรูทเพื่อคัดลอกไฟล์ไปที่นี่ (คำนำหน้าcpหรือmvคำสั่งด้วยsudo)


3
IMHO นี่ไม่ใช่วิธีปฏิบัติที่ดีที่สุด โปรดทราบว่าคุณมีvim74ซึ่งหมายความว่าเป็นรุ่นเฉพาะดังนั้นการอัพเกรดเป็น Vim 8.0 จะทำให้ปลั๊กอินนั้นหลวม วิธีที่พิสูจน์แล้วว่าต้องใช้การอัพเกรดมากกว่านี้/etc/vim/(สร้างหากไม่มีอยู่และเพิ่มเส้นทางนั้นruntimepathหากไม่สามารถใช้ได้/etc/vimrc)
grodzik

3
ในการเพิ่ม @grodzik ความคิดเห็น: Most likely, your plugin will be a single .vim fileฉันไม่เห็นด้วย ปลั๊กอินส่วนใหญ่มาพร้อมกับ.txtไฟล์ที่มีเอกสารและคุณต้องสร้างแท็กเพื่อรับเอกสารการทำงาน ยังมีปลั๊กอินจำนวนมากที่มาพร้อมกับautoloadไดเรกทอรี ฉันคิดว่าการใช้ตัวจัดการปลั๊กอินเป็นทางออกที่ดีกว่าการจัดการ runtimepath ของคุณด้วยตนเอง
statox

-1 /usr/share/vim/vimXXเป็นรันไทม์หุ้นและไม่ใช่สถานที่สำหรับการกำหนดค่าไซต์ / ปลั๊กอิน ควรกำหนดค่า / ปลั๊กอินของไซต์แทนตำแหน่งใด ๆ$VIMบนระบบนั้น (ดู:h vimfiles) โดยทั่วไปนี่เป็น/usr/share/vimกรณีสำหรับ Ubuntu และถือ symlink /etc/vimไว้ โดยทั่วไป/usr/local/เป็นสถานที่พฤตินัยสำหรับการตั้งค่าเว็บไซต์ภายนอกผู้จัดการแพคเกจ โปรดทราบว่า Neovim ใช้ประโยชน์จาก$XDG_(CONFIG|DATA)_DIRSและsiteไดเรกทอรีให้ค่าเริ่มต้นที่ดีกว่าออกจากกล่องสำหรับการกำหนดค่าเว็บไซต์
ZeroKnight

1

Vireใช้รูปแบบแพ็คล่าสุดเพื่อติดตั้งปลั๊กอินและรองรับ Vim และ Neovim คุณไม่จำเป็นต้องรู้ว่าจะมีอะไรเกิดขึ้น เพียงระบุ vimrc และ Vire จะดูแลส่วนที่เหลือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.