VIM 打造 Java IDE 1

    说到 VIM,网路上的教程真的是多如牛毛,大部分的教程作者都狂热的 VIM 爱好者,在他们眼里 VIM 是一切,他们用 VIM 上网,收发邮件,听音乐,发博客,刷微博……   

    但对于新手来说,这些教程非但不客观,还非常不容易上手,跟着它们做会遇到各种各样的问题。

    最近花了将近一个星期的时间才配置了一个 VIM 的 Java 的开发环境, 相对于 Eclipse 来说功能确实差了一点,但比起一般的文本编辑器来说,功能是相当的强大。这里感谢那些为 VIM 开发插件的大神们。

    网路上把 VIM 打造成 IDE 的教程很多,但如果说要把 VIM 打造成 Java IDE,网路上那些也仅仅是简单介绍安装两个插件就草草了事,真拿来做开发,有相当多的不足。

    下面就来讲讲如何将 VIM 打造成 Java IDE,不能说这个教程是最好,也最起码在细节方面符合一个 Java 开发者的要求了。

 

   

   写在前面

    在接触了 Ubuntu 之后,就决定了要在 VIM 和 Emacs 之间选择一个。VIM 和 Emacs 两个本来就都用过,快捷键都知道,只是不熟悉。

    在打算熟练其中一个的时候,开始选择是 Emacs。选择 Emacs 是由于 Dvorak 键盘,使用了四年了 Dvorak ,考虑到 VIM 在 Dvorak 下快捷键凌乱,所以选择了 Emacs 。

    但 Emacs 所有快捷键都是两个按键,通过 Ctrl / Alt / Shift 组合完成各种操作,在使用了一段时间之后,实在是适应不了,也就不了了之。

    后来工作中开始频繁使用 SSH / Telnet 登录 AIX / Unix,VI 接触多了开始渐渐习惯,也渐渐喜欢上了 VI 的各种操作。于是开始从 Emacs 转向 VIM。

    就目前的使用情况来看,Dvorak下 VIM 基本没有不习惯,所有的快捷键都还算比较合理,由于本人是先使用 Dvorak 后使用的 VIM ,对于QWERTY下的 VIM 有多舒服,也就没有发言权了。

    现在唯一的问题是:在 QWERTY 下,可以使用 替代 Esc 的方案在 Dvorak 下略有不顺手。

    现在的电脑是这样的局面:Ubuntu系统 + Dvorak键盘布局 + VIM 编辑器,当然 Eclipse 也是必备 IDE 。

 

 

    VIM 常用命令

    人们说 VIM 的魅力在于 VIM 的插件,表示赞同。但是如果你对 VIM 常用的命令不熟悉,请不要考虑使用 VIM 打造 Java IDE。请先把 VIM 作为平常的默认文本编辑器使用,熟悉一两个月 VIM 常用命令。

    VIM 命令很多,在这里列出一些本人工作中常用到的,也是非常常见的命令。

 

    移动命令

    h    光标向左移动

    l     光标向右移动

    j     光标向下移动

    k    光标向上移动

 

    插入命令

   a      光标移动至所在位置的后方,并进入插入模式

   A     光标移动至当前行的最后,并进入插入模式

   i       光标所在位置,进入插入模式

   o      光标移动至所在行的下一行,进入插入模式

   O     光标移动至所在行的上一行,进入插入模式

 

    删除命令

    x       删除一个光标所在处的字符

    3x     删除从当前光标开始,向后3个字符,以此类推:10x,20x……

    dd    删除光标所在的行

    3dd  删除光标所在行开始,向下3行,以此类推:10dd,20dd

    dw    删除光标所在处开始,到第一个空格之间的所有字符

    daw  删除光标所在处整个单词,往前数第一个空格(或 点 "." 或 括号 "(" ),往后数第一个空格(或 点 "." 或 括号 "(" )之间的所有字符.

 

    替换命令

    r    用输入的字符,替换光标所在位置的字符

  

    跳转命令

    3g    跳转到整个文本文件的第三行,以此类推:10g,20g,256g…… 需要配合显示文本行号功能一起使用。

    G     跳转到整个文件的末尾一行。

 

    查找命令

    /         然后输入字符,回车,会高亮查找到的内容。命令模式下输入 n 向下查找下一个需要查找的内容,N 向上查找上一个需要查找的内容。

    #         查找光标所在处的单词

    :nohl     取消查找当前关键字的高亮显示(不会永久关闭,只是当此查找高亮去除)

 

    撤销

    u     撤销刚才的操作,可多次撤销(后退)

    Ctrl + R    撤销刚才的撤销(前进)

 

    合并  

    J     合并当前行和下一行(去除当前行和下一行之间的空格)
 

    文本选择

    v     进入块模式,配合 j k h l,可以选中单个字符(以字符为单位进行选中)

    V     进入块模式,配合 j k ,可以选中多行(以行为单位进行选中)

 

    y    复制当前选中的字符或行进入 VIM 剪贴板

    p    粘帖 VIM 剪贴板中的内容

           注意:VIM 下所有删除操作包括 x ,dd, dw,都会将字符复制进入剪贴板

                     VIM 的剪贴板与系统剪贴板是相互独立的,想要直接使用系统剪贴板,可以这样:v 进入块模式,选中字符,然后  (”+y)(不包括括号,但是包括 + 号) 其中 “+ 是系统剪贴板的名称,y表示复制内容到系统剪贴板,当然,在系统中复制的内容如果想要粘帖到 VIM ,可以在命令模式下输入(”+p) ,“+ 表示系统剪贴板,p 表示粘帖。

 

    窗口命令

    Ctrl + w + h 表示光标移动到左边的分割窗口

    Ctrl + w + l  表示光标移动到右边的分割窗口

    Ctrl + w + j  表示光标移动到下面的分割窗口

    Ctrl + w + k  表示光标移动到上边的分割窗口  

            此命令在使用某些插件的时候会经常使用

   

    关闭保存

     ZZ 关闭当前分割窗口,如果当前窗口没有分割,则退出 VIM

     :q   退出 VIM

     :w   保存当前文件

     :wq  保存并退出

     

      以上是工作学习中使用 VIM 不可避免的常用命令。

      

 

    记事本 Java 开发目录结构

    使用记事本做 Java 开发,没有了 IDE 为我们合理的管理 Java 文件,我们就需要自己安排好文件的目录结构。

    我们当然也可以所有的文件都堆到一个文件夹里面,java / class / jar 都在一个文件夹里面,如果用到了内部类,那整个文件夹是相当的混乱。

    于是就参考了 Eclipse 的目录结构,将 .java文件 .class文件 .jar 文件分别分开放置。

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

    可以看到上面的目录结构:

    Troy工程名

    bin 存放编译的 class 文件

    src 存放所有的 java 文件

    lib  存放所有的第三方 jar 包

    如图:

VIM 打造 Java IDE 1_第1张图片VIM 打造 Java IDE 1_第2张图片

    开发的时候,首先建立 Troy(工程名文件夹),在 Troy 下建立 bin / lib / src 三个文件夹, Java 就是第三方 jar 包多,统统都放到 lib 目录下。

    然后在 src 目录下 自己建立包名,这里演示是 part2, 进入到 part2 目录建立一个 HelloWorld.java 文件

    如图:

VIM 打造 Java IDE 1_第3张图片

 

    相对来说,这样的目录结构对于 Java 开发是很清晰的,class文件 / Java文件 / jar文件都归类存放。

    这里需要注意的是,有主方法,也就是 main 方法的 java 文件的 package 必须和我们文件夹的名字一样。即,这里的 HelloWorld,有主方法,所在文件夹是 part2 ,第一行必须是 package part2,不能更改其它名字。如果是没有主方法的类,则 package 其它的名字也可以。这个也是为了配合 VIM 的特性和 Java 命令,需要注意的地方。

 

 

   关于 Javac 和 Java 

    抛开 IDE 做 Java 开发并不是第一次,大三到大四两年时间,所有的开发都是在 Notepad++ 上完成的,包括毕业设计。当时只有颜色高亮,没有任何提示,完全依靠 JavaAPI 和 原生的 Notepad++。

    回头想想这是一件痛苦的事情,但是作为初学,所带来的好出也是不言而喻,对 Java 基础类的结构变得非常的清晰。

    这里会遇到一个很大的问题(尤其是一开始就使用 Eclipse 或者 MyEclipse 或者其它 IDE 开发的同学),那就是 javac 命令编译 java 命令的问题。

    如果说把所有文件都堆到一个文件夹里去做 Java 开发,那也就完全没有问题。

    javac *.java 搞定!

    问题就出在,我们需要一个良好的目录结构,即上一部分讲到的目录结构。

    请问,如何编译 java 文件,才能即引入 lib 中的第三方 jar 包,又让 编译产生的所有 class 都在 bin 目录下?

    答案涉及 javac 的参数问题。

    先看编译命令:

           

 javac -cp ../../lib:../../bin -Djava.ext.dirs=../../lib -d ../../bin HelloWorld.java

   这里由于使用的系统是 Ubuntu ,所以目录之间使用的是 冒号隔开,如果是 windows ,请自行替为 ; 分号

   -cp ../../lib:../../bin  编译过程中需要引入 class 所在的文件夹的路径,linux用 冒号 分隔,windows 用 分号 分隔

   -Djava.ext.dirs=../../bin 告诉系统,引入的第三方 jar 包存放的目录,如有引用第三方 jar 包编译时会通过此参数到相应的路径下查找 

  -d ../../bin 编译后的 class 文件都存放到 ../../bin 目录,也就是 bin 目录下

  当通过编译后,bin 目录下,会出现一个 part2 文件夹,里面是 HelloWorld.class

 

   然后是运行命令:

              

java -cp ../../bin -Djava.ext.dirs=../../lib part2.HelloWorld

 

   这里也需要指定 class 的目录,jar 包的目录。特别需要注意的是 包名 part2.HelloWorld ,单单写 HelloWorld 则运行出错。

   还有一个注意点就是,上面的 ../../bin 写的是相对路径,相当于写死了。相对的是 HelloWorld 所在的目录,我们工作的目录一定要转移到 part2 目录中。把 part2 作为当前目录。当然,如果也可以选择 part3 ,也可以是你所建立的任何名字的文件夹。

   使用 Gvim 开发时也需要注意这一点。

   

   在了解了这些问题之后,来讲如何把 VIM 打造 Java IDE 才有基础也才有意义。

   下一章将重点讲一讲如何配置 VIM 的相关 Java 插件

   

'

你可能感兴趣的:(Gvim)