VIM:从SourcePre自动命令中传递给源的文件名?

时间:2011-02-14 09:46:12

标签: vim

当触发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"

1 个答案:

答案 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-&