ตัวจัดการปลั๊กอิน Vim ที่เรียบง่าย
ดาวน์โหลด Plug.vim และวางไว้ในไดเร็กทอรี "autoload"
curl -fLo ~ /.vim/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
คุณสามารถทำให้กระบวนการเป็นแบบอัตโนมัติได้โดยใส่คำสั่งลงในไฟล์การกำหนดค่า Vim ตามที่แนะนำไว้ที่นี่
iwr - useb https: // raw.githubusercontent.com / junegunn / vim - plug / master / plug.vim |`
ni $HOME / vimfiles / autoload / plug.vim - Force
sh -c ' curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim '
curl -fLo ~ /.var/app/io.neovim.nvim/data/nvim/site/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
iwr - useb https: // raw.githubusercontent.com / junegunn / vim - plug / master / plug.vim |`
ni " $ ( @ ( $ env: XDG_DATA_HOME , $ env: LOCALAPPDATA )[ $null -eq $ env: XDG_DATA_HOME ] ) /nvim-data/site/autoload/plug.vim " - Force
เพิ่มส่วน vim-plug ให้กับ ~/.vimrc
ของคุณ (หรือ ~/.config/nvim/init.vim
สำหรับ Neovim)
call plug#begin()
Plug
call plug#end()
ตัวอย่างเช่น,
call plug#begin ()
" List your plugins here
Plug ' tpope/vim-sensible '
call plug#end ()
โหลดไฟล์ใหม่หรือรีสตาร์ท Vim จากนั้นคุณก็สามารถทำได้
:PlugInstall
เพื่อติดตั้งปลั๊กอิน:PlugUpdate
เพื่อติดตั้งหรืออัพเดตปลั๊กอิน:PlugDiff
เพื่อตรวจสอบการเปลี่ยนแปลงจากการอัพเดตครั้งล่าสุด:PlugClean
เพื่อลบปลั๊กอินที่ไม่อยู่ในรายการอีกต่อไป บันทึก
นั่นคือทั้งหมดที่คุณต้องรู้เพื่อเริ่มต้น เอกสารส่วนที่เหลือมีไว้สำหรับผู้ใช้ขั้นสูงที่ต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติและตัวเลือกต่างๆ
เคล็ดลับ
plug#end()
ดำเนินการ filetype plugin indent on
และ syntax enable
โดยอัตโนมัติ เราเชื่อว่านี่เป็นค่าเริ่มต้นที่ดีสำหรับผู้ใช้ส่วนใหญ่ แต่หากคุณไม่ต้องการให้มีพฤติกรรมเช่นนี้ คุณสามารถคืนค่าการตั้งค่าหลังการโทรได้
call plug#end ()
filetype indent off " Disable file-type-specific indentation
syntax off " Disable syntax highlighting
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงคุณสมบัติเพิ่มเติมของ vim-plug
call plug#begin ()
" The default plugin directory will be as follows:
" - Vim (Linux/macOS): '~/.vim/plugged'
" - Vim (Windows): '~/vimfiles/plugged'
" - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged'
" You can specify a custom plugin directory by passing it as the argument
" - e.g. `call plug#begin('~/.vim/plugged')`
" - Avoid using standard Vim directory names like 'plugin'
" Make sure you use single quotes
" Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ' junegunn/seoul256.vim '
" Any valid git URL is allowed
Plug ' https://github.com/junegunn/vim-easy-align.git '
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ' fatih/vim-go ' , { ' tag ' : ' * ' }
" Using a non-default branch
Plug ' neoclide/coc.nvim ' , { ' branch ' : ' release ' }
" Use 'dir' option to install plugin in a non-default directory
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' }
" Post-update hook: run a shell command after installing or updating the plugin
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' , ' do ' : ' ./install --all ' }
" Post-update hook can be a lambda expression
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
" If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ' nsf/gocode ' , { ' rtp ' : ' vim ' }
" On-demand loading: loaded when the specified command is executed
Plug ' preservim/nerdtree ' , { ' on ' : ' NERDTreeToggle ' }
" On-demand loading: loaded when a file with a specific file type is opened
Plug ' tpope/vim-fireplace ' , { ' for ' : ' clojure ' }
" Unmanaged plugin (manually installed and updated)
Plug ' ~/my-prototype-plugin '
" Call plug#end to update &runtimepath and initialize the plugin system.
" - It automatically executes `filetype plugin indent on` and `syntax enable`
call plug#end ()
" You can revert the settings after the call like so:
" filetype indent off " Disable file-type-specific indentation
" syntax off " Disable syntax highlighting
" Color schemes should be loaded after plug#end().
" We prepend it with 'silent!' to ignore errors when it's not yet installed.
silent ! colorscheme seoul256
ใน Neovim คุณสามารถเขียนการกำหนดค่าของคุณในไฟล์สคริปต์ Lua ชื่อ init.lua
รหัสต่อไปนี้เป็นสคริปต์ Lua เทียบเท่ากับตัวอย่างสคริปต์ Vim ด้านบน
local vim = vim
local Plug = vim . fn [ ' plug# ' ]
vim . call ( ' plug#begin ' )
-- Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ( ' junegunn/seoul256.vim ' )
-- Any valid git URL is allowed
Plug ( ' https://github.com/junegunn/vim-easy-align.git ' )
-- Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ( ' fatih/vim-go ' , { [ ' tag ' ] = ' * ' })
-- Using a non-default branch
Plug ( ' neoclide/coc.nvim ' , { [ ' branch ' ] = ' release ' })
-- Use 'dir' option to install plugin in a non-default directory
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' })
-- Post-update hook: run a shell command after installing or updating the plugin
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' , [ ' do ' ] = ' ./install --all ' })
-- Post-update hook can be a lambda expression
Plug ( ' junegunn/fzf ' , { [ ' do ' ] = function ()
vim . fn [ ' fzf#install ' ]()
end })
-- If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ( ' nsf/gocode ' , { [ ' rtp ' ] = ' vim ' })
-- On-demand loading: loaded when the specified command is executed
Plug ( ' preservim/nerdtree ' , { [ ' on ' ] = ' NERDTreeToggle ' })
-- On-demand loading: loaded when a file with a specific file type is opened
Plug ( ' tpope/vim-fireplace ' , { [ ' for ' ] = ' clojure ' })
-- Unmanaged plugin (manually installed and updated)
Plug ( ' ~/my-prototype-plugin ' )
vim . call ( ' plug#end ' )
-- Color schemes should be loaded after plug#end().
-- We prepend it with 'silent!' to ignore errors when it's not yet installed.
vim . cmd ( ' silent! colorscheme seoul256 ' )
สั่งการ | คำอธิบาย |
---|---|
PlugInstall [name ...] [#threads] | ติดตั้งปลั๊กอิน |
PlugUpdate [name ...] [#threads] | ติดตั้งหรืออัปเดตปลั๊กอิน |
PlugClean[!] | ลบปลั๊กอินที่ไม่แสดง (เวอร์ชันบางจะล้างโดยไม่ต้องแจ้งให้ทราบ) |
PlugUpgrade | อัปเกรด vim-plug เอง |
PlugStatus | ตรวจสอบสถานะของปลั๊กอิน |
PlugDiff | ตรวจสอบการเปลี่ยนแปลงจากการอัพเดตครั้งก่อนและการเปลี่ยนแปลงที่รอดำเนินการ |
PlugSnapshot[!] [output path] | สร้างสคริปต์สำหรับการกู้คืนสแน็ปช็อตปัจจุบันของปลั๊กอิน |
Plug
ตัวเลือก | คำอธิบาย |
---|---|
branch / tag / commit | Branch/tag/commit ของที่เก็บที่จะใช้ |
rtp | ไดเรกทอรีย่อยที่มีปลั๊กอิน Vim |
dir | ไดเร็กทอรีที่กำหนดเองสำหรับปลั๊กอิน |
as | ใช้ชื่ออื่นสำหรับปลั๊กอิน |
do | เบ็ดหลังการอัปเดต (สตริงหรือ funcref) |
on | การโหลดตามความต้องการ: คำสั่งหรือ -mappings |
for | การโหลดตามความต้องการ: ประเภทไฟล์ |
frozen | ห้ามลบและอย่าอัปเดตเว้นแต่จะระบุไว้อย่างชัดเจน |
ธง | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
g:plug_threads | 16 | จำนวนเธรดเริ่มต้นที่จะใช้ |
g:plug_timeout | 60 | จำกัดเวลาของแต่ละงานเป็นวินาที ( Ruby & Python ) |
g:plug_retries | 2 | จำนวนการลองใหม่ในกรณีที่หมดเวลา ( Ruby & Python ) |
g:plug_shallow | 1 | ใช้โคลนตื้น |
g:plug_window | -tabnew | คำสั่งให้เปิดหน้าต่างปลั๊ก |
g:plug_pwindow | vertical rightbelow new | คำสั่งเพื่อเปิดหน้าต่างแสดงตัวอย่างใน PlugDiff |
g:plug_url_format | https://git::@github.com/%s.git | รูปแบบ printf เพื่อสร้าง URL repo (ใช้กับคำสั่ง Plug ที่ตามมาเท่านั้น) |
D
- PlugDiff
S
- PlugStatus
R
- ลองอัปเดตหรืองานการติดตั้งที่ล้มเหลวอีกครั้งU
- อัปเดตปลั๊กอินในช่วงที่เลือกq
- ยกเลิกงานที่กำลังทำงานอยู่หรือปิดหน้าต่าง:PlugStatus
L
- โหลดปลั๊กอิน:PlugDiff
X
- คืนค่าการอัปเดต มีปลั๊กอินบางตัวที่ต้องมีขั้นตอนเพิ่มเติมหลังการติดตั้งหรืออัปเดต ในกรณีนั้น ให้ใช้อ็อพชัน do
เพื่ออธิบายงานที่จะดำเนินการ
Plug ' Shougo/vimproc.vim ' , { ' do ' : ' make ' }
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : ' ./install.py ' }
หากค่าขึ้นต้นด้วย :
ระบบจะรับรู้ว่าเป็นคำสั่ง Vim
Plug ' fatih/vim-go ' , { ' do ' : ' :GoInstallBinaries ' }
หากต้องการเรียกใช้ฟังก์ชัน Vim คุณสามารถส่งนิพจน์แลมบ์ดาได้ดังนี้:
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
หากคุณต้องการการควบคุมเพิ่มเติม คุณสามารถส่งการอ้างอิงไปยังฟังก์ชัน Vim ที่รับอาร์กิวเมนต์พจนานุกรมได้
function ! BuildYCM (info)
" info is a dictionary with 3 fields
" - name: name of the plugin
" - status: 'installed', 'updated', or 'unchanged'
" - force: set on PlugInstall! or PlugUpdate!
if a: info .status == ' installed ' || a: info .force
! ./install. py
endif
endfunction
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : function ( ' BuildYCM ' ) }
เบ็ดหลังการอัปเดตจะถูกดำเนินการภายในไดเร็กทอรีของปลั๊กอินและจะทำงานเมื่อพื้นที่เก็บข้อมูลมีการเปลี่ยนแปลงเท่านั้น แต่คุณสามารถบังคับให้มันทำงานโดยไม่มีเงื่อนไขด้วยคำสั่ง Bang-version: PlugInstall!
และ PlugUpdate!
-
เคล็ดลับ
ตรวจสอบให้แน่ใจว่าได้หลีกเลี่ยง BAR และเครื่องหมายคำพูดคู่เมื่อคุณเขียนตัวเลือก do
ในบรรทัด เนื่องจากระบบรับรู้ผิดพลาดว่าเป็นตัวแยกคำสั่งหรือจุดเริ่มต้นของความคิดเห็นต่อท้าย
Plug ' junegunn/fzf ' , { ' do ' : ' yes | ./install ' }
แต่คุณสามารถหลีกเลี่ยงการหลบหนีได้หากคุณแยกข้อกำหนดอินไลน์โดยใช้ตัวแปร (หรือนิพจน์สคริปต์ Vim ใด ๆ ) ดังนี้:
let g: fzf_install = ' yes | ./install '
Plug ' junegunn/fzf ' , { ' do ' : g: fzf_install }
PlugInstall!
และ PlugUpdate!
โปรแกรมติดตั้งใช้ขั้นตอนต่อไปนี้เมื่อติดตั้ง/อัพเดตปลั๊กอิน:
git clone
หรือ git fetch
จากต้นกำเนิดgit merge
Remote Branch คำสั่งด้วย !
ส่วนต่อท้ายช่วยให้แน่ใจว่าทุกขั้นตอนทำงานโดยไม่มีเงื่อนไข
" NERD tree will be loaded on the first invocation of NERDTreeToggle command
Plug ' preservim/nerdtree ' , { ' on ' : ' NERDTreeToggle ' }
" Multiple commands
Plug ' junegunn/vim-github-dashboard ' , { ' on ' : [ ' GHDashboard ' , ' GHActivity ' ] }
" Loaded when clojure file is opened
Plug ' tpope/vim-fireplace ' , { ' for ' : ' clojure ' }
" Multiple file types
Plug ' kovisoft/paredit ' , { ' for ' : [ ' clojure ' , ' scheme ' ] }
" On-demand loading on both conditions
Plug ' junegunn/vader.vim ' , { ' on ' : ' Vader ' , ' for ' : ' vader ' }
" Code to execute when the plugin is lazily loaded on demand
Plug ' junegunn/goyo.vim ' , { ' for ' : ' markdown ' }
autocmd ! User goyo. vim echom ' Goyo is now loaded! '
บันทึก
คุณอาจจะไม่จำเป็นต้อง
ปลั๊กอิน Vim ที่ใช้งานอย่างถูกต้องควรโหลดอย่างเกียจคร้านโดยไม่ได้รับความช่วยเหลือจากตัวจัดการปลั๊กอิน ( :help autoload
) มีบางกรณีที่ตัวเลือกเหล่านี้สมเหตุสมผลจริงๆ การทำให้ปลั๊กอินโหลดเร็วขึ้นเป็นความรับผิดชอบของผู้พัฒนาปลั๊กอิน ไม่ใช่ผู้ใช้ หากคุณพบปลั๊กอินที่ใช้เวลาโหลดนานเกินไป ให้ลองเปิดปัญหาในตัวติดตามปัญหาของปลั๊กอิน
ผมขอให้มุมมองแก่คุณ เวลาที่ใช้ในการโหลดปลั๊กอินมักจะน้อยกว่า 2 หรือ 3 มิลลิวินาทีบนคอมพิวเตอร์สมัยใหม่ ดังนั้นหากคุณใช้ปลั๊กอินจำนวนมาก คุณไม่น่าจะประหยัดเวลาได้มากกว่า 50ms หากคุณใช้เวลาหนึ่งชั่วโมงอย่างระมัดระวังในการตั้งค่าตัวเลือกเพื่อลด 50ms คุณจะต้องเริ่ม Vim 72,000 ครั้งเพื่อที่จะคุ้มทุน คุณควรถามตัวเองว่านี่เป็นการลงทุนเวลาที่ดีหรือไม่
ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขปัญหาที่ถูกต้องโดยการแบ่งเวลาเริ่มต้นของ Vim โดยใช้ --startuptime
vim --startuptime /tmp/log
การโหลดตามความต้องการควรใช้เป็นทางเลือกสุดท้ายเท่านั้น โดยพื้นฐานแล้วมันเป็นวิธีแก้ปัญหาแบบแฮ็กและไม่รับประกันว่าจะได้ผลเสมอไป
เคล็ดลับ
คุณสามารถส่งรายการว่างไป on
หรือ for
ตัวเลือกในการปิดใช้งานการโหลดปลั๊กอิน คุณสามารถโหลดปลั๊กอินได้ด้วยตนเองโดยใช้ฟังก์ชัน plug#load(NAMES...)
ดูhttps://github.com/junegunn/vim-plug/wiki/tips#loading-plugins-manually
เอ็มไอที