我有一个插件(FindFile.vim)需要运行:FindFileCache .
每当我启动vim来收集文件缓存以便快速打开时..我必须在每次启动vim时运行它。
每次vim启动时,如何编写运行一次的命令?
答案 0 :(得分:123)
保留配置内容的最佳位置是 .vimrc
文件。但是,它来源太早,请检查:h startup
:
At startup, Vim checks environment variables and files and sets values
accordingly. Vim proceeds in this order:
1. Set the 'shell' and 'term' option *SHELL* *COMSPEC* *TERM*
2. Process the arguments
3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc*
4. Load the plugin scripts. *load-plugins*
5. Set 'shellpipe' and 'shellredir'
6. Set 'updatecount' to zero, if "-n" command argument used
7. Set binary options
8. Perform GUI initializations
9. Read the viminfo file
10. Read the quickfix file
11. Open all windows
12. Execute startup commands
如您所见,您的 .vimrc 将在插件之前加载。如果将:FindFileCache .
放入其中,则会发生错误,因为该命令尚不存在。 (一旦插件在步骤4中加载,它就会存在。)
要解决此问题,请不要直接执行命令,而是创建一个
自动命令。发生事件时,自动命令会执行某些命令。在这种情况下, VimEnter 事件看起来合适(来自:h VimEnter
):
*VimEnter*
VimEnter After doing all the startup stuff, including
loading .vimrc files, executing the "-c cmd"
arguments, creating all windows and loading
the buffers in them.
然后,只需将此行放在 .vimrc :
中autocmd VimEnter * FindFileCache .
答案 1 :(得分:76)
还有vim的-c标志。我在我的tmuxp配置中执行此操作以使vim以垂直拆分开始:
vim -c "vnew"
答案 2 :(得分:13)
创建一个名为~/.vim/after/plugin/whatever_name_you_like.vim
的文件并用
FindFileCache .
在:help 'runtimepath'
答案 3 :(得分:2)
要比其他答案更晚,但仍然只是在启动后,请使用.vimrc中的计时器。例如,.vimrc中的此代码在启动之后等待半秒钟,然后再设置变量。
function DelayedSetVariables(timer)
let g:ycm_filetype_blacklist['ignored'] = 1
endfunction
let timer=timer_start(500,'DelayedSetVariables')
(示例中的变量是来自YouCompleteMe插件的黑名单。我假设,插件异步启动其他一些进程然后创建变量,但是在vim启动时还没有准备好。变量不存在时我尝试在.vimrc,后文件或VimEnter事件中设置它。这特定于我的Windows系统,YCM文档说.vimrc应该用于设置选项。)
答案 4 :(得分:1)
将FindFileCache
放入.vimrc
。
自动加载命令不同,不适用于您的场景。