我写了一个函数获取当前光标下文件的完整路径
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\test.h
但是,当我在 :e(edit) 命令之后调用它时:
:e GetFullPath()
Vim 只是创建一个名为 GetFullPath()
的新文件为什么命令 :e 会按字面意思处理函数调用而命令 :echo 不会?
最佳答案
您可以使用 :execute
构建你的 ex 命令字符串并执行它:
:exe "e ".GetFullPath()
或者使用 `=`扩展 Vim 表达式的语法:
:e `=GetFullPath()`
如果你查看 :edit
和 :echo
的帮助,你会注意到前者期望它的参数是文件名(字面意思),而 :echo
需要一个将被计算的表达式。
关于vim - 如何在:e command in Vim之后获取函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575712/