如何让它在同一行中执行?

时间:2015-03-04 17:24:12

标签: vim

我试图在Vim中为Perl做一个简单的设置并使用它:

function! PerlEnvSetup()
    nnoremap <F10> :let f=expand("%")|vnew|execute '.!perl "' . f . '"'<CR>
endf

autocmd FileType perl :call PerlEnvSetup()<CR>

但是当我vim XX.pl时,底部的错误说:

Error detected while processing function PerlEnvSetup:
line    1:
E121: Undefined variable: f
E15: Invalid expression: '.!perl "' . f . '"'<CR>
Error detected while processing FileType Auto commands for "perl":
E488: Trailing characters

窗口分成两部分(除非我按F10,否则不应该发生)。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您所看到的是,|用于分隔命令(因此显式结束您的:nnoremap命令。

因此,您需要使用<Bar>下面的帮助所描述的特殊成语:h map_bar

答案 1 :(得分:0)

这是另一种选择:

function! PerlExecuteCurrentFile()
    let f=expand("%")
    vnew
    execute '.!perl "' . f . '"'
endf

function! PerlEnvSetup()
    nnoremap <F10> :call PerlExecuteCurrentFile()<CR>
endf