Closed hamsterBiscuit closed 3 years ago
Do you have information about how long your startup takes with any other plugin manager? If it's faster with others, then this is probably a packer
problem; otherwise, the startup time probably comes from the plugins you're using.
I would suggest using https://github.com/dstein64/vim-startuptime to get a better breakdown of where the time during startup is spent, so that you can identify what's slowing you down.
think you for you help, i use vim-startuptime
and run StartupTime --tries 20
, results:
event time percent plot
sourcing vimrc file( 41.28 21.09 ██████████████████████████
packer_compiled.vim 40.11 20.50 █████████████████████████▎
VimEnter autocommand 11.55 5.90 ███████▎
loading plugins 10.51 5.37 ██████▋
filetype.vim 9.61 4.91 ██████
loading packages 8.81 4.50 █████▌
caw.vim 8.22 4.20 █████▏
reading ShaDa 7.37 3.77 ████▋
BufEnter autocommand 5.03 2.57 ███▏
plenary.vim 5.02 2.57 ███▏
compe_snippets_nvim. 3.99 2.04 ██▌
opening buffers 2.78 1.42 █▊
first screen update 2.36 1.20 █▌
nvim-treesitter-text 2.20 1.13 █▍
done waiting for UI 2.04 1.04 █▎
loading after plugin 1.92 0.98 █▎
compe_buffer.vim 1.64 0.84 █
compe_nvim_lsp.vim 1.61 0.82 █
asyncrun.vim 1.55 0.79 █
syntax.vim 1.50 0.77 █
compe_path.vim 1.46 0.74 ▉
asynctasks.vim 1.38 0.70 ▉
synload.vim 1.29 0.66 ▊
compe_nvim_lua.vim 1.25 0.64 ▊
compe_vsnip.vim 1.25 0.64 ▊
compe_calc.vim 1.23 0.63 ▊
compe_tags.vim 1.19 0.61 ▊
compe_ultisnips.vim 1.19 0.61 ▊
compe_spell.vim 1.17 0.60 ▊
bufkill.vim 1.13 0.58 ▊
locale set 1.11 0.57 ▊
terminal_help.vim 0.90 0.46 ▋
nvim-treesitter.vim 0.87 0.45 ▌
inits 1 0.71 0.36 ▌
editorconfig.vim 0.63 0.32 ▍
init highlight 0.60 0.31 ▍
closetag.vim 0.57 0.29 ▍
eft.vim 0.49 0.25 ▎
expanding arguments 0.44 0.22 ▎
clipboard.vim 0.42 0.21 ▎
mkdp.vim 0.36 0.18 ▎
dashboard.vim 0.36 0.18 ▎
surround.vim 0.35 0.18 ▎
rplugin.vim 0.35 0.18 ▎
syncolor.vim 0.33 0.17 ▎
startuptime.vim 0.30 0.15 ▎
emmet.vim 0.30 0.15 ▏
syncolor.vim 0.28 0.14 ▏
syncolor.vim 0.25 0.13 ▏
syncolor.vim 0.25 0.13 ▏
dashboard.vim 0.23 0.12 ▏
compe.vim 0.22 0.11 ▏
galaxyline.vim 0.20 0.10 ▏
user.vim 0.19 0.10 ▏
accelerated-jk.vim 0.18 0.09 ▏
shada.vim 0.17 0.09 ▏
section.vim 0.17 0.09 ▏
tree.vim 0.15 0.08 ▏
vim_bridge.vim 0.15 0.08 ▏
nicefold.vim 0.15 0.07 ▏
source.vim 0.15 0.07 ▏
vista.vim 0.15 0.07 ▏
compe.vim 0.14 0.07 ▏
dashboard.vim 0.14 0.07 ▏
difftools.vim 0.14 0.07 ▏
lspsaga.vim 0.14 0.07 ▏
man.vim 0.12 0.06 ▏
inits 2 0.09 0.05
nvim_treesitter.vim 0.09 0.04
indent.vim 0.07 0.03
lspconfig.vim 0.06 0.03
utils.vim 0.06 0.03
ftplugin.vim 0.06 0.03
spellfile.vim 0.06 0.03
nvim-web-devicons.vi 0.06 0.03
netrwPlugin.vim 0.06 0.03
query.vim 0.06 0.03
gzip.vim 0.05 0.03
matchparen.vim 0.05 0.02
executing command ar 0.05 0.02
health.vim 0.05 0.02
matchit.vim 0.05 0.02
rplugin.vim 0.05 0.02
bufferline.vim 0.05 0.02
compe_vim_lsp.vim 0.04 0.02
tutor.vim 0.04 0.02
tohtml.vim 0.04 0.02
zipPlugin.vim 0.04 0.02
tarPlugin.vim 0.04 0.02
query.vim 0.03 0.02
window checked 0.03 0.02
initialized screen e 0.02 0.01
dashboard.vim 0.02 0.01
inits 3 0.02 0.01
parsing arguments 0.01 0.01
--- NVIM STARTING -- 0.01 0.00
editing files in win 0.01 0.00
UIEnter autocommands 0.00 0.00
before starting main 0.00 0.00
--- NVIM STARTED --- 0.00 0.00
waiting for UI 0.00 0.00
total:
and it is startup for 'dein',
event time percent plot
sourcing vimrc file( 32.58 34.73 ██████████████████████████
filetype.vim 10.25 10.93 ████████▏
caw.vim 7.84 8.36 ██████▎
VimEnter autocommand 6.86 7.31 █████▌
loading plugins 4.68 4.99 ███▊
BufEnter autocommand 4.41 4.70 ███▌
galaxyline.vim 3.06 3.27 ██▌
done waiting for UI 2.20 2.34 █▊
state_nvim.vim 1.71 1.83 █▍
asyncrun.vim 1.56 1.66 █▎
first screen update 1.56 1.66 █▎
asynctasks.vim 1.40 1.50 █▏
opening buffers 1.37 1.46 █▏
syntax.vim 1.31 1.40 █
synload.vim 1.09 1.17 ▉
locale set 1.02 1.08 ▊
bufkill.vim 0.93 0.99 ▊
terminal_help.vim 0.74 0.79 ▋
inits 1 0.67 0.72 ▌
util.vim 0.61 0.65 ▌
init highlight 0.59 0.63 ▌
editorconfig.vim 0.58 0.61 ▌
closetag.vim 0.49 0.52 ▍
expanding arguments 0.44 0.47 ▍
syncolor.vim 0.39 0.41 ▎
reading ShaDa 0.37 0.40 ▎
dashboard.vim 0.36 0.38 ▎
clipboard.vim 0.29 0.31 ▎
autoload.vim 0.28 0.30 ▎
startuptime.vim 0.28 0.30 ▎
loading after plugin 0.27 0.29 ▎
dein.vim 0.26 0.27 ▎
loading packages 0.25 0.26 ▎
section.vim 0.23 0.24 ▏
syncolor.vim 0.22 0.24 ▏
dashboard.vim 0.21 0.22 ▏
ftdetect.vim 0.20 0.22 ▏
syncolor.vim 0.20 0.21 ▏
syncolor.vim 0.19 0.20 ▏
dashboard.vim 0.19 0.20 ▏
user.vim 0.15 0.16 ▏
shada.vim 0.14 0.14 ▏
lspsaga.vim 0.12 0.13 ▏
tree.vim 0.11 0.12 ▏
difftools.vim 0.11 0.12 ▏
nicefold.vim 0.10 0.11 ▏
man.vim 0.10 0.11 ▏
inits 2 0.08 0.09 ▏
ftplugin.vim 0.06 0.07
indent.vim 0.05 0.06
ftoff.vim 0.05 0.05
nvim-web-devicons.vi 0.05 0.05
executing command ar 0.05 0.05
spellfile.vim 0.04 0.04
utils.vim 0.04 0.04
bufferline.vim 0.04 0.04
tutor.vim 0.03 0.03
initialized screen e 0.03 0.03
netrwPlugin.vim 0.03 0.03
window checked 0.03 0.03
zipPlugin.vim 0.03 0.03
gzip.vim 0.03 0.03
tarPlugin.vim 0.03 0.03
tohtml.vim 0.02 0.03
ftplugin.vim 0.02 0.03
health.vim 0.02 0.02
matchit.vim 0.02 0.02
matchparen.vim 0.02 0.02
rplugin.vim 0.02 0.02
inits 3 0.01 0.01
parsing arguments 0.01 0.01
--- NVIM STARTING -- 0.01 0.01
editing files in win 0.01 0.01
UIEnter autocommands 0.00 0.00
before starting main 0.00 0.00
--- NVIM STARTED --- 0.00 0.00
waiting for UI 0.00 0.00
total:
the packer_compiled.vim
is use long time, i think.
Cool, thanks for the information. That's quite a large difference. Would you mind posting your dein
config too, so I can make sure it's doing all the same things as the packer
config?
One thing I will note is that several plugin files (e.g. compe_snippets.vim, nvim-treesitter-text, etc.) appear only in the packer
timing info, not the dein
info. I think that either points to the dein
config loading a slightly different set of plugins or to native packages (which underlies packer
's plugin loading) being substantially slower for some reason...
Oh, sorry - could you also post your packer_compiled.vim
so that I can see if it's at all strange? For comparison, my packer_compiled
generally takes ~3ms of a ~80ms startup time to source, so 40ms is unusually high.
sure, my dein config lazy plugin not same packer, but I feel that effect less ms.
my dein config:
# 标签页 状态栏
- repo: kyazdani42/nvim-web-devicons
#: tab 栏插件 提供 leader + number 切换buffer
- repo: akinsho/nvim-bufferline.lua
depends: nvim-web-devicons
hook_source: lua require("plugin-config.bufferline")
# 状态栏插件
- repo: glepnir/galaxyline.nvim
hook_source: lua require("eviline")
# 开屏
- repo: glepnir/dashboard-nvim
hook_source: lua require("plugin-config.dashboard")
- repo: Shougo/context_filetype.vim
on_event: BufReadPre
hook_source: let g:context_filetype#search_offset = 2000
# j k 增强插件
- repo: rhysd/accelerated-jk
on_map: { n: <Plug> }
# gc gcc 注释插件
- repo: tyru/caw.vim
depends: context_filetype.vim
on_map: { nx: <Plug> }
hook_add: |
function! InitCaw() abort
if !&l:modifiable
silent! nunmap <buffer> gc
silent! xunmap <buffer> gc
silent! nunmap <buffer> gcc
silent! xunmap <buffer> gcc
else
nmap <buffer> gc <Plug>(caw:prefix)
xmap <buffer> gc <Plug>(caw:prefix)
nmap <buffer> gcc <Plug>(caw:hatpos:toggle)
xmap <buffer> gcc <Plug>(caw:hatpos:toggle)
endif
endfunction
autocmd FileType * call InitCaw()
call InitCaw()
# f t 增强
- repo: hrsh7th/vim-eft
on_map: { nox: <Plug> }
hook_source: let g:eft_ignorecase = v:true
# 平滑滚动插件 半屏或者整屏翻页变为滚动效果
- repo: psliwka/vim-smoothie
on_event: [BufReadPre, BufNewFile]
# 增删改引号
- repo: kana/vim-operator-user
- repo: rhysd/vim-operator-surround
depends: vim-operator-user
on_map: { n: <Plug> }
# 任务 异步run term 插件
- repo: skywind3000/asyncrun.vim
hook_source: |
let g:asyncrun_open = 6
let g:asyncrun_mode = "term"
- repo: skywind3000/asynctasks.vim
- repo: skywind3000/vim-terminal-help
# 缩进线插件
- repo: glepnir/indent-guides.nvim
on_event: [BufReadPre, BufNewFile]
hook_source: |
lua <<EOF
require("indent_guides").setup {
even_colors = {fg = "NONE", bg = "#23272e"},
odd_colors = {fg = "NONE", bg = "#23272e"}
}
EOF
# 当前光标下划线 高亮
- repo: itchyny/vim-cursorword
on_event: [BufReadPre, BufNewFile]
hook_source: lua require("plugin-config.vim-cursorword")
# 颜色荧光笔
- repo: norcalli/nvim-colorizer.lua
hook_source: lua require("plugin-config.nvim-colorizer")
on_ft:
[
html,
css,
sass,
scss,
vim,
javascript,
javascriptreact,
typescript,
typescriptreact,
vue,
lua
]
# fuzzyfind 模糊搜索
- repo: nvim-telescope/telescope.nvim
on_cmd: Telescope
hook_source: lua require("plugin-config.telescope")
- repo: nvim-lua/popup.nvim
on_source: telescope.nvim
- repo: nvim-lua/plenary.nvim
on_source: [telescope.nvim, gitsigns.nvim]
# 高亮 主题
- repo: nvim-treesitter/nvim-treesitter
on_event: BufRead
hook_source: lua require("plugin-config.treesitter")
- repo: nvim-treesitter/nvim-treesitter-textobjects
on_source: nvim-treesitter
# 文件管理
- repo: kyazdani42/nvim-tree.lua
hook_source: lua require("plugin-config.nvim-tree")
# 补全
- repo: neovim/nvim-lspconfig
on_event: BufRead
on_source: lspsaga.nvim
hook_source: lua require("plugin-config.lsp")
- repo: glepnir/lspsaga.nvim
hook_source: lua require("lspsaga").init_lsp_saga()
- repo: hrsh7th/nvim-compe
on_event: InsertEnter
hook_source: lua require("plugin-config.nvim-compe")
- repo: hrsh7th/vim-vsnip
on_event: InsertCharPre
hook_source: |
let g:vsnip_filetypes = {}
let g:vsnip_filetypes.javascriptreact = ["javascript"]
let g:vsnip_filetypes.vue = ["vue", "javascript", "typescript"]
let g:vsnip_filetypes.typescriptreact = ["typescript"]
- repo: hrsh7th/vim-vsnip-integ
on_event: InsertCharPre
- repo: dsznajder/vscode-es7-javascript-react-snippets
on_event: InsertCharPre
- repo: xabikos/vscode-javascript
on_event: InsertCharPre
- repo: hollowtree/vscode-vue-snippets
on_event: InsertCharPre
# git信息展示 :SignifyDiff
- repo: lewis6991/gitsigns.nvim
on_event: [BufReadPre, BufNewFile]
hook_source: lua require("gitsigns").setup()
- repo: f-person/git-blame.nvim
on_event: [BufReadPre, BufNewFile]
# 自动括号括回
- repo: Raimondi/delimitMate
on_event: [BufReadPre, BufNewFile]
hook_source: lua require("plugin-config.delimitMate")
# 目前配置了lua和js,ts的格式化
- repo: mhartington/formatter.nvim
on_cmd: Format
hook_source: lua require("plugin-config.formatter")
# Tag 展示插件,目前主要使用lsp提供,CTAG也依然好用
- repo: liuchengxu/vista.vim
on_cmd: [Vista, Vista!, Vista!!]
hook_source: require("plugin-config.vista")
# lang Prettier 用来格式化js ts文件,formatter 配置为默认使用项目下
# Prettier,这个是全局的
- repo: prettier/vim-prettier
build: 'sh -c "cd app & yarn install"'
on_cmd: Prettier
# editorconfig
# 编辑器配置,个大编辑器都有实现或者有插件,用来统一项目的编辑格式,比如锁进等文件规范
- repo: editorconfig/editorconfig-vim
# 同步预览MD文件 :MarkdownPreview
- repo: iamcco/markdown-preview.nvim
on_ft: [markdown, pandoc.markdown, rmd]
build: 'sh -c "cd app & yarn install"'
# emmei插件 使用 ,, 触发补全,
- repo: mattn/emmet-vim
on_event: InsertEnter
hook_source: lua require("plugin-config.emmet")
# HTML tag 自动补全
- repo: alvan/vim-closetag
hook_source: lua require("plugin-config.closetag")
- repo: posva/vim-vue
on_ft: vue
hook_source: let g:vue_pre_processors = "detect_on_enter"
my packer_compiled.vim
:
" Automatically generated packer.nvim plugin loader code
if !has('nvim-0.5')
echohl WarningMsg
echom "Invalid Neovim version for packer.nvim!"
echohl None
finish
endif
try
lua << END
local package_path_str = "/Users/yongqi/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/Users/yongqi/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/Users/yongqi/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/Users/yongqi/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
local install_cpath_pattern = "/Users/yongqi/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
if not string.find(package.path, package_path_str, 1, true) then
package.path = package.path .. ';' .. package_path_str
end
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
package.cpath = package.cpath .. ';' .. install_cpath_pattern
end
_G.packer_plugins = {
["accelerated-jk"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/accelerated-jk"
},
["asyncrun.vim"] = {
config = { "\27LJ\2\nR\0\0\2\0\5\0\t6\0\0\0009\0\1\0)\1\6\0=\1\2\0006\0\0\0009\0\1\0'\1\4\0=\1\3\0K\0\1\0\tterm\18asyncrun_mode\18asyncrun_open\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/asyncrun.vim"
},
["asynctasks.vim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/asynctasks.vim"
},
["caw.vim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/caw.vim"
},
["colorbuddy.vim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/colorbuddy.vim"
},
["context_filetype.vim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/context_filetype.vim"
},
["dashboard-nvim"] = {
config = { "\27LJ\2\n·\15\0\0\4\0\18\0\0256\0\0\0009\0\1\0005\1\3\0=\1\2\0006\0\0\0009\0\1\0'\1\5\0=\1\4\0006\0\0\0009\0\1\0005\1\n\0005\2\b\0005\3\a\0=\3\t\2=\2\v\0015\2\r\0005\3\f\0=\3\t\2=\2\14\0015\2\16\0005\3\15\0=\3\t\2=\2\17\1=\1\6\0K\0\1\0\rnew_file\1\0\1\fcommand\21DashboardNewFile\1\2\0\0009ï New File SPC t f\14find_file\1\0\1\fcommand\22DashboardFindFile\1\2\0\0009ï
Find File SPC f f\17find_history\1\0\0\16description\1\0\1\fcommand\25DashboardFindHistory\1\2\0\0009ï¡ Recently opened files SPC f h\29dashboard_custom_section\14telescope dashboard_default_executive\1\20\0\0\5\5Z â¢â£´â¡¾â â â â â â â â ºâ â â â â ⠻⢿⣿⣿⣿⣿⣶⣤⡠` â¢â£´â£¿â¡¿â â â â â â â â â â â â â â â ⣸⣿⣿⣿⣿⣿⣿⣿⣷ b ⣴⣿⡿â¡â¡¼â¢¹â£·â¢²â¡¶â£â£¾â£¶â¢â â â â â â¢â£¼â£¿â¢¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿ d ⣾⣿â¡â£¾â¡¸â¢ ⡿⢳⡿â ⣼⣿â¢â£¿â£·â¢â¡â ⢠⣾⢻⣿⣸⣿⣿⣿⣿⣿⣿⣿ h ⣡⣿⣿â¡â¡¼â¡â ⣰â ⡾â ⢨⣿â ⣿⡿â ⣾â£â¢¤â£¿â¢â£¿â¢â£¿â£¿â¢¿â£¿â£¿â£¿â£¿â£¿ j ⣱⣿⣿â¡â¡â£°â£§â¡·â£¿â£´â£§â£¤â£¼â£¯â¢¸â¡¿â ⣰â â¢â£¼â ⣲â ⢸⣿â¡â£¿â£¿â£¿â£¿â£¿â£¿ j ⣿⣿â¡â â â â£â ⢡⣿⣿⣿⣿⣿⣿⣦⣼â¢â¢â¡¼â ⡹â â¡â¢¸â¡¿â¢¸â£¿â£¿â£¿â£¿â£¿â¡ j ⣿⣿â â â¢â£¾â â ⢰⣿⣿⣿⣿⣿⣿⠿⣿⣿⣾â£
â¢â£â¡â¡â¡¼â¢â£¿â£¿â£¿â£¿â£¿â£¿â¢£ j ⣿â¡â â ⣾â£â ·â£¢â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£â£â¡â ⢿⣿⣿â¡â¡§â¢â£¾â£¿â£¿â£¿â£¿â£¿â¢â£¾ j ⣿â¡â ⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿â ⢻â â â ⢿⣿â¡â¢¡â£¾â£¿â£¿â£¿â£¿â£¿â£â£¼â£¿ j ⣿⣷⢰⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣧â£â¡â¢â ⡿⣰⣿⣿⣿⣿⣿⣿â ⣼⣿⣿ j ⢹⣿⢸⣿⣿â ⠻⢿⣿⣿⣿⣿⣿⣿⣿⣶â£â£â£¤â£¿â¢â£¼â£¿â£¿â£¿â£¿â£¿â£¿â ⣾⣹⣿⣿ j ⢸â â¡â£¿â¡â â â â â ⣿⣿⣿⣿⣿⣿⣿⣿â ⣱⣻⣿⣿⣿⣿⣿â â ⢳â ⣿⣿⣿ d ⣰â¡â ¹â£¿â£â â â â¢â£¿â£¿â£¿â£¿â£¿â£¿â â£
⣥⣿⣿⣿⣿⠿â ⣾â¡â¢ ⣿⡿â T â â ⢠⣷⢻⣿⣿⣶⣾⣿⣿⣿⣿⠿â£â£¥â£¾â£¿â ¿â â â \5\5\28dashboard_custom_header\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/dashboard-nvim"
},
delimitMate = {
config = { "\27LJ\2\n´\2\0\0\3\0\t\0\0226\0\0\0009\0\1\0)\1\0\0=\1\2\0006\0\0\0009\0\1\0)\1\1\0=\1\3\0006\0\0\0009\0\1\0)\1\1\0=\1\4\0006\0\0\0009\0\1\0)\1\0\0=\1\5\0006\0\0\0009\0\6\0009\0\a\0'\2\b\0B\0\2\1K\0\1\0Yau FileType xml,html,phtml,php,xhtml,js let b:delimitMate_matchpairs = \"(:),[:],{:}\"\17nvim_command\bapi%delimitMate_expand_inside_quotes\29delimitMate_smart_quotes\29delimitMate_expand_space\26delimitMate_expand_cr\6g\bvim\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/delimitMate"
},
["editorconfig-vim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/editorconfig-vim"
},
["emmet-vim"] = {
config = { "\27LJ\2\nÞ\2\0\0\3\0\f\0\0266\0\0\0009\0\1\0)\1\0\0=\1\2\0006\0\0\0009\0\1\0)\1\0\0=\1\3\0006\0\0\0009\0\1\0)\1\0\0=\1\4\0006\0\0\0009\0\1\0'\1\6\0=\1\5\0006\0\0\0009\0\1\0'\1\b\0=\1\a\0006\0\0\0009\0\t\0009\0\n\0'\2\v\0B\0\2\1K\0\1\0eautocmd FileType html,css,javascript,javascriptreact,vue,typescript,typescriptreact EmmetInstall\17nvim_command\bapi\6,\26user_emmet_leader_key\6i\20user_emmet_mode\31user_emmet_install_command\30user_emmet_install_global\28user_emmet_complete_tag\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/emmet-vim"
},
["formatter.nvim"] = {
commands = { "Format" },
config = { "\27LJ\2\n\1\0\0\5\0\6\1\n5\0\0\0005\1\1\0006\2\2\0009\2\3\0029\2\4\2)\4\0\0B\2\2\0?\2\0\0=\1\5\0L\0\2\0\targs\22nvim_buf_get_name\bapi\bvim\1\2\0\0\21--stdin-filepath\1\0\2\nstdin\2\bexe\rprettier\5À\4N\0\0\2\0\3\0\0045\0\0\0005\1\1\0=\1\2\0L\0\2\0\targs\1\4\0\0\19--indent-count\3\2\f--stdin\1\0\2\nstdin\2\bexe\vluafmtø\1\1\0\6\0\14\0\0313\0\0\0007\0\1\0006\0\2\0'\2\3\0B\0\2\0029\0\4\0005\2\5\0005\3\6\0004\4\3\0006\5\1\0>\5\1\4=\4\a\0034\4\3\0006\5\1\0>\5\1\4=\4\b\0034\4\3\0006\5\1\0>\5\1\4=\4\t\0034\4\3\0006\5\1\0>\5\1\4=\4\n\0034\4\3\0003\5\v\0>\5\1\4=\4\f\3=\3\r\2B\0\2\1K\0\1\0\rfiletype\blua\0\20javascriptreact\20typescriptreact\15typescript\15javascript\1\0\0\1\0\1\flogging\1\nsetup\14formatter\frequire\rPrettier\0\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/formatter.nvim"
},
["galaxyline.nvim"] = {
config = { "\27LJ\2\n\\\0\0\5\0\5\1\0156\0\0\0009\0\1\0009\0\2\0006\2\0\0009\2\1\0029\2\3\2'\4\4\0B\2\2\0A\0\0\2\b\0\0\0X\0\2+\0\2\0L\0\2\0+\0\1\0L\0\2\0\b%:t\vexpand\nempty\afn\bvim\2\20\0\0\1\0\1\0\2'\0\0\0L\0\2\0\tâ Î\3\0\0\6\1$\0J5\0\1\0-\1\0\0009\1\0\1=\1\2\0-\1\0\0009\1\3\1=\1\4\0-\1\0\0009\1\5\1=\1\6\0-\1\0\0009\1\5\1=\1\a\0-\1\0\0009\1\5\1=\1\b\0-\1\0\0009\1\t\1=\1\n\0-\1\0\0009\1\0\1=\1\v\0-\1\0\0009\1\f\1=\1\r\0-\1\0\0009\1\f\1=\1\14\0-\1\0\0009\1\f\1=\1\15\0-\1\0\0009\1\16\1=\1\17\0-\1\0\0009\1\18\1=\1\19\0-\1\0\0009\1\18\1=\1\20\0-\1\0\0009\1\t\1=\1\21\0-\1\0\0009\1\t\1=\1\22\0-\1\0\0009\1\23\1=\1\24\0-\1\0\0009\1\23\1=\1\25\0-\1\0\0009\1\23\1=\1\26\0-\1\0\0009\1\t\1=\1\27\0-\1\0\0009\1\t\1=\1\28\0006\1\29\0009\1\30\0019\1\31\1'\3 \0006\4\29\0009\4!\0049\4\"\4B\4\1\0028\4\4\0&\3\4\3B\1\2\1'\1#\0L\1\2\0\2À\nï \tmode\afn\27hi GalaxyViMode guifg=\17nvim_command\bapi\bvim\6t\6!\ar?\arm\6r\tcyan\ace\acv\aRv\6R\vpurple\aic\vyellow\6\19\6S\6s\vorange\ano\6c\bred\6V\6\22\6v\tblue\6i\ngreen\6n\1\0\0\fmagenta\21\0\0\1\0\1\0\2'\0\0\0L\0\2\0\n ï¿ L\0\0\3\0\3\1\r6\0\0\0009\0\1\0009\0\2\0)\2\0\0B\0\2\2\25\0\0\0)\1(\0\1\1\0\0X\1\2+\1\2\0L\1\2\0+\1\1\0L\1\2\0\rwinwidth\afn\bvim\4\20\0\0\1\0\1\0\2'\0\0\0L\0\2\0\t â¼\1\0\0\t\1\t\0\0206\0\0\0'\2\1\0B\0\2\0029\1\2\0B\1\1\0026\2\3\0-\4\0\0009\4\4\4B\2\2\4X\5\a6\a\5\0009\a\6\a9\a\a\a\5\6\a\0X\a\2'\a\b\0L\a\2\0E\5\3\3R\5÷L\1\2\0\0À\5\rfiletype\abo\bvim\20short_line_list\vipairs\26get_current_file_name!galaxyline.provider_fileinfo\frequire«\21\1\0\v\0u\0µ\0026\0\0\0'\2\1\0B\0\2\0029\1\2\0005\2\4\0=\2\3\0005\2\5\0003\3\6\0009\4\a\0015\5\14\0005\6\t\0003\a\b\0=\a\n\0064\a\3\0009\b\v\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\15\5>\5\1\0049\4\a\0015\5\20\0005\6\17\0003\a\16\0=\a\n\0065\a\19\0009\b\18\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\21\5>\5\2\0049\4\a\0015\5\25\0005\6\22\0=\3\23\0064\a\3\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\26\5>\5\3\0049\4\a\0015\5\30\0005\6\27\0=\3\23\0064\a\3\0006\b\0\0'\n\28\0B\b\2\0029\b\29\b>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\31\5>\5\4\0049\4\a\0015\5$\0005\6!\0005\a \0=\a\n\6=\3\23\0065\a#\0009\b\"\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6%\5>\5\5\0049\4\a\0015\5)\0005\6&\0005\a'\0009\b\f\2>\b\2\a=\a(\0064\a\3\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6*\5>\5\6\0049\4\a\0015\5.\0005\6+\0005\a,\0009\b\f\2>\b\2\a=\a(\0065\a-\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6/\5>\5\a\0049\4\a\0015\0051\0005\0060\0004\a\3\0009\b\18\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\0062\5>\5\b\0049\4\a\0015\0055\0005\0063\0004\a\3\0009\b4\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\0066\5>\5\t\0049\4\a\0015\0059\0005\0067\0004\a\3\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6:\5>\5\n\0049\4\a\0015\5<\0005\6;\0004\a\3\0009\b\v\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6=\5>\5\v\0049\4>\0015\5B\0005\6?\0005\a@\0009\b\f\2>\b\2\a=\a(\0065\aA\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6C\5>\5\1\0049\4>\0015\5G\0005\6D\0005\aE\0009\b\f\2>\b\2\a=\a(\0065\aF\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6H\5>\5\2\0049\4>\0015\5P\0005\6J\0003\aI\0=\a\n\0066\a\0\0'\tK\0B\a\2\0029\aL\a=\a\23\0065\aM\0009\b\f\2>\b\2\a=\a(\0065\aO\0009\bN\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6Q\5>\5\3\0049\4>\0015\5T\0005\6R\0006\a\0\0'\tK\0B\a\2\0029\aL\a=\a\23\0065\aS\0009\bN\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6U\5>\5\4\0043\4V\0009\5>\0015\6X\0005\aW\0=\4\23\a4\b\3\0009\t\"\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\aY\6>\6\5\0059\5>\0015\6\\\0005\aZ\0=\4\23\a4\b\3\0009\t[\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\a]\6>\6\6\0059\5>\0015\6_\0005\a^\0=\4\23\a4\b\3\0009\t\18\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\a`\6>\6\a\0059\5>\0015\6c\0005\ab\0003\ba\0=\b\n\a4\b\3\0009\t\v\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\ad\6>\6\b\0059\5e\0015\6i\0005\af\0005\bg\0009\t\f\2>\t\2\b=\b(\a5\bh\0009\t\v\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\aj\6>\6\1\0059\5e\0015\6o\0005\al\0003\bk\0=\b\n\a=\3\23\a5\bn\0009\tm\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\ap\6>\6\2\0059\5q\0015\6s\0005\ar\0004\b\3\0009\t\24\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\at\6>\6\1\0052\0\0K\0\1\0\15BufferIcon\1\0\0\1\0\1\rprovider\15BufferIcon\21short_line_right\14SFileName\1\0\0\1\4\0\0\0\0\tbold\nwhite\1\0\0\0\15BufferType\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\17FileTypeName\14separator\6 \20short_line_left\16RainbowBlue\1\0\0\1\0\0\0\15DiffRemove\1\0\0\1\0\2\rprovider\15DiffRemove\ticon\n ï
\17DiffModified\1\0\0\vorange\1\0\2\rprovider\17DiffModified\ticon\t ï§\fDiffAdd\1\0\0\1\0\2\rprovider\fDiffAdd\ticon\n ï¾ \0\14GitBranch\1\0\0\1\4\0\0\0\0\tbold\1\0\1\rprovider\14GitBranch\fGitIcon\1\0\0\1\4\0\0\0\0\tbold\vviolet\1\2\0\0\tNONE\24check_git_workspace\28galaxyline.provider_vcs\1\0\1\14separator\6 \0\15FileFormat\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\15FileFormat\14separator\6 \15FileEncode\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\15FileEncode\14separator\6 \nright\19DiagnosticInfo\1\0\0\1\0\2\rprovider\19DiagnosticInfo\ticon\n ï \19DiagnosticHint\1\0\0\tcyan\1\0\2\rprovider\19DiagnosticHint\ticon\n ïª \19DiagnosticWarn\1\0\0\vyellow\1\0\2\rprovider\19DiagnosticWarn\ticon\n ï± \20DiagnosticError\1\0\0\1\0\2\rprovider\20DiagnosticError\ticon\n ï \fPerCent\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\16LinePercent\14separator\6 \rLineInfo\1\0\0\24separator_highlight\1\2\0\0\tNONE\1\0\2\rprovider\15LineColumn\14separator\6 \rFileName\1\0\0\1\4\0\0\0\0\tbold\ngreen\1\0\0\1\2\0\0\rFileName\rFileIcon\1\0\0\24get_file_icon_color!galaxyline.provider_fileinfo\1\0\1\rprovider\rFileIcon\rFileSize\1\0\0\afg\14condition\1\0\1\rprovider\rFileSize\vViMode\1\0\0\1\4\0\0\0\0\tbold\bred\1\0\0\0\15RainbowRed\1\0\0\14highlight\abg\tblue\rprovider\1\0\0\0\tleft\0\1\0\v\vviolet\f#a9a1e1\vyellow\f#fabd2f\bred\f#ec5f67\tblue\f#51afef\vorange\f#FF8800\fmagenta\f#c678dd\ngreen\f#98be65\abg\f#202328\rdarkblue\f#081633\afg\f#bbc2cf\tcyan\f#008080\1\4\0\0\rNvimTree\nvista\tdbui\20short_line_list\fsection\15galaxyline\frequire\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/galaxyline.nvim"
},
["git-blame.nvim"] = {
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/git-blame.nvim"
},
["gitsigns.nvim"] = {
config = { "\27LJ\2\n6\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\rgitsigns\frequire\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/gitsigns.nvim"
},
["indent-guides.nvim"] = {
config = { "\27LJ\2\n\1\0\0\4\0\b\0\v6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\0025\3\6\0=\3\a\2B\0\2\1K\0\1\0\15odd_colors\1\0\2\afg\tNONE\abg\f#23272e\16even_colors\1\0\0\1\0\2\afg\tNONE\abg\f#23272e\nsetup\18indent_guides\frequire\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/indent-guides.nvim"
},
["lspsaga.nvim"] = {
config = { "\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\18init_lsp_saga\flspsaga\frequire\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/lspsaga.nvim"
},
["markdown-preview.nvim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/markdown-preview.nvim"
},
["nvim-bufferline.lua"] = {
config = { "\27LJ\2\nt\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\foptions\1\0\0\1\0\2\rmappings\2\27always_show_bufferline\1\nsetup\15bufferline\frequire\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/nvim-bufferline.lua"
},
["nvim-colorizer.lua"] = {
config = { "\27LJ\2\n7\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\14colorizer\frequire\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/nvim-colorizer.lua"
},
["nvim-compe"] = {
config = { "\27LJ\2\n¹\1\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0005\3\4\0=\3\5\2B\0\2\1K\0\1\0\vsource\1\0\5\nvsnip\2\tpath\2\rnvim_lua\2\rnvim_lsp\2\vbuffer\2\1\0\5\25allow_prefix_unmatch\1\ndebug\1\14preselect\valways\15min_length\3\1\fenabled\2\nsetup\ncompe\frequire\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/nvim-compe"
},
["nvim-lspconfig"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/nvim-lspconfig"
},
["nvim-tree.lua"] = {
config = { "\27LJ\2\nÓ\3\0\0\3\0\16\0%6\0\0\0009\0\1\0)\1\1\0=\1\2\0006\0\0\0009\0\1\0)\1\1\0=\1\3\0006\0\0\0009\0\1\0)\1\1\0=\1\4\0006\0\0\0009\0\1\0)\1\1\0=\1\5\0006\0\0\0009\0\1\0)\1\1\0=\1\6\0006\0\0\0009\0\1\0)\1\1\0=\1\a\0006\0\0\0009\0\1\0005\1\n\0005\2\t\0=\2\v\1=\1\b\0006\0\0\0009\0\1\0005\1\r\0005\2\14\0=\2\15\1=\1\f\0K\0\1\0\bgit\1\0\5\vstaged\bâ\runstaged\bâ\14untracked\bâ
\frenamed\bâ«\runmerged\bâ \1\0\2\fsymlink\bï\fdefault\bï
\20nvim_tree_icons\tedit\1\0\2\16edit_vsplit\6s\15edit_split\6i\1\3\0\0\t<CR>\6l\23nvim_tree_bindings\27nvim_tree_allow_resize\23nvim_tree_tab_open\21nvim_tree_git_hl\27nvim_tree_quit_on_open\25nvim_tree_auto_close\29nvim_tree_indent_markers\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/nvim-tree.lua"
},
["nvim-treesitter"] = {
after = { "nvim-treesitter-textobjects" },
only_config = true,
only_sequence = true
},
["nvim-treesitter-textobjects"] = {
load_after = {},
loaded = false,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/nvim-treesitter-textobjects"
},
["nvim-web-devicons"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/nvim-web-devicons"
},
onebuddy = {
config = { "\27LJ\2\n\4\0\0\f\0\25\0O6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\0016\0\0\0'\2\1\0B\0\2\0029\0\4\0B\0\1\0069\5\5\0049\6\6\2'\b\a\0009\t\b\0019\n\t\0019\v\5\4B\6\5\0019\6\6\2'\b\n\0009\t\v\0019\n\t\0019\v\5\4B\6\5\0019\6\6\2'\b\f\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\14\0009\t\15\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\16\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\18\0009\t\19\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\20\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\21\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\22\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\23\0009\t\19\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\24\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\1K\0\1\0\16DiffRemoved\rDiffLine\16DiffNewFile\rDiffFile\14DiffAdded\nhue_2\rDiffText\nhue_5\15DiffDelete\nhue_6\15DiffChange\nhue_4\fDiffAdd\14syntax_bg\16EndOfBuffer\tnone\vmono_4\15SignColumn\bnew\tNONE\nsetup\ronebuddy\16colorscheme\15colorbuddy\frequire\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/onebuddy"
},
["packer.nvim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/packer.nvim"
},
["plenary.nvim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/plenary.nvim"
},
["popup.nvim"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/popup.nvim"
},
["telescope.nvim"] = {
commands = { "Telescope" },
config = { "\27LJ\2\n§\2\0\0\t\0\15\0\0236\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\r\0005\3\3\0005\4\n\0005\5\6\0006\6\0\0'\b\4\0B\6\2\0029\6\5\6=\6\a\0056\6\0\0'\b\4\0B\6\2\0029\6\b\6=\6\t\5=\5\v\4=\4\f\3=\3\14\2B\0\2\1K\0\1\0\rdefaults\1\0\0\rmappings\6i\1\0\0\n<C-k>\28move_selection_previous\n<C-j>\1\0\0\24move_selection_next\22telescope.actions\1\0\3\20prompt_position\btop\18prompt_prefix\tð¤\21sorting_strategy\14ascending\nsetup\14telescope\frequire\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/telescope.nvim"
},
["vim-closetag"] = {
config = { "\27LJ\2\nÒ\3\0\0\2\0\15\0\0296\0\0\0009\0\1\0'\1\3\0=\1\2\0006\0\0\0009\0\1\0'\1\5\0=\1\4\0006\0\0\0009\0\1\0'\1\a\0=\1\6\0006\0\0\0009\0\1\0'\1\t\0=\1\b\0006\0\0\0009\0\1\0)\1\1\0=\1\n\0006\0\0\0009\0\1\0005\1\f\0=\1\v\0006\0\0\0009\0\1\0'\1\14\0=\1\r\0K\0\1\0\6>\22closetag_shortcut\1\0\2\19typescript.tsx\24jsxRegion,tsxRegion\19javascript.jsx\14jsxRegion\21closetag_regions%closetag_emptyTags_caseSensitive\14xhtml,jsx\29closetag_xhtml_filetypes#html,xhtml,phtml,js,jsx,ts,tsx\23closetag_filetypes\"*.xhtml,*.jsx,*.js,*.ts,*.tsx\29closetag_xhtml_filenames1*.html,*.xhtml,*.phtml,*.js,*.jsx,*.ts,*.tsx\23closetag_filenames\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vim-closetag"
},
["vim-cursorword"] = {
config = { "\27LJ\2\n»\3\0\0\3\0\n\0$6\0\0\0009\0\1\0009\0\2\0'\2\3\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\4\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\5\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\6\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\a\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\b\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\t\0B\0\2\1K\0\1\0\16augroup END/autocmd InsertLeave * let b:cursorword = 1/autocmd InsertEnter * let b:cursorword = 0Gautocmd WinEnter * if &diff || &pvw | let b:cursorword = 0 | endifFautocmd FileType defx,denite,fern,clap,vista let b:cursorword = 0\rautocmd!#augroup user_plugin_cursorword\17nvim_command\bapi\bvim\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-cursorword"
},
["vim-eft"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vim-eft"
},
["vim-operator-surround"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vim-operator-surround"
},
["vim-operator-user"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vim-operator-user"
},
["vim-prettier"] = {
commands = { "Prettier" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-prettier"
},
["vim-smoothie"] = {
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-smoothie"
},
["vim-terminal-help"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vim-terminal-help"
},
["vim-vsnip"] = {
config = { "\27LJ\2\nÍ\1\0\0\2\0\t\0\0206\0\0\0009\0\1\0004\1\0\0=\1\2\0006\0\0\0009\0\1\0009\0\2\0005\1\4\0=\1\3\0006\0\0\0009\0\1\0009\0\2\0005\1\6\0=\1\5\0006\0\0\0009\0\1\0009\0\2\0005\1\b\0=\1\a\0K\0\1\0\1\2\0\0\15typescript\20typescriptreact\1\4\0\0\bvue\15javascript\15typescript\bvue\1\2\0\0\15javascript\20javascriptreact\20vsnip_filetypes\6g\bvim\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-vsnip"
},
["vim-vsnip-integ"] = {
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-vsnip-integ"
},
["vim-vue"] = {
config = { "\27LJ\2\nD\0\0\2\0\4\0\0056\0\0\0009\0\1\0'\1\3\0=\1\2\0K\0\1\0\20detect_on_enter\23vue_pre_processors\6g\bvim\0" },
loaded = false,
only_sequence = false,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/opt/vim-vue"
},
["vista.vim"] = {
config = { "\27LJ\2\nÁ\2\0\0\2\0\f\0\0256\0\0\0009\0\1\0)\1\1\0=\1\2\0006\0\0\0009\0\1\0'\1\4\0=\1\3\0006\0\0\0009\0\1\0'\1\6\0=\1\5\0006\0\0\0009\0\1\0'\1\b\0=\1\a\0006\0\0\0009\0\1\0)\1\1\0=\1\t\0006\0\0\0009\0\1\0005\1\v\0=\1\n\0K\0\1\0\1\0\2\fvimwiki\rmarkdown\vpandoc\rmarkdown\24vista_executive_for\31vista_highlight_whole_line\rmarkdown\28vista_vimwiki_executive\vscroll\31vista_echo_cursor_strategy\rnvim_lsp\28vista_default_executive\29vista_disable_statusline\6g\bvim\0" },
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vista.vim"
},
["vscode-es7-javascript-react-snippets"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vscode-es7-javascript-react-snippets"
},
["vscode-javascript"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vscode-javascript"
},
["vscode-vue-snippets"] = {
loaded = true,
only_sequence = true,
only_setup = false,
path = "/Users/yongqi/.local/share/nvim/site/pack/packer/start/vscode-vue-snippets"
}
}
local function handle_bufread(names)
for _, name in ipairs(names) do
local path = packer_plugins[name].path
for _, dir in ipairs({ 'ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin' }) do
if #vim.fn.finddir(dir, path) > 0 then
vim.cmd('doautocmd BufRead')
return
end
end
end
end
local packer_load = nil
local function handle_after(name, before)
local plugin = packer_plugins[name]
plugin.load_after[before] = nil
if next(plugin.load_after) == nil then
packer_load({name}, {})
end
end
packer_load = function(names, cause)
local some_unloaded = false
for _, name in ipairs(names) do
if not packer_plugins[name].loaded then
some_unloaded = true
break
end
end
if not some_unloaded then return end
local fmt = string.format
local del_cmds = {}
local del_maps = {}
for _, name in ipairs(names) do
if packer_plugins[name].commands then
for _, cmd in ipairs(packer_plugins[name].commands) do
del_cmds[cmd] = true
end
end
if packer_plugins[name].keys then
for _, key in ipairs(packer_plugins[name].keys) do
del_maps[key] = true
end
end
end
for cmd, _ in pairs(del_cmds) do
vim.cmd('silent! delcommand ' .. cmd)
end
for key, _ in pairs(del_maps) do
vim.cmd(fmt('silent! %sunmap %s', key[1], key[2]))
end
for _, name in ipairs(names) do
if not packer_plugins[name].loaded then
vim.cmd('packadd ' .. name)
if packer_plugins[name].config then
for _i, config_line in ipairs(packer_plugins[name].config) do
loadstring(config_line)()
end
end
if packer_plugins[name].after then
for _, after_name in ipairs(packer_plugins[name].after) do
handle_after(after_name, name)
vim.cmd('redraw')
end
end
packer_plugins[name].loaded = true
end
end
handle_bufread(names)
if cause.cmd then
local lines = cause.l1 == cause.l2 and '' or (cause.l1 .. ',' .. cause.l2)
vim.cmd(fmt('%s%s%s %s', lines, cause.cmd, cause.bang, cause.args))
elseif cause.keys then
local keys = cause.keys
local extra = ''
while true do
local c = vim.fn.getchar(0)
if c == 0 then break end
extra = extra .. vim.fn.nr2char(c)
end
if cause.prefix then
local prefix = vim.v.count ~= 0 and vim.v.count or ''
prefix = prefix .. '"' .. vim.v.register .. cause.prefix
if vim.fn.mode('full') == 'no' then
if vim.v.operator == 'c' then
prefix = '' .. prefix
end
prefix = prefix .. vim.v.operator
end
vim.fn.feedkeys(prefix, 'n')
end
local escaped_keys = vim.api.nvim_replace_termcodes(cause.keys .. extra, true, true, true)
vim.api.nvim_feedkeys(escaped_keys, 'm', true)
elseif cause.event then
vim.cmd(fmt('doautocmd <nomodeline> %s', cause.event))
elseif cause.ft then
vim.cmd(fmt('doautocmd <nomodeline> %s FileType %s', 'filetypeplugin', cause.ft))
vim.cmd(fmt('doautocmd <nomodeline> %s FileType %s', 'filetypeindent', cause.ft))
end
end
_packer_load_wrapper = function(names, cause)
success, err_msg = pcall(packer_load, names, cause)
if not success then
vim.cmd('echohl ErrorMsg')
vim.cmd('echomsg "Error in packer_compiled: ' .. vim.fn.escape(err_msg, '"') .. '"')
vim.cmd('echomsg "Please check your config for correctness"')
vim.cmd('echohl None')
end
end
-- Runtimepath customization
-- Pre-load configuration
-- Post-load configuration
-- Config for: nvim-bufferline.lua
loadstring("\27LJ\2\nt\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\4\0005\3\3\0=\3\5\2B\0\2\1K\0\1\0\foptions\1\0\0\1\0\2\rmappings\2\27always_show_bufferline\1\nsetup\15bufferline\frequire\0")()
-- Config for: lspsaga.nvim
loadstring("\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\18init_lsp_saga\flspsaga\frequire\0")()
-- Config for: dashboard-nvim
loadstring("\27LJ\2\n·\15\0\0\4\0\18\0\0256\0\0\0009\0\1\0005\1\3\0=\1\2\0006\0\0\0009\0\1\0'\1\5\0=\1\4\0006\0\0\0009\0\1\0005\1\n\0005\2\b\0005\3\a\0=\3\t\2=\2\v\0015\2\r\0005\3\f\0=\3\t\2=\2\14\0015\2\16\0005\3\15\0=\3\t\2=\2\17\1=\1\6\0K\0\1\0\rnew_file\1\0\1\fcommand\21DashboardNewFile\1\2\0\0009ï New File SPC t f\14find_file\1\0\1\fcommand\22DashboardFindFile\1\2\0\0009ï
Find File SPC f f\17find_history\1\0\0\16description\1\0\1\fcommand\25DashboardFindHistory\1\2\0\0009ï¡ Recently opened files SPC f h\29dashboard_custom_section\14telescope dashboard_default_executive\1\20\0\0\5\5Z â¢â£´â¡¾â â â â â â â â ºâ â â â â ⠻⢿⣿⣿⣿⣿⣶⣤⡠` â¢â£´â£¿â¡¿â â â â â â â â â â â â â â â ⣸⣿⣿⣿⣿⣿⣿⣿⣷ b ⣴⣿⡿â¡â¡¼â¢¹â£·â¢²â¡¶â£â£¾â£¶â¢â â â â â â¢â£¼â£¿â¢¿â£¿â£¿â£¿â£¿â£¿â£¿â£¿ d ⣾⣿â¡â£¾â¡¸â¢ ⡿⢳⡿â ⣼⣿â¢â£¿â£·â¢â¡â ⢠⣾⢻⣿⣸⣿⣿⣿⣿⣿⣿⣿ h ⣡⣿⣿â¡â¡¼â¡â ⣰â ⡾â ⢨⣿â ⣿⡿â ⣾â£â¢¤â£¿â¢â£¿â¢â£¿â£¿â¢¿â£¿â£¿â£¿â£¿â£¿ j ⣱⣿⣿â¡â¡â£°â£§â¡·â£¿â£´â£§â£¤â£¼â£¯â¢¸â¡¿â ⣰â â¢â£¼â ⣲â ⢸⣿â¡â£¿â£¿â£¿â£¿â£¿â£¿ j ⣿⣿â¡â â â â£â ⢡⣿⣿⣿⣿⣿⣿⣦⣼â¢â¢â¡¼â ⡹â â¡â¢¸â¡¿â¢¸â£¿â£¿â£¿â£¿â£¿â¡ j ⣿⣿â â â¢â£¾â â ⢰⣿⣿⣿⣿⣿⣿⠿⣿⣿⣾â£
â¢â£â¡â¡â¡¼â¢â£¿â£¿â£¿â£¿â£¿â£¿â¢£ j ⣿â¡â â ⣾â£â ·â£¢â£¿â£¿â£¿â£¿â£¿â£¿â£¿â£â£â¡â ⢿⣿⣿â¡â¡§â¢â£¾â£¿â£¿â£¿â£¿â£¿â¢â£¾ j ⣿â¡â ⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿â ⢻â â â ⢿⣿â¡â¢¡â£¾â£¿â£¿â£¿â£¿â£¿â£â£¼â£¿ j ⣿⣷⢰⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣧â£â¡â¢â ⡿⣰⣿⣿⣿⣿⣿⣿â ⣼⣿⣿ j ⢹⣿⢸⣿⣿â ⠻⢿⣿⣿⣿⣿⣿⣿⣿⣶â£â£â£¤â£¿â¢â£¼â£¿â£¿â£¿â£¿â£¿â£¿â ⣾⣹⣿⣿ j ⢸â â¡â£¿â¡â â â â â ⣿⣿⣿⣿⣿⣿⣿⣿â ⣱⣻⣿⣿⣿⣿⣿â â ⢳â ⣿⣿⣿ d ⣰â¡â ¹â£¿â£â â â â¢â£¿â£¿â£¿â£¿â£¿â£¿â â£
⣥⣿⣿⣿⣿⠿â ⣾â¡â¢ ⣿⡿â T â â ⢠⣷⢻⣿⣿⣶⣾⣿⣿⣿⣿⠿â£â£¥â£¾â£¿â ¿â â â \5\5\28dashboard_custom_header\6g\bvim\0")()
-- Config for: vista.vim
loadstring("\27LJ\2\nÁ\2\0\0\2\0\f\0\0256\0\0\0009\0\1\0)\1\1\0=\1\2\0006\0\0\0009\0\1\0'\1\4\0=\1\3\0006\0\0\0009\0\1\0'\1\6\0=\1\5\0006\0\0\0009\0\1\0'\1\b\0=\1\a\0006\0\0\0009\0\1\0)\1\1\0=\1\t\0006\0\0\0009\0\1\0005\1\v\0=\1\n\0K\0\1\0\1\0\2\fvimwiki\rmarkdown\vpandoc\rmarkdown\24vista_executive_for\31vista_highlight_whole_line\rmarkdown\28vista_vimwiki_executive\vscroll\31vista_echo_cursor_strategy\rnvim_lsp\28vista_default_executive\29vista_disable_statusline\6g\bvim\0")()
-- Config for: emmet-vim
loadstring("\27LJ\2\nÞ\2\0\0\3\0\f\0\0266\0\0\0009\0\1\0)\1\0\0=\1\2\0006\0\0\0009\0\1\0)\1\0\0=\1\3\0006\0\0\0009\0\1\0)\1\0\0=\1\4\0006\0\0\0009\0\1\0'\1\6\0=\1\5\0006\0\0\0009\0\1\0'\1\b\0=\1\a\0006\0\0\0009\0\t\0009\0\n\0'\2\v\0B\0\2\1K\0\1\0eautocmd FileType html,css,javascript,javascriptreact,vue,typescript,typescriptreact EmmetInstall\17nvim_command\bapi\6,\26user_emmet_leader_key\6i\20user_emmet_mode\31user_emmet_install_command\30user_emmet_install_global\28user_emmet_complete_tag\6g\bvim\0")()
-- Config for: nvim-compe
loadstring("\27LJ\2\n¹\1\0\0\4\0\6\0\t6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0005\3\4\0=\3\5\2B\0\2\1K\0\1\0\vsource\1\0\5\nvsnip\2\tpath\2\rnvim_lua\2\rnvim_lsp\2\vbuffer\2\1\0\5\25allow_prefix_unmatch\1\ndebug\1\14preselect\valways\15min_length\3\1\fenabled\2\nsetup\ncompe\frequire\0")()
-- Config for: asyncrun.vim
loadstring("\27LJ\2\nR\0\0\2\0\5\0\t6\0\0\0009\0\1\0)\1\6\0=\1\2\0006\0\0\0009\0\1\0'\1\4\0=\1\3\0K\0\1\0\tterm\18asyncrun_mode\18asyncrun_open\6g\bvim\0")()
-- Config for: vim-closetag
loadstring("\27LJ\2\nÒ\3\0\0\2\0\15\0\0296\0\0\0009\0\1\0'\1\3\0=\1\2\0006\0\0\0009\0\1\0'\1\5\0=\1\4\0006\0\0\0009\0\1\0'\1\a\0=\1\6\0006\0\0\0009\0\1\0'\1\t\0=\1\b\0006\0\0\0009\0\1\0)\1\1\0=\1\n\0006\0\0\0009\0\1\0005\1\f\0=\1\v\0006\0\0\0009\0\1\0'\1\14\0=\1\r\0K\0\1\0\6>\22closetag_shortcut\1\0\2\19typescript.tsx\24jsxRegion,tsxRegion\19javascript.jsx\14jsxRegion\21closetag_regions%closetag_emptyTags_caseSensitive\14xhtml,jsx\29closetag_xhtml_filetypes#html,xhtml,phtml,js,jsx,ts,tsx\23closetag_filetypes\"*.xhtml,*.jsx,*.js,*.ts,*.tsx\29closetag_xhtml_filenames1*.html,*.xhtml,*.phtml,*.js,*.jsx,*.ts,*.tsx\23closetag_filenames\6g\bvim\0")()
-- Config for: nvim-treesitter
loadstring("\27LJ\2\n\3\0\0\6\0\19\0\0276\0\0\0009\0\1\0009\0\2\0'\2\3\0B\0\2\0016\0\0\0009\0\1\0009\0\2\0'\2\4\0B\0\2\0016\0\5\0'\2\6\0B\0\2\0029\0\a\0005\2\b\0005\3\t\0=\3\n\0025\3\v\0=\3\f\0025\3\16\0005\4\r\0005\5\14\0=\5\15\4=\4\17\3=\3\18\2B\0\2\1K\0\1\0\16textobjects\vselect\1\0\0\fkeymaps\1\0\4\aif\20@function.inner\aaf\20@function.outer\aac\17@class.outer\aic\17@class.inner\1\0\1\venable\2\vindent\1\0\1\venable\2\14highlight\1\0\1\venable\2\1\0\1\21ensure_installed\ball\nsetup\28nvim-treesitter.configs\frequire,set foldexpr=nvim_treesitter#foldexpr()\24set foldmethod=expr\17nvim_command\bapi\bvim\0")()
-- Config for: onebuddy
loadstring("\27LJ\2\n\4\0\0\f\0\25\0O6\0\0\0'\2\1\0B\0\2\0029\0\2\0'\2\3\0B\0\2\0016\0\0\0'\2\1\0B\0\2\0029\0\4\0B\0\1\0069\5\5\0049\6\6\2'\b\a\0009\t\b\0019\n\t\0019\v\5\4B\6\5\0019\6\6\2'\b\n\0009\t\v\0019\n\t\0019\v\5\4B\6\5\0019\6\6\2'\b\f\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\14\0009\t\15\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\16\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\18\0009\t\19\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\20\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\21\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\22\0009\t\r\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\23\0009\t\19\0019\n\v\1\18\v\5\0B\6\5\0019\6\6\2'\b\24\0009\t\17\0019\n\v\1\18\v\5\0B\6\5\1K\0\1\0\16DiffRemoved\rDiffLine\16DiffNewFile\rDiffFile\14DiffAdded\nhue_2\rDiffText\nhue_5\15DiffDelete\nhue_6\15DiffChange\nhue_4\fDiffAdd\14syntax_bg\16EndOfBuffer\tnone\vmono_4\15SignColumn\bnew\tNONE\nsetup\ronebuddy\16colorscheme\15colorbuddy\frequire\0")()
-- Config for: galaxyline.nvim
loadstring("\27LJ\2\n\\\0\0\5\0\5\1\0156\0\0\0009\0\1\0009\0\2\0006\2\0\0009\2\1\0029\2\3\2'\4\4\0B\2\2\0A\0\0\2\b\0\0\0X\0\2+\0\2\0L\0\2\0+\0\1\0L\0\2\0\b%:t\vexpand\nempty\afn\bvim\2\20\0\0\1\0\1\0\2'\0\0\0L\0\2\0\tâ Î\3\0\0\6\1$\0J5\0\1\0-\1\0\0009\1\0\1=\1\2\0-\1\0\0009\1\3\1=\1\4\0-\1\0\0009\1\5\1=\1\6\0-\1\0\0009\1\5\1=\1\a\0-\1\0\0009\1\5\1=\1\b\0-\1\0\0009\1\t\1=\1\n\0-\1\0\0009\1\0\1=\1\v\0-\1\0\0009\1\f\1=\1\r\0-\1\0\0009\1\f\1=\1\14\0-\1\0\0009\1\f\1=\1\15\0-\1\0\0009\1\16\1=\1\17\0-\1\0\0009\1\18\1=\1\19\0-\1\0\0009\1\18\1=\1\20\0-\1\0\0009\1\t\1=\1\21\0-\1\0\0009\1\t\1=\1\22\0-\1\0\0009\1\23\1=\1\24\0-\1\0\0009\1\23\1=\1\25\0-\1\0\0009\1\23\1=\1\26\0-\1\0\0009\1\t\1=\1\27\0-\1\0\0009\1\t\1=\1\28\0006\1\29\0009\1\30\0019\1\31\1'\3 \0006\4\29\0009\4!\0049\4\"\4B\4\1\0028\4\4\0&\3\4\3B\1\2\1'\1#\0L\1\2\0\2À\nï \tmode\afn\27hi GalaxyViMode guifg=\17nvim_command\bapi\bvim\6t\6!\ar?\arm\6r\tcyan\ace\acv\aRv\6R\vpurple\aic\vyellow\6\19\6S\6s\vorange\ano\6c\bred\6V\6\22\6v\tblue\6i\ngreen\6n\1\0\0\fmagenta\21\0\0\1\0\1\0\2'\0\0\0L\0\2\0\n ï¿ L\0\0\3\0\3\1\r6\0\0\0009\0\1\0009\0\2\0)\2\0\0B\0\2\2\25\0\0\0)\1(\0\1\1\0\0X\1\2+\1\2\0L\1\2\0+\1\1\0L\1\2\0\rwinwidth\afn\bvim\4\20\0\0\1\0\1\0\2'\0\0\0L\0\2\0\t â¼\1\0\0\t\1\t\0\0206\0\0\0'\2\1\0B\0\2\0029\1\2\0B\1\1\0026\2\3\0-\4\0\0009\4\4\4B\2\2\4X\5\a6\a\5\0009\a\6\a9\a\a\a\5\6\a\0X\a\2'\a\b\0L\a\2\0E\5\3\3R\5÷L\1\2\0\0À\5\rfiletype\abo\bvim\20short_line_list\vipairs\26get_current_file_name!galaxyline.provider_fileinfo\frequire«\21\1\0\v\0u\0µ\0026\0\0\0'\2\1\0B\0\2\0029\1\2\0005\2\4\0=\2\3\0005\2\5\0003\3\6\0009\4\a\0015\5\14\0005\6\t\0003\a\b\0=\a\n\0064\a\3\0009\b\v\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\15\5>\5\1\0049\4\a\0015\5\20\0005\6\17\0003\a\16\0=\a\n\0065\a\19\0009\b\18\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\21\5>\5\2\0049\4\a\0015\5\25\0005\6\22\0=\3\23\0064\a\3\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\26\5>\5\3\0049\4\a\0015\5\30\0005\6\27\0=\3\23\0064\a\3\0006\b\0\0'\n\28\0B\b\2\0029\b\29\b>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6\31\5>\5\4\0049\4\a\0015\5$\0005\6!\0005\a \0=\a\n\6=\3\23\0065\a#\0009\b\"\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6%\5>\5\5\0049\4\a\0015\5)\0005\6&\0005\a'\0009\b\f\2>\b\2\a=\a(\0064\a\3\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6*\5>\5\6\0049\4\a\0015\5.\0005\6+\0005\a,\0009\b\f\2>\b\2\a=\a(\0065\a-\0009\b\24\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6/\5>\5\a\0049\4\a\0015\0051\0005\0060\0004\a\3\0009\b\18\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\0062\5>\5\b\0049\4\a\0015\0055\0005\0063\0004\a\3\0009\b4\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\0066\5>\5\t\0049\4\a\0015\0059\0005\0067\0004\a\3\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6:\5>\5\n\0049\4\a\0015\5<\0005\6;\0004\a\3\0009\b\v\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6=\5>\5\v\0049\4>\0015\5B\0005\6?\0005\a@\0009\b\f\2>\b\2\a=\a(\0065\aA\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6C\5>\5\1\0049\4>\0015\5G\0005\6D\0005\aE\0009\b\f\2>\b\2\a=\a(\0065\aF\0009\b8\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6H\5>\5\2\0049\4>\0015\5P\0005\6J\0003\aI\0=\a\n\0066\a\0\0'\tK\0B\a\2\0029\aL\a=\a\23\0065\aM\0009\b\f\2>\b\2\a=\a(\0065\aO\0009\bN\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6Q\5>\5\3\0049\4>\0015\5T\0005\6R\0006\a\0\0'\tK\0B\a\2\0029\aL\a=\a\23\0065\aS\0009\bN\2>\b\1\a9\b\f\2>\b\2\a=\a\r\6=\6U\5>\5\4\0043\4V\0009\5>\0015\6X\0005\aW\0=\4\23\a4\b\3\0009\t\"\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\aY\6>\6\5\0059\5>\0015\6\\\0005\aZ\0=\4\23\a4\b\3\0009\t[\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\a]\6>\6\6\0059\5>\0015\6_\0005\a^\0=\4\23\a4\b\3\0009\t\18\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\a`\6>\6\a\0059\5>\0015\6c\0005\ab\0003\ba\0=\b\n\a4\b\3\0009\t\v\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\ad\6>\6\b\0059\5e\0015\6i\0005\af\0005\bg\0009\t\f\2>\t\2\b=\b(\a5\bh\0009\t\v\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\aj\6>\6\1\0059\5e\0015\6o\0005\al\0003\bk\0=\b\n\a=\3\23\a5\bn\0009\tm\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\ap\6>\6\2\0059\5q\0015\6s\0005\ar\0004\b\3\0009\t\24\2>\t\1\b9\t\f\2>\t\2\b=\b\r\a=\at\6>\6\1\0052\0\0K\0\1\0\15BufferIcon\1\0\0\1\0\1\rprovider\15BufferIcon\21short_line_right\14SFileName\1\0\0\1\4\0\0\0\0\tbold\nwhite\1\0\0\0\15BufferType\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\17FileTypeName\14separator\6 \20short_line_left\16RainbowBlue\1\0\0\1\0\0\0\15DiffRemove\1\0\0\1\0\2\rprovider\15DiffRemove\ticon\n ï
\17DiffModified\1\0\0\vorange\1\0\2\rprovider\17DiffModified\ticon\t ï§\fDiffAdd\1\0\0\1\0\2\rprovider\fDiffAdd\ticon\n ï¾ \0\14GitBranch\1\0\0\1\4\0\0\0\0\tbold\1\0\1\rprovider\14GitBranch\fGitIcon\1\0\0\1\4\0\0\0\0\tbold\vviolet\1\2\0\0\tNONE\24check_git_workspace\28galaxyline.provider_vcs\1\0\1\14separator\6 \0\15FileFormat\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\15FileFormat\14separator\6 \15FileEncode\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\15FileEncode\14separator\6 \nright\19DiagnosticInfo\1\0\0\1\0\2\rprovider\19DiagnosticInfo\ticon\n ï \19DiagnosticHint\1\0\0\tcyan\1\0\2\rprovider\19DiagnosticHint\ticon\n ïª \19DiagnosticWarn\1\0\0\vyellow\1\0\2\rprovider\19DiagnosticWarn\ticon\n ï± \20DiagnosticError\1\0\0\1\0\2\rprovider\20DiagnosticError\ticon\n ï \fPerCent\1\0\0\1\4\0\0\0\0\tbold\1\2\0\0\tNONE\1\0\2\rprovider\16LinePercent\14separator\6 \rLineInfo\1\0\0\24separator_highlight\1\2\0\0\tNONE\1\0\2\rprovider\15LineColumn\14separator\6 \rFileName\1\0\0\1\4\0\0\0\0\tbold\ngreen\1\0\0\1\2\0\0\rFileName\rFileIcon\1\0\0\24get_file_icon_color!galaxyline.provider_fileinfo\1\0\1\rprovider\rFileIcon\rFileSize\1\0\0\afg\14condition\1\0\1\rprovider\rFileSize\vViMode\1\0\0\1\4\0\0\0\0\tbold\bred\1\0\0\0\15RainbowRed\1\0\0\14highlight\abg\tblue\rprovider\1\0\0\0\tleft\0\1\0\v\vviolet\f#a9a1e1\vyellow\f#fabd2f\bred\f#ec5f67\tblue\f#51afef\vorange\f#FF8800\fmagenta\f#c678dd\ngreen\f#98be65\abg\f#202328\rdarkblue\f#081633\afg\f#bbc2cf\tcyan\f#008080\1\4\0\0\rNvimTree\nvista\tdbui\20short_line_list\fsection\15galaxyline\frequire\0")()
-- Config for: nvim-tree.lua
loadstring("\27LJ\2\nÓ\3\0\0\3\0\16\0%6\0\0\0009\0\1\0)\1\1\0=\1\2\0006\0\0\0009\0\1\0)\1\1\0=\1\3\0006\0\0\0009\0\1\0)\1\1\0=\1\4\0006\0\0\0009\0\1\0)\1\1\0=\1\5\0006\0\0\0009\0\1\0)\1\1\0=\1\6\0006\0\0\0009\0\1\0)\1\1\0=\1\a\0006\0\0\0009\0\1\0005\1\n\0005\2\t\0=\2\v\1=\1\b\0006\0\0\0009\0\1\0005\1\r\0005\2\14\0=\2\15\1=\1\f\0K\0\1\0\bgit\1\0\5\vstaged\bâ\runstaged\bâ\14untracked\bâ
\frenamed\bâ«\runmerged\bâ \1\0\2\fsymlink\bï\fdefault\bï
\20nvim_tree_icons\tedit\1\0\2\16edit_vsplit\6s\15edit_split\6i\1\3\0\0\t<CR>\6l\23nvim_tree_bindings\27nvim_tree_allow_resize\23nvim_tree_tab_open\21nvim_tree_git_hl\27nvim_tree_quit_on_open\25nvim_tree_auto_close\29nvim_tree_indent_markers\6g\bvim\0")()
-- Conditional loads
-- Load plugins in order defined by `after`
vim.cmd [[ packadd nvim-treesitter-textobjects ]]
END
function! s:load(names, cause) abort
call luaeval('_packer_load_wrapper(_A[1], _A[2])', [a:names, a:cause])
endfunction
" Command lazy-loads
command! -nargs=* -range -bang -complete=file Prettier call s:load(['vim-prettier'], { "cmd": "Prettier", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> })
command! -nargs=* -range -bang -complete=file Telescope call s:load(['telescope.nvim'], { "cmd": "Telescope", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> })
command! -nargs=* -range -bang -complete=file Format call s:load(['formatter.nvim'], { "cmd": "Format", "l1": <line1>, "l2": <line2>, "bang": <q-bang>, "args": <q-args> })
" Keymap lazy-loads
augroup packer_load_aucmds
au!
" Filetype lazy-loads
au FileType javascriptreact ++once call s:load(['nvim-colorizer.lua'], { "ft": "javascriptreact" })
au FileType typescript ++once call s:load(['nvim-colorizer.lua'], { "ft": "typescript" })
au FileType typescriptreact ++once call s:load(['nvim-colorizer.lua'], { "ft": "typescriptreact" })
au FileType vue ++once call s:load(['nvim-colorizer.lua', 'vim-vue'], { "ft": "vue" })
au FileType lua ++once call s:load(['nvim-colorizer.lua'], { "ft": "lua" })
au FileType vim ++once call s:load(['nvim-colorizer.lua'], { "ft": "vim" })
au FileType html ++once call s:load(['nvim-colorizer.lua'], { "ft": "html" })
au FileType css ++once call s:load(['nvim-colorizer.lua'], { "ft": "css" })
au FileType sass ++once call s:load(['nvim-colorizer.lua'], { "ft": "sass" })
au FileType scss ++once call s:load(['nvim-colorizer.lua'], { "ft": "scss" })
au FileType javascript ++once call s:load(['nvim-colorizer.lua'], { "ft": "javascript" })
" Event lazy-loads
au BufReadPre * ++once call s:load(['indent-guides.nvim', 'git-blame.nvim', 'vim-smoothie', 'vim-cursorword', 'delimitMate', 'gitsigns.nvim'], { "event": "BufReadPre *" })
au BufNewFile * ++once call s:load(['indent-guides.nvim', 'git-blame.nvim', 'vim-smoothie', 'vim-cursorword', 'delimitMate', 'gitsigns.nvim'], { "event": "BufNewFile *" })
au InsertCharPre * ++once call s:load(['vim-vsnip', 'vim-vsnip-integ'], { "event": "InsertCharPre *" })
" Function lazy-loads
augroup END
catch
echohl ErrorMsg
echom "Error in packer_compiled: " .. v:exception
echom "Please check your config for correctness"
echohl None
endtry
Thanks! I'll see if I can figure out what's taking so much time. If you get a chance to experiment, the one potentially big difference I noticed is that your dein
config loads nvim-treesitter
- and, by extension, your treesitter
config and the plugins which load after nvim-treesitter
(looks like just nvim-treesitter-textobjects
?) on BufRead
, whereas they are eagerly loaded in packer
. In my experience, treesitter
is pretty expensive to load, so this may account for part of the time difference.
Regardless, I'll try to clone your setup and do some more in-depth profiling once I get a chance (though this probably won't be too soon).
Thanks again!
OK,thinks,I agree you with nvim-treesitter
, it's effect no more 10 ms
and I use icon font for dashboard-nvim
, I think it has something to do with this,i well delete icon font test again,
Thanks for you help!
It seems because I compile the config code.
I change config
config = require("plugin-config.nvim-colorizer")
to config = [[require("plugin-config.nvim-colorizer")]]
startup time drop to 63ms.
thanks.
it is not problem for me now
Very strange. You did not alter the colorizer config code at all, except to change it from a module that returns a function to a module that directly runs the function's code? I would not expect there to be so large a performance difference between using loadstring
or not...
I don't know, now I lazy load more plugins. some plugins is changed
I was also curious about this since I'd also noticed a drop in my startup time and done some profiling with plenary's profile module. I don't think it relates to packer tbh since I rewrote most of my config in lua and added quite a few new plugins, I tried moving my configs from plain requires to strings but don't see a consistent drop in startup time, I'd almost be glad if it was this since my current startup time is about 160ms
, 70ms
ish of which is spent in packer_compiled.vim
Yeah, I have not found a significant difference in startup time between strings or loadstring
functions. packer_compiled
often takes a while because it's loading so many other files (if you have a lot of config
/setup
keys); the best ways I've found to profile this are either (1) sequentially commenting out config
values in packer_compiled
and re-running startup timing or (2) temporarily moving each config value to its own file in plugin
, which helps get a more useful, granular breakdown of startup timing.
I wonder if I should add an option to insert profiling code in packer_compiled
, e.g. that activates if a certain environment variable is present? It could time each "section" (e.g. requires, making the packer_plugins
table, making commands/autocommands, running setups and configs and conds, etc.) and output a report.
fwiw, I currently get a startup time of about 60-65ms total, though I'm using relatively few plugins (44 at the moment) and have taken a lot of care to defer what I can to (mostly command-based) lazy loads.
I also noticed that plenary
in particular has a substantial startup cost from loading neorocks
(and have made a PR to optionally disable this: https://github.com/nvim-lua/plenary.nvim/pull/77). I wonder if it's worth looking at how much the package.path
modifications in packer_compiled
cost, though - as we statically determine the path additions at compile time - I doubt it's as expensive as neorocks
.
I wonder if I should add an option to insert profiling code in packer_compiled, e.g. that activates if a certain environment variable is present? It could time each "section" (e.g. requires, making the packer_plugins table, making commands/autocommands, running setups and configs and conds, etc.) and output a report.
This would be very cool 😍 I really like to know when adding plugins what the cost of the plugin will be to my startup time i.e. should I lazy load it or not, do I need it if it's this costly time wise etc. Atm this feels a little obscured because most startup time plugins I don't think report lua plugin costs correctly or maybe just not in aggregate.
Was actually just thinking of trying find a way locally to use :profile
on packer_compiled.vim
although that needs to be run before startup ideally and profile is triggered when vim is already loaded
tbh the actual number now isn't really a blocker at all it's more me being obsessive but I think a consistent way to know when you're sacrificing startup time and how much would be super useful just so you can make decisions about what to keep and how to load it. I tried to jerry rig something with plenary.profile
but this will only profile lua code you can inject the profile functions into short of messing with require which I'd rather not do
Atm this feels a little obscured because most startup time plugins I don't think report lua plugin costs correctly or maybe just not in aggregate.
Yeah, I made https://github.com/nvim-lua/wishlist/issues/15 for this reason (though nobody's taken it up yet/I don't have time to do it myself right now.)
Was actually just thinking of trying find a way locally to use :profile on packer_compiled.vim although that needs to be run before startup ideally and profile is triggered when vim is already loaded
I think the easiest way to do this would be to insert vim.fn.reltime
/vim.fn.reltimestr
calls around each "section". The biggest question to me is whether this is better always inserted and evaluated only if there's an env var set (which imposes some cost when you're not profiling) or instead only inserting this if you run a special "PackerCompile profile" command or something (which means more recompilation).
Separately, I should at some point take a look through dein
to see if there are any clever tricks packer
can adapt.
I think the easiest way to do this would be to insert vim.fn.reltime/vim.fn.reltimestr calls around each "section". The biggest question to me is whether this is better always inserted and evaluated only if there's an env var set (which imposes some cost when you're not profiling) or instead only inserting this if you run a special "PackerCompile profile" command or something (which means more recompilation).
will checking the existence of an env var really cost that much? it could just be checked once at the beginning of the file, and only then does it do any evaluation. Although on the other hand profiling shouldn't be something that makes daily usage slower, tbh if a user is wanting to profile stuff they'd likely be fine doing a bit more work, but also I can think of it being a nice addition for packer to have some configurable option that reported plugin costs over a configurable threshold
It's not so much the cost of checking for the env var as it is the cost of the extra function calls to record timing info. I've started an implementation in #221 that I think has potential, though - it makes the time()
function a NOP if the env var isn't present.
Just a suggestion, but there could be a parameter passed to PackerCompile
which would create compile file with profiling functions.
Would be good to also print some message to users reminding about 'slower' compiled file being in use.
Was just about to say something similar maybe if it turns out that it adds some expense (only if it's significant) there could be an option to prevent compiling the profiling logic in, but if it's a NOP then shouldn't cost anything significant so might be a premature optimisation 🤷🏿
@cloggier: Yup, that was the second alternative I proposed ("or instead only inserting this if you run a special "PackerCompile profile" command or something (which means more recompilation)")
Hi @wbthomason, I have a similar problem in the startup time.
As shown in figure above, Sourcing packer_compiled.vim take a very long time, and this is my packer_compiled.vim
file:
https://gist.github.com/yech1990/41db0d1dc516102a5b36079078b8b73d
Could you help me to solve this the problem?
@yech1990 I think performance issues are very contextual, your load time looks like it's 42ms
which is like half mine but it depends heavily on how many plugins you use which you are lazy loading and not? is this time markedly different to other plugin managers you've used? 42ms in and of itself isn't a bad amount of time depends on how it relates to what it used to be for example?
EDIT: Note that with packer a lot of the loading is shifted to the packer_compiled.vim
so things get concentrated in that file so it's not as clear what plugins might actually be slowing you down. @wbthomason can correct me if I'm wrong on this point
Thank you @akinsho, 42ms is fine, but when using the same configurations on a remote server. This number will make difference.
@yech1990 sorry I don't think my point was entirely clear. I think it would be easer to debug if this issue is specific to packer if you provide more information on top of just what the startup time is most importantly what startup time do you see with other plugin managers. If the startup time is x
ms across multiple package managers then the plugins are the problem. If you use try vim-plug
for example and the startup time is half or reduced significantly then it could point more to something specific to packer
Thank you @akinsho. Sorry about that, I will test other plugin managers first.
@yech1990: I will say that I don't see anything unusual in your packer_compiled.vim
, which leads me to suspect this is an issue with the particular plugins you're using/config code you run. I could definitely be wrong about this, but - as @akinsho says - we really need something to compare to (using a different plugin manager but the exact same set of plugins, lazy-loads, and configuration code) to determine if this is a packer
problem or not.
nvim version:
problem: startup time exceed 200ms
sartup Info:
and my plugins config:
i'm a new vimer, if it a stupid question, i'm sorry for this. thinks