当触发SourcePre自动命令时,是否有某些方法可以读取传递给源的文件名?
例如:
au SourcePre */plugin/*.vim set runtimepath=/usr/share/vim/vim71/{INSERT-Plugin-Dir-Name}
source /root/.vim/bundle/minibufexpl.vim_-_Elegant_buffer_explorer/plugin/minibufexpl.vim
我想将此{INSERT-Plugin-Dir-Name}
替换为"minibufexpl.vim_-_Elegant_buffer_explorer"
答案 0 :(得分:2)
使用<afile>
获取所源文件的名称。您可以使用expand()
将其转换为完整路径并获取所需的位。例如,在您的行中:
source /root/.vim/bundle/minibufexpl.vim_-_Elegant_buffer_explorer/plugin/minibufexpl.vim
你可以这样做:
expand('<afile>:p:h:h')
:p
将其转换为完整路径(如果您执行cd /path/to/plugin
,:source filename.vim
);每个:h
剥离最后一条路径的一部分。
请注意,这不适用于:set
行。请改用:let-&
:
let &runtimepath='/usr/share/vim/vim71/' . expand('<afile>:p:h:h>')
请参阅:
:help SourcePre
:help expand()
:help :let-&