日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

VIM 打造 Java IDE 2

發布時間:2023/12/31 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VIM 打造 Java IDE 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
'

??? 上一篇介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。