vim - 如何在:e command in Vim之后获取函数的返回值

标签 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\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/

相关文章:

vim - 如何在 Vim 中运行终端?

regex - 如何突出显示所有行内单词重复项?

macos - YouCompleteMe 无需 MacVim

vim - 将 'find' 命令的输出重定向到 'vim'

java - 解析 '^M' 或 '\r' 字符行结尾的最佳位置/阶段

vim - 如何在 gVim 中编写 GUI 函数/命令?

vim - vim中如何删除最后一个空行?

javascript - 在 VIM 的脚本标签内正确缩进 javascript

vim - "set-window-option -g mode-keys vi"在 .tmux.conf 中不起作用

c++ - vim 跳转到结构/类定义