我是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”
答案 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))
: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
所有代码均未经过测试