在_vimrc文件中使用if语句?

时间:2010-12-10 06:43:19

标签: configuration-files vim

我尝试在我的vim配置文件中创建一个函数,这样我就可以根据文件类型“编译和运行”(我主要使用Fortran,C和Python)。除了每次运行编译后的可执行文件之后,它确实有效,我的vim底部会有一条通知说:

处理函数CompileRun时检测到错误: 第17行: E171:缺少:endif

我不知道“第17行”和“E171”是什么意思,因为它们无法与源文件或_vimrc文件相关,似乎if语句也已关闭。我没有找到答案就google了很多。我的功能如下:

map <F4> : call CompileRun()<CR>

func! CompileRun()

    if &filetype == 'fortran'
    exec "w"
    exec "!gfortran % -o %<"
    exec "!%<.exe"
    exec "i" 

    elseif &filetype == 'c'
    exec "w"
    exec "!gcc % -o %<"
    exec "!%<.exe"
    exec "i"

    elseif &filetype == 'python'
    exec "w"
    exec "!python %<.py"
    exec "i"
    endif
endfunc

1 个答案:

答案 0 :(得分:2)

可能是因为你的一个命令会抛出一些东西。

BTW,偏离主题:

  • 查看:make&makeprg
  • gnumake不需要任何单文件项目的makefile;因此,:make %<就足够了,也不需要指定任何&makeprg。 (它肯定适用于C,C ++,可能还有fortran)
  • :exec在您的通话中完全没用。
  • 您确定要在功能结束时执行:insert吗?试试没有这个电话。
  • 您可以将映射限制为普通模式。它不适用于其他模式,如=&gt;

    nnoremap <F4> :call Compile()<cr>