如何在macvim中调用函数

时间:2014-09-04 16:19:28

标签: java vim macvim

我是macvim的新手。我和Janus安装了macvim。我尝试编译并运行java文件。为此,我尝试编写一个函数来收集.gvimrc文件中的所有命令。但是,当我在命令模式下运行它时,它说“E492:不是编辑器命令”。请告诉我如何实现这样的目的。 .gvimrc中的代码是

" define a java compile and run function
function! s:RunJava(var1)
  let str1=a:var1
  shell
  javac  str1.java
  java   str1
endfunction
command! -nargs=1 RunJava call s:RunJava(<f-args>)

并在命令模式下输入“:RunJava filename”

2 个答案:

答案 0 :(得分:4)

这样做更像vim的方法是使用:make

:使

  • 通过:compiler javac
  • 设置编译器
  • 可能最好将其添加到~/.vim/after/ftplugin/java.vim
  • 执行:make foo.java。这与javac foo.java
  • 相同
  • :make %制作当前文件
  • :make将填充quickfix列表中的任何错误。

快速修复列表

  • 使用:cnext:cprev在错误之间移动。
  • :copen在窗口中打开quickfix列表(:cclose关闭)
  • :cwindow仅在出现错误时打开quickfix列表窗口
  • 可能希望为:cnext和朋友使用更好的映射。我建议Tim Pope的unimpaired插件

运行构建

可悲的是,Vim没有本机方式来运行构建,但是你有选择:

  • 使用:!来运行构建。例如:!java foo:!java %<
  • 使用system()。例如let output = system('java ' . shellescape(filename))
  • 打开一个新缓冲区并读入stdout。例如:r !java foo
  • 通过<c-z>暂停vim并运行java foo

一起

如果你想把这一切都作为一个命令来做,你可以做出特殊的功能和命令。

function! s:RunJava(fname)
  compiler javac
  execute 'make ' . a:fname
  cwindow
  if getqflist() == []
    execute '!java ' . fnamemodify(a:fname, ':r')
  endif
endfunction

command! -nargs=1 -complete=file RunJava call s:RunJava(expand(<f-args>))

这将:make该文件,如果没有错误,它将通过:!java运行构建

如需更多帮助,请参阅:

:h :make
:h :compiler
:h quickfix
:h :cnext
:h :copen
:h :cwindow
:h :!
:h system(
:h :r!

答案 1 :(得分:0)

function! s:RunJava(var1)
  let str1=a:var1
  exec '!javac '.str1.'java'
  if !v:shell_error
    exec '!java '.str1
  endif
endfunction

function! s:RunJava(var1)
  let str1=a:var1
  let consoleOutput = system('javac', str1.'java')
  "here you can use the output if you like
  if !v:shell_error
      exec '!java '.str1
  endif
endfunction

所有代码均未经过测试

相关问题