在.vimrc中对变量使用子串函数的方法?

2 投票
1 回答
1108 浏览
提问于 2025-04-15 23:35

我在几个电脑上都有gVim和一个便携版的Python,这些都存放在一个Dropbox文件夹里。每台电脑上Dropbox文件夹的位置都不一样。不过,我想设置我的.vimrc文件,让它能自动找到正确的Python文件夹,无论在哪台电脑上都能用。

比如说,我在C:\DropBox\gVimPortable里有gVim。

在我的.vimrc文件里,我写了以下内容:

let s:pp = 'C:\DropBox\PortablePython_1.1_py2.5.4'  " netbook  
if (has('win32') || has('win64')) && isdirectory(s:pp) 
    let $PATH .= ';' . s:pp 
endif 

有没有办法做到类似下面这样的呢?

let s:pp = $VIMRUNTIME.substring(0, regex.match(/gVimPortable/))."\PortablePython_1.1_py2.5.4" 
if (has('win32') || has('win64')) && isdirectory(s:pp) 
    let $PATH .= ';' . s:pp 
endif 

总之,我不想把Python运行环境的文件夹写死在代码里。它的位置总是和gVim应用程序相对固定。

1 个回答

2

我用strpart和strlen这两个函数完成了我需要的工作。

let s:pp = strpart($VIMRUNTIME, 0, strlen($VIMRUNTIME)-strridx($VIMRUNTIME, "DropBox")+1) . "\\Apps\\PortablePython_1.1_py2.5.4\\App"
if (has('win32') || has('win64')) && isdirectory(s:pp) 
    let $PATH .= ';' . s:pp 
endif 

上面的脚本会自动把python添加到与gVIM可执行文件相关的PATH环境变量中。

撰写回答