尝试创建创建新文件的vimscript函数

尝试创建创建新文件的vimscript函数,vim,Vim,到目前为止,我掌握的代码如下: command! -nargs=1 Nf call s:NewFile(<q-args>)<CR> function! s:NewFile(fp) :echom a:fp :e %:h/a:fp endfunction 命令-nargs=1 Nf调用s:NewFile() 作用s:新文件(fp) :echom a:fp :e%:h/a:fp 端功能 参数是正常传入的(我知道是因为echom语句) 当我运行诸如::Nf

到目前为止,我掌握的代码如下:

command! -nargs=1 Nf call s:NewFile(<q-args>)<CR>

function! s:NewFile(fp)
    :echom a:fp
    :e %:h/a:fp
endfunction
命令-nargs=1 Nf调用s:NewFile()
作用s:新文件(fp)
:echom a:fp
:e%:h/a:fp
端功能
参数是正常传入的(我知道是因为
echom
语句)

当我运行诸如:
:Nf test.py
之类的命令时,它会按其应该的方式回显
test.py
,但在创建文件本身时,它会将
a:fp
解释为文件名

如何将
test.py
解释为文件名(或更复杂的文件名,如
。/foo/bar/test.py
)?

这样尝试:

command! -nargs=1 Nf call s:NewFile(<q-args>)

function! s:NewFile(fp)
    echom a:fp
    execute "e " . expand("%:h") . "/" . a:fp
endfunction
命令-nargs=1 Nf调用s:NewFile()
作用s:新文件(fp)
回声a:fp
执行“e”。展开(“%:h”)。"/" . a:fp
端功能
%:h
需要交给
expand()
,以便从当前文件中提取路径。然后需要使用
execute
,因为命令的各个部分必须连接在一起。然后执行这个字符串

另外,您不需要在
命令末尾添加
命令。这仅在从映射调用函数(或命令)时才需要

脚本中不需要前导冒号。

可以这样尝试:

command! -nargs=1 Nf call s:NewFile(<q-args>)

function! s:NewFile(fp)
    echom a:fp
    execute "e " . expand("%:h") . "/" . a:fp
endfunction
命令-nargs=1 Nf调用s:NewFile()
作用s:新文件(fp)
回声a:fp
执行“e”。展开(“%:h”)。"/" . a:fp
端功能
%:h
需要交给
expand()
,以便从当前文件中提取路径。然后需要使用
execute
,因为命令的各个部分必须连接在一起。然后执行这个字符串

另外,您不需要在
命令末尾添加
命令。这仅在从映射调用函数(或命令)时才需要


脚本中不需要前导冒号。

谢谢,伙计!我对vimscript还是新手,所以你的写作帮助我了解了更多。@StarLlama关于Vim的更多问题,你可能想加入。当然,我不知道这个问题,但从现在起将用于所有Vim问题,伙计!我对vimscript还是新手,所以您的写作帮助我了解了更多。@StarLlama有关Vim的更多问题,您可能想加入。当然,我不知道这个问题,但从现在起将用于所有Vim问题