Manajer plugin Vim yang minimalis.
Unduh plug.vim dan letakkan di direktori "autoload".
curl -fLo ~ /.vim/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Anda dapat mengotomatiskan proses dengan memasukkan perintah ke file konfigurasi Vim Anda seperti yang disarankan di sini.
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
Tambahkan bagian vim-plug ke ~/.vimrc
Anda (atau ~/.config/nvim/init.vim
untuk Neovim)
call plug#begin()
Plug
call plug#end()
Misalnya,
call plug#begin ()
" List your plugins here
Plug ' tpope/vim-sensible '
call plug#end ()
Muat ulang file atau mulai ulang Vim, lalu Anda bisa,
:PlugInstall
untuk menginstal plugin:PlugUpdate
untuk menginstal atau memperbarui plugin:PlugDiff
untuk meninjau perubahan dari pembaruan terakhir:PlugClean
untuk menghapus plugin yang tidak lagi ada dalam daftar Catatan
Pada dasarnya hanya itu yang perlu Anda ketahui untuk memulai. Dokumen selanjutnya ditujukan untuk pengguna tingkat lanjut yang ingin mengetahui lebih banyak tentang fitur dan opsi.
Tip
plug#end()
secara otomatis mengeksekusi filetype plugin indent on
dan syntax enable
. Kami percaya ini adalah standar yang baik untuk sebagian besar pengguna, namun jika Anda tidak menginginkan perilaku ini, Anda dapat mengembalikan pengaturan setelah panggilan.
call plug#end ()
filetype indent off " Disable file-type-specific indentation
syntax off " Disable syntax highlighting
Contoh berikut menunjukkan fitur tambahan 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
Di Neovim, Anda dapat menulis konfigurasi Anda dalam file skrip Lua bernama init.lua
. Kode berikut adalah skrip Lua yang setara dengan contoh skrip Vim di atas.
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 ' )
Memerintah | Keterangan |
---|---|
PlugInstall [name ...] [#threads] | Instal plugin |
PlugUpdate [name ...] [#threads] | Instal atau perbarui plugin |
PlugClean[!] | Hapus plugin yang tidak terdaftar (versi bang akan bersih tanpa diminta) |
PlugUpgrade | Tingkatkan vim-plug itu sendiri |
PlugStatus | Periksa status plugin |
PlugDiff | Periksa perubahan dari pembaruan sebelumnya dan perubahan yang tertunda |
PlugSnapshot[!] [output path] | Hasilkan skrip untuk memulihkan snapshot plugin saat ini |
Plug
Pilihan | Keterangan |
---|---|
branch / tag / commit | Cabang/tag/komit repositori yang akan digunakan |
rtp | Subdirektori yang berisi plugin Vim |
dir | Direktori khusus untuk plugin |
as | Gunakan nama yang berbeda untuk plugin |
do | Kait pasca-pembaruan (string atau funcref) |
on | Pemuatan sesuai permintaan: Perintah atau -mappings |
for | Pemuatan sesuai permintaan: Jenis file |
frozen | Jangan menghapus atau memperbarui kecuali ditentukan secara eksplisit |
Bendera | Bawaan | Keterangan |
---|---|---|
g:plug_threads | 16 | Jumlah thread default yang akan digunakan |
g:plug_timeout | 60 | Batas waktu setiap tugas dalam hitungan detik ( Ruby & Python ) |
g:plug_retries | 2 | Jumlah percobaan ulang jika batas waktu habis ( Ruby & Python ) |
g:plug_shallow | 1 | Gunakan klon dangkal |
g:plug_window | -tabnew | Perintah untuk membuka jendela plug |
g:plug_pwindow | vertical rightbelow new | Perintah untuk membuka jendela pratinjau di PlugDiff |
g:plug_url_format | https://git::@github.com/%s.git | format printf untuk membuat URL repo (Hanya berlaku untuk perintah Plug berikutnya) |
D
- PlugDiff
S
- PlugStatus
R
- Coba lagi pembaruan atau tugas instalasi yang gagalU
- Perbarui plugin dalam rentang yang dipilihq
- Membatalkan tugas yang sedang berjalan atau menutup jendela:PlugStatus
L
- Muat plugin:PlugDiff
X
- Kembalikan pembaruan Ada beberapa plugin yang memerlukan langkah tambahan setelah instalasi atau pembaruan. Dalam hal ini, gunakan opsi do
untuk menjelaskan tugas yang akan dilakukan.
Plug ' Shougo/vimproc.vim ' , { ' do ' : ' make ' }
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : ' ./install.py ' }
Jika nilainya dimulai dengan :
, maka akan dikenali sebagai perintah Vim.
Plug ' fatih/vim-go ' , { ' do ' : ' :GoInstallBinaries ' }
Untuk memanggil fungsi Vim, Anda dapat meneruskan ekspresi lambda seperti:
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
Jika Anda memerlukan lebih banyak kontrol, Anda bisa meneruskan referensi ke fungsi Vim yang menggunakan argumen kamus.
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 ' ) }
Hook pasca-pembaruan dieksekusi di dalam direktori plugin dan hanya dijalankan ketika repositori telah berubah, tetapi Anda dapat memaksanya untuk berjalan tanpa syarat dengan perintah versi bang: PlugInstall!
dan PlugUpdate!
.
Tip
Pastikan untuk menghindari BAR dan tanda kutip ganda saat Anda menulis opsi do
sebaris karena keduanya secara keliru dikenali sebagai pemisah perintah atau awal dari komentar tambahan.
Plug ' junegunn/fzf ' , { ' do ' : ' yes | ./install ' }
Namun Anda dapat menghindari pelolosan jika Anda mengekstrak spesifikasi inline menggunakan variabel (atau ekspresi skrip Vim apa pun) sebagai berikut:
let g: fzf_install = ' yes | ./install '
Plug ' junegunn/fzf ' , { ' do ' : g: fzf_install }
PlugInstall!
dan PlugUpdate!
Pemasang mengambil langkah-langkah berikut saat memasang/memperbarui plugin:
git clone
atau git fetch
dari asalnyagit merge
cabang jarak jauh Perintah dengan !
akhiran memastikan bahwa semua langkah dijalankan tanpa syarat.
" 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! '
Catatan
Anda mungkin tidak perlu melakukannya.
Plugin Vim yang diterapkan dengan benar seharusnya memuat dengan lambat tanpa bantuan apa pun dari pengelola plugin ( :help autoload
). Jadi, ada beberapa kasus di mana opsi ini benar-benar masuk akal. Membuat plugin memuat lebih cepat adalah tanggung jawab pengembang plugin, bukan pengguna. Jika Anda menemukan plugin yang memuat terlalu lama, pertimbangkan untuk membuka masalah di pelacak masalah plugin.
Izinkan saya memberi Anda perspektif. Waktu yang diperlukan untuk memuat plugin biasanya kurang dari 2 atau 3 ms di komputer modern. Jadi, kecuali Anda menggunakan plugin dalam jumlah yang sangat besar, kemungkinan besar Anda tidak akan menghemat lebih dari 50 md. Jika Anda telah menghabiskan satu jam dengan hati-hati menyiapkan opsi untuk mengurangi 50 ms, Anda harus memulai Vim 72.000 kali hanya untuk mencapai titik impas. Anda harus bertanya pada diri sendiri apakah itu investasi waktu yang baik.
Pastikan Anda mengatasi masalah yang tepat dengan membagi waktu startup Vim menggunakan --startuptime
.
vim --startuptime /tmp/log
Pemuatan berdasarkan permintaan hanya boleh digunakan sebagai upaya terakhir. Ini pada dasarnya adalah solusi peretasan dan tidak selalu dijamin berhasil.
Tip
Anda dapat meneruskan daftar kosong ke opsi on
atau for
untuk menonaktifkan pemuatan plugin. Anda dapat memuat plugin secara manual menggunakan fungsi plug#load(NAMES...)
.
Lihat https://github.com/junegunn/vim-plug/wiki/tips#loading-plugins-manually
MIT