献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员
序
文章源起于segmentfault论坛中的一个问题, 由于回答的有点尽性, 便转为文章.
题主应该是个Vim初学者, 这里不对题主报有任何贬义的情感, 谁都是从初学过来的. 问题主要是如何在Vim中编译运行Java代码, 勾起了我痛苦的回忆, 便借题发挥了.
更何况, 作为Vim教的一员, 自有维护我Vim脸面的义务, 最不能忍的便是质疑Vim的能力, 如xxx能这样, Vim能吗, 在我看来, 欺vim太甚.
虽然下面写的头头是道, 但我其实也写不出来, 轻拍 o(>﹏
答案
按题主的意思, 应该是编辑好代码后, 按一个快捷键直接自动编译并运行.
方案
在vim中, 可通过:!cmd来执行外部命令. 对应于题主写的单文件:
:!javac % #=> 编译, % 为正在编辑的文件名
:!java %:r #=> 运行, %:r 去掉文件名的后缀
原理如此, 只是接下来设定键映射. 在.vimrc文件中, 添加以下内容
autocmd BufNewFile,BufReadPre *.java nmap rn :!javac %:!java %:r
意为, 新建或读入.java文件前, 自动映射快捷钕rn到指定命令.
当然你也可以设置成两个快捷键. 这里并不推荐使用Command快捷键, 而是使用Leader. 而事实上, 终端的vim也不能映射Command, 只有MacVim可以.