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 包
??? 如圖:
??? 開發的時候,首先建立 Troy(工程名文件夾),在 Troy 下建立 bin / lib / src 三個文件夾, Java 就是第三方 jar 包多,統統都放到 lib 目錄下。
??? 然后在 src 目錄下 自己建立包名,這里演示是 part2, 進入到 part2 目錄建立一個 HelloWorld.java 文件
??? 如圖:
?
????相對來說,這樣的目錄結構對于 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 插件
???
'總結
以上是生活随笔為你收集整理的VIM 打造 Java IDE 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机自带的游戏怎么删除吗,电脑自带游戏
- 下一篇: Java 上传图片MultipartFi