Vim 如何知道脚本路径 [无果]

Vim、Emacs配置和使用
回复
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Vim 如何知道脚本路径 [无果]

#1

帖子 自由建客 » 2011-04-26 23:09

我写了一个脚本,当库用。其中有个函数 Fun(),其操作需要根据调用方脚本路径确定。
例:

代码: 全选

>0< ~$ cat myscript.vim
call Fun()

>0< ~$ 
如何让 Fun() 知道 myscript.vim 的路径,前提是 myscript.vim 在安装时路径并不一定。
上次由 自由建客 在 2011-05-10 0:33,总共编辑 1 次。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: Vim 如何知道脚本路径

#2

帖子 fanhe » 2011-04-27 9:44

你不应该这样做的啊,你必须定下来脚本的位置啊

代码: 全选

:scriptname
是列出已载入的脚本,你可以过滤这个输出,但是既然说你都说不准脚本在什么位置,那这个方法无意义啊,除非你确保脚本名称唯一。

另外有个理论上的方法,在脚本内定义唯一的符号,其他脚本搜索这个唯一的符号,索引到这个唯一的符号所定义的文件的路径。
但是貌似我没发现vim有这个接口,可能是我没看到。

===============================================
看错了,你是想知道自己脚本的路径,那个简单啊

代码: 全选

expand('<sfile>')
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: Vim 如何知道脚本路径

#3

帖子 自由建客 » 2011-04-27 12:39

不是自己的,是别人的,是让自定义的库函数知道调用方的路径。
一种方法是修改自定义的库函数为 Fun(path) ,然后在 myscript.vim 中这样调用
call Fun(expand('<sfile>'))
但这会让接口复杂化,并非首选。
解释一下,我说 myscript.vim 安装位置不一定的意思是说,不能把路径硬编码进脚本。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: Vim 如何知道脚本路径

#4

帖子 fanhe » 2011-04-27 14:24

这个貌似没办法的
如果你调用方用的是全局变量,根本没有作用域信息
如果是局部于脚本的变量或者函数,可以获取个sid,然后找到sid对应的脚本位置
回复