'

上一篇介绍了 VIM 常用命令和控制台编译 Java 文件相关参数问题。这一篇重点来介绍一下关于 VIM 的插件。

VIM 的插件众多,作为打造 Java IDE ,我们需要选择一些常用也是可以被称为 IDE 所必须具备的插件。

废话不多,Go。

  VIM Java IDE 插件

Pathogen:该插件用来管理Vim的插件,可以让插件的安装与卸载更加方便。配合Github和Submodule效果更佳。

NerdTree:该插件会生成工程目录树。

TagBar:该插件生成函数、变量列表。

UltiSnips:类似TextMate的snippets,是一个块补全的插件。除了 Java 还内置了市面上几乎所有流行语言的补全。也可以自定义。

vim-commentary:注释代码的插件。

syntastic:保存文件时检查语法的插件。每次保存时,编译当前 Java 文件,检查是否有语法错误。

delimitMate:成对生成(),{},[]。

buferexplorer:方便浏览buffer的插件。

TagHightlight:根据生成的Tag文件,高亮类、变量、函数和关键字。

vim-powerline:超有爱的状态栏

javacomplete: Java 补全插件,可以像 Eclipse 一样提示对象的函数,不过有些时候会提示不出来,不知道为什么。

这些就是这一周折腾的插件,其实也还有很多的插件,大家可以参考子龙山人的博客《打造属于自己的Vim神器》。

作为 Java 开发,个人觉得这些是相当足够,如果各位还有关于 Java 的插件提供,希望可以在网站下方留言。

插件简介

   Pathogen,这个插件属于 VIM 的基础插件。安装它之后,在安装上面推荐的插件是相当的方便。(这里默认是 linux 系统,如果是 windows 请查看插件 GitHub 相关介绍)

1. 将 pathogen.vim 复制到下面的文件夹下,

~/.vim/autoload/pathogen.vim

2.  控制台运行一下的命令:

mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim

3. 在 ~/.vimrc 中添加如下代码:

execute pathogen#infect()

重启 VIM 后便完成了 Pathogen 的安装,之后我们就可以方便安装以上推荐的所有插件了。这是

首先  cd ~/.vim/autoload/bundle 进到 bundle 目录中。记住,每次安装插件都需要 cd 到此目录。

NerdTree

cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git


TagBar:


cd ~/.vim/bundle
git clone https://github.com/majutsushi/tagbar


UltiSnips:

cd ~/.vim/bundle
git clone https://github.com/SirVer/ultisnips


vim-commentary:

cd ~/.vim/bundle
git clone https://github.com/tpope/vim-commentary


syntastic:

cd ~/.vim/bundle
git clone https://github.com/scrooloose/syntastic


delimitMate:

cd ~/.vim/bundle
git clone https://github.com/Raimondi/delimitMate


bufexplorer:

cd ~/.vim/bundle
git clone https://github.com/vim-scripts/bufexplorer.zip


TagHighlight:

cd ~/.vim/bundle
git clone https://github.com/magic-dot-files/TagHighlight


vim-powerline:

cd ~/.vim/bundle
git clone https://github.com/Lokaltog/vim-powerline


javacomplete:

cd ~/.vim/bundle
git clone https://github.com/vim-scripts/javacomplete


通过 Pathogen 可以很方便得安装插件。我们还需要到 GitHub 查看相关说明,是否需要在 ~/.vimsrc 中进行相关的插件配置。

安装完插件,下面来看看这些插件如何使用,和相关的配置。

NerdTree 

~/.vimrc 中添加如下代码:

      " About NERDTreenoremap :NERDTreeToggleautocmd vimenter * if !argc() | NERDTree | endif  "open a NERDTree automatically when vim starts up if no files were specifiedautocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

之后,按 F2 便可呼出 NerdTree ,一般打开 Java 文件后,NerdTree 固定在窗口左侧,可按 F2 关闭。

TagBar

~/.vimrc 中添加如下代码:

      " TagBar 自动生成参数和方法" Then the F8 key will toggle the Tagbar window.nmap :TagbarToggle

之后,按 F8 便可呼出 TagBar

syntastic

syntastic 需要重点说明,刚开始使用 syntastic 时发现只要是第三方 jar 包中的 class ,都无法识别,虽然编译可以通过,但代码检查报错也相当不爽。本来寻思着改 syntastic 源码,后来在官网看了关于 syntastic 的解释,了解到 syntastic 的原理。所谓代码检查,其实就是每次保存文件时,都进行 javac 编译当前文件,javac 会返回相应的错误内容, syntastic 会将错误信息加以分析,反映到 VIM 的文本上。了解了这些,我们就可以方便得使得 syntastic 接受第三方 jar 包了,也就是上篇提到的 javac 参数问题。

~/.vimrc 中添加如下代码:

      "syntastic 保存检查代码时候传入参数let g:syntastic_java_javac_args="-cp ../../lib:../../bin -sourcepath ../../bin -Djava.ext.dirs=../../lib -d ../../bin"

vim-commentary

块模式:v 命令选中需要注释的内容,gc 注释,取消注释也是同样的步骤。

V 命令,选中当前行,gc 注释当前正行内容,这个使用是最方便的,也是最多的。

bufexplorer

     命令模式:\be 跳转到缓冲区窗口,然后 选择需要的缓冲区回车

javacomplete

~/.vimrc 中添加如下代码:

      " 关于Java自动文件补全插件autocmd Filetype java set omnifunc=javacomplete#Completeautocmd Filetype java set completefunc=javacomplete#CompleteParamsInfinoremapinoremap" 在VIM编辑java文件时当敲入 . 时会出发autocmd Filetype java,javascript,jsp inoremap   .  .autocmd Filetype java,javascript,jsp inoremap   .  .

关于 javacomplete 开始使用时候,也发现对第三方 jar 包不能进行有效的提示,至少 import 时候没有提示会让人很难受。

经过对源代码的查看,发现提供提示功能的主要是 Relfection.class ,如果想要对第三方 jar 包提供提示支持,就需要自己重新编译 class 。

下载了 javacomplete 包,发现里面有一 Relfection.java 文件,我们需要修改它,然后重新编译出 Reflection.class 就可以实现对第三方 jar 包的提示支持了。

我们搜索整个文档,查找到 user classpath 可以定位到大概 155 行的位置如图所示:

然后我们紧跟这下面,就添加自己的代码,就是在 classpath 中增加 lib 目录。如图所示:

    // Troy_classpathString troyPath = System.getProperty("user.dir") ;String[] troyLib = troyPath.split("/") ;StringBuilder sb = new StringBuilder() ;for (int i=0; i         sb.append(troyLib[i] + "/") ;   }troyPath = sb.append("lib").toString() ;File[] troyFile = new File(troyPath).listFiles() ;for (int i=0; i         if (!troyFile[i].exists())continue;if (troyFile[i].toString().endsWith(".jar") ||troyFile[i].toString().endsWith(".zip"))htClasspath.put(troyFile[i].toString(), "");else {if (troyFile[i].isDirectory())htClasspath.put(troyFile[i].toString(), "");}}

解释一下,String troyPath = System.getProperty("user.dir") ; 得到的是的当前目录,也就是点( . ) ,也就是我们在终端打开 gvim 时所在的目录。

举例,我们在 cd ~/workplace_vim/Troy/src/part2 ,然后 gvim 命令打开 gvim ,troypath 得到的就是 ~/workplace_vim/Troy/src/part2 .

紧跟着随后的代码,都是 java 的基础部分内容,不做过多解释,还得再重复一下我们所约定的目录结构:(lib 在 ~/workplace_vim/Troy/lib )

Troy
|-------bin
|         |-------part1
|         |-------part2
|                   |-------HelloWorld.class
|-------lib
|-------src
          |-------part1
          |-------part2
                    |-------HelloWorld.java

修改完 Relfection.java ,我们编译一下 javac Reflection.java 得到 Reflection.class 替换官方的 .class 文件。
发现,已经可以提供对第三方 jar 包的提示支持了,虽然在很多时候方法还是提示不出来,但是至少 import 包可以提示没有问题。

最近也会再想办法实现对第三方 jar 包里面方法的提示,如完成,会立刻更新上来。

至此为止,已经把 VIM 的所有插件都已经讲完了,其实想要配置开发环境,也就是插件的问题,只要插件都 OK ,剩下的就是熟练就行。

插件配置完成后,还有关于 ~/.vimrc 需要配置一下。

    " 一键编译java文件map <F5>:!cd %:p:h && java -cp ../../bin -Djava.ext.dirs=../../lib %:p:h:t.%:p:t:rmap <F4>:!cd %:p:h && javac -cp ../../lib:../../bin -sourcepath ../../bin -Djava.ext.dirs=../../lib -d ../../bin *.java

添加以上配置后,F5 是运行当前文件。F4 是编译当前目录下的所有 java 文件。

这里说明一下为什么有了 syntastic 插件,我们还需要 F4 编译。我们知道syntastic 插件安装完成后,每次 :w 就会自动编译当前编辑的 java 文件,如果没有错误爆出,则 class 文件其实已经编译好了,那为什么还需要添加 F4 编译 *.java 呢。

原因是这样的,在同一个包下我们新建一个 class B ,又新建一个 class A,然后 class A 中引用了 class B ,class B 中引用了 class A,这个时候,我们编译 A 会提示找不到 class B,编译 B 会提示找不到 class A 。相当于死循环。遇到这种情况,我们不能分开编译 A 和 B ,我们需要一起编译他们俩。也就是 javac *.java 就可以了,这个问题,网络上找了很久没有找到答案,有人说,代码写得有问题,通过改代码来解决,最后也是自己尝试解决。 使用 Eclipse 来做开发久了,编译这方面的知识会产生一个盲区。

也并不是说 Eclipse 不好,只是非常推荐新人在刚开始时候,不要使用 Eclipse 或者其它的任何 IDE , GVIM / Emacs / Notepad++ / UG / EverEdit / EditPlus 都可以是很好的选择,至于 windows 自带的记事本还是算了,至少找一个支持颜色高亮的编辑器。然后在控制台使用 javac 编译,java 运行。新手还是以学习为主,不需要赶进度。Eclipse 确实效率高,但学习的时候,还是任何事都亲历亲为一下。Eclipse 为我们做了大部分工作,以至于很多年之后,如果不去刻意学习,我们会对于 java 编译等等的一些问题一片空白。

现在已经完全的把工作环境从 Eclipse 移植到 GVIM ,只要进度能更得上,其实用什么编码都无所谓。

使用 VIM ,还是强烈推荐 linux 系统,做 Java 开发,也强烈建议尽早的接触 linux 。推荐一下 Ubuntu 吧,在 linux 里面,Ubuntu 占有非常重要的一席地位,作为桌面版本的 linux ,界面美观,使用起来也很方便,主要上手相对比较容易。对于还没有接触过 linux 又有意愿尝试的朋友,建议安装。

'

VIM 打造 Java IDE 2相关推荐

  1. VIM 打造 Java IDE 1

    说到 VIM,网路上的教程真的是多如牛毛,大部分的教程作者都狂热的 VIM 爱好者,在他们眼里 VIM 是一切,他们用 VIM 上网,收发邮件,听音乐,发博客,刷微博-- 但对于新手来说,这些教程非但 ...

  2. Neovim 打造 Java IDE

    Neovim 打造 Java IDE 当你习惯了 Vim 文本编辑器,你就习惯了 Vim 文本编辑器(

  3. 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...

  4. java vim ide_把VIM配置成IDE开发环境 | 学步园

    VIM常用命令 VIM命令图 VIM键盘布局图 VIM键盘布局英文 VIM键盘布局中文 将VIM配置成IDE(通过 VIM基本插件 和VIM配置文件) Ubuntu14下我的VIM IDE配置的效果图 ...

  5. 把vim打造成牛逼的C++ IDE

    把vim打造成牛逼的C++ IDE 对于windows上做C++开发的用户来说,vs为他们做了大量的工作,语法高亮.自动缩进.智能提示等等,当你happy的使用vs时,请记住一点,这是一个收费软件,虽 ...

  6. vim 打造属于自己的 IDE

    一.ctags 安装和配置 首先要说的是ctags是一个linux上很普遍的源码分析工具, 可以将代码中的函数变量等定义的位置记录在一个名称为tags的文件. 类似于数据库记录功能. tags文件的产 ...

  7. 谁说Vim不是IDE?

    话说操作系统.编程语言和编辑器似乎是程序员永恒的吐槽话题,技术发展了几十年,大家讨论起这几个"之争"还是充满愤怒.津津乐道.有人描述过Emacs和VI程序员,大家沿着不同的道路和目 ...

  8. Vim 中 Java 代码自动完成 - vim-javacomplete2

    用 Java 进行编码基本还是离不开 IntelliJ IDEA 或 Eclipse, 看别人完全用 Vim 进行 Javascript 项目编程很是眼红,估摸着能不能把 Vim 打造成一个更强的 J ...

  9. 图灵社区 : 阅读 : 谁说Vim不是IDE?(三)

    图灵社区 : 阅读 : 谁说Vim不是IDE?(三) Powerline 1.下载地址 https://github.com/Lokaltog/vim-powerline 2.功能说明 Powerli ...

最新文章

  1. python爬虫流程-Python:爬虫处理流程及网页解析
  2. 转:C# Thread
  3. Kettle转换作业50个案例代码
  4. scrum回顾_3步开好回顾会 | IDCF FDCC认证学员作品
  5. 苹果电脑 不能使用服务器发送邮件,解决Mac上无法使用的邮件问题的技术
  6. java web scala_Springboot与scala编写第一个web程序
  7. Azure Storage架构介绍
  8. js 生成二维码 vue项目
  9. ubuntuv20启动界面美化_光影魔术手---用‘傻瓜软件’美化图像
  10. java实现微信公众号群发文本消息
  11. python图形化编程 在线教程_使用Python Editor进行在线图形化编程
  12. 大二上,计组原理笔记(2)2.2 机器数的定浮点表示
  13. 重要接口关键词搜索——item_search-按关键字搜索淘宝商品
  14. 中国海洋捕捞市场投资前景分析及“十四五”规划建议报告2022年版
  15. 通信协议——Uart、RS232、RS485、SPI
  16. MATLAB 声音文件分析、处理。
  17. 软考高项之相关公式笔记
  18. 搜狗输入法android德语,搜狗输入法安卓多语言升级:小语种键盘数增至 90+ 日语假名九键上线...
  19. 服务器监控cacti
  20. FatFs文件系统Nandflash驱动函数详解

热门文章

  1. am335x 的MUSB控制器解读
  2. 2022年下半年网络规划设计师下午真题及答案解析
  3. 微信图片怎么添加竖排文字_如何给微信里的图片添加上文字和日期?
  4. Apache: 使用mod_deflate模块启用gzip功能
  5. 梦幻西游指定服务器怎么转入,怎么换梦幻西游的服务器
  6. 新版jdk安装,配置,测试详解
  7. 传智播客 崔希凡JavaWeb培训视频day19 客户管理系统原型
  8. java开发的岗位职责,写给正在求职的Java开发
  9. linux 音频架构绕过,linux音频驱动架构
  10. pr安装过程中突然出现错误代码16 Adobe Premiere Pro