2011-12-20 125 views
2

e命令我写了一个函数当我后调用该函数来获取光标后如何获得函数的返回值:在Vim中

nmap <F12> :echo GetFullPath()<cr> 
function! GetFullPath() 
    let currentFile=expand("<cfile>") 
    let afterChangeSlash=substitute(currentFile,"/","\\","g") 
    let fullPath="e:\\Test\\".afterChangeSlash 
    return fullPath 
endfunction 

在当前文件的完整路径:echo命令,我得到预期的结果,如:

:echo GetFullPath() 

E:\测试\ test.h

然而,当我把它叫做后:E(编辑)命令:

:e GetFullPath() 

Vim的只是创建一个名为GetFullPath一个新文件()

为什么命令:电子将把一个函数调用字面上,而命令:echo不会呢?

回答

5

您可以使用:execute建立你的前命令字符串并执行它:

:exe "e ".GetFullPath() 

或者使用``=`语法扩展Vim表达式:

:e `=GetFullPath()` 

如果您检查帮助:edit:echo,你会注意到前者希望它的参数是文件名(字面意思),而:echo需要一个将被评估的表达式。

0

某些ex命令期望得到一个表达式,而另一些ex命令则希望得到一个字符串。为了使你的情况下使用exec:

nmap <F12> :exec 'e ' . GetFullPath() 
相关问题