IDEA Intellij小技巧和插件

博客分類: 編程基礎

ideavim

使用IDEA Intellij已有兩年,在此羅列一下在實踐中覺得能有效提升開發效率的一些小技巧和插件。  1. 重設移動鍵 方向鍵和Home/End鍵離基鍵太遠,經常把手移過去其實很費時。所以建議重設到主鍵盤上。考慮到後面會提到的IdeaVim插件,所以最好使用類似Vim的方案。我個人的設定是:  Ctrl+H  ←  Ctrl+J  ↓  Ctrl+K  ↑  Ctrl+L  →  Ctrl+A  End (Vim中Shift+A是在行尾插入)  Ctrl+I  Home (Vim中Shift+I是在行首插入)  被沖掉的原本的快捷鍵可以設到Alt上(最常用的Ctrl+A全選和Ctrl+J Live Template)。當然你也可以把移動鍵設在Alt上,不過使用標準鍵盤時,左Ctrl可以用手掌來按(使用emacs的必備技能),非常方便。所以我個人喜歡把常用操作設到Ctrl上。  2. 好用的Select Word at Caret快捷鍵 在IDEA的Keymap中有Select Word at Caret這個動作,字面意思是“選中光標所在的單詞”,默認快捷鍵是Ctrl+W。但事實上,這個動作的實際操作是選中更上一層的語法結構。例如,如果你在一個字符串的一個單詞中,按一下Ctrl+W,會選中光標所在單詞。再按一下,會選中整個字符串的內容,不包括引號。再按一下,會選中包括引號的字符串。再按一下,會選中整個表達式(如果表達式含有括號,會逐層選中)。再按一下,會選中整個語句塊。再按一下,會選中整個方法。再按一下,會選中整個類。  3. Ace Jump插件 可以說Ace Jump和IdeaVim這兩個插件是我使用了Intellij後再也不想用eclipse的最主要原因。Ace Jump是一種從emacs上借鑑過來的快速光標跳轉方式,操作方式是:你用某個快捷鍵進入Ace Jump模式後,再按任一個鍵,當前屏幕中所有該字符都被打上一個字母標記,你只要按這個字母,光標就會跳轉到這個字符上。這種跳轉方式非常實用,你根本不用管當前光標在什麼位置,眼睛只需要盯着需要跳轉到的位置,最多三四下按鍵就能準確把光標定位,開始編輯。按道理這種功能非常容易實現,但偏偏到目前爲止我沒有在eclipse上找到類似插件。  安裝與使用:  在Intellij的Setting -> Plugins -> Browse repositories中查找acejump,可以找到兩個插件,AceJump和emacsIDEAs。AceJump是最純正的Ace Jump插件,功能單一,也比較穩定,但我個人感覺沒有emacsIDEAs好用。兩者最大的差異是,Ace Jump是先按鍵調出跳轉標記,再通過不同功能鍵(Ctrl,Shift,Alt等)配合書籤按鍵追加額外功能(例如從當前位置選中文本至書籤位置)。而emacsIDEAs是使用不同的快捷鍵進入不同的功能模式(例如跳轉到字符,跳轉到單詞,選中到標籤等)同時調出書籤標記,然後再按書籤按鈕實現跳轉。感覺emacsIDEAs的方式比較符合我的思維習慣。  如果選擇了AceJump插件,重啓Intellij後即可使用,默認快捷鍵是Ctrl+;(分號)。但我習慣將它重設到Alt+K。下面是使用AceJump的效果 

在AceJump模式下,按下N鍵,屏幕可見範圍內的字符N均被打上標記,按相應字母即可跳轉到該位置。  詳細使用方法可以看 http://johnlindquist.com/2012/08/14/ace_jump.html 的視頻。不過視頻是youtube上的,爲了方便牆內朋友,在這裏簡單列一下可追加的功能:  * 列出標籤後按回車鍵:對更外圍的字符進行標籤,當屏幕上相同字符太多,標籤不夠用時。離當前光標較遠的字符一開始時不會有標籤,你可以不停按回車鍵直到該字符被打標籤  * Shift+回車:對更內圍的字符進行標籤,當按回車鍵過了頭時使用  * Shift+標籤字母:從當前光標位置選中文本到書籤位置。  * Alt+標籤字母:在書籤位置選中一個單詞並調出自動補全菜單。  如果選擇了emacsIDEAs插件,由於默認快捷鍵使用了Meta鍵,在Windows下必須重設快捷鍵才能使用,我個人的方案是: 

在插件說明上就能看到詳細功能說明,在這裏簡單介紹一下,方便英文不好的童鞋:  所有AceJumpXXX快捷鍵都會進入AceJump模式,但按鍵調出書籤,再按書籤字母后會有不同效果  AceJumpChar : 跳轉到標籤  AceJumpCopy : 將光標當前位置到標籤處的文本複製到剪貼板  AceJumpCut  : 將光標當前位置到標籤處的文本剪切到剪貼板  AceJumpWord : 調出書籤時,只會匹配單詞的首字母,但可追加一些複製粘貼的指令。個人覺得不太好用,就不詳述了。有興趣可以看插件說明。  而CopyWithoutSelection與AceJump無關,是emacsIDEAs插件的另一個功能,用來快速把某些文本複製到剪貼板。按下快捷鍵後,可以再追加以下字母指定複製範圍:  w :光標所在單詞  s :光標所在字符串(包括引號)  l :光標所在行  b :光標所在語句塊({ } 所包含的內容)  q :光標所在字符串內容 (不包括引號)  a :由光標位置至行首  A :由光標位置至文件開頭  e :由光標位置至行尾  E :由光標位置至文件末尾  p :光標所在段落  並且,在按下CopyWithoutSelection快捷鍵後,可以加入一個或兩個空格來改變操作。加入一個空格爲剪切,加入兩個空格爲選中。例如:按下【Alt+C,空格,空格,w】 爲選中光標所在單詞。(不過使用IDEA原生的Ctrl+W更爲方便)  4. IdeaVim插件 另一個個人感覺非常好用的插件是IdeaVim,這個插件的作用是在Intellij中模擬Vim的操作方式。咋看上去,似乎是一個只有Vim的狂熱玩家纔會選用的插件。但事實上這個插件提供了一個非常實用功能,讓它成爲了我們這種普通開發者居家旅行的必備選擇。這個功能是,IdeaVim允許設置一個快捷鍵來激活或關閉IdeaVim模擬器,而且在激活或關閉時,會自動切換Keymap。也就是說,你在輸入大段代碼時,可以使用自己慣用的Keymap。在閱讀代碼,小範圍修改,或者進行一些重複性修改時,可以切換到Vim模式。甚至你可以把“關閉IdeaVim”看做“增強的Vim插入模式”。有了Vim普通模式下的各種功能,就可以省去記憶大量快捷鍵的苦惱,而且本來熟悉vim使用,是程序員遲早都要遇到的問題。  安裝配置:  在Setting -> Plugins -> Browse repositories中查找IdeaVim插件安裝即可。首次使用時,它會問你以哪個Keymap爲基礎創建Vim的Keymap。建議使用Default,否則一些自定義的快捷鍵可能會與Vim普通模式下一些按鍵衝突。然後在Setting -> Keymap中查找Vim Emulator,設定激活/關閉IdeaVim模擬器的快捷鍵,我設定爲Ctrl+;(分號)。注意你需要在你慣用Keymap和名爲Vim的Keymap上分別作同樣的設定(否則進入了Vim模擬器就退不出去,或者退出去了就進不回來)。默認Vim Emulator按鍵是Ctrl+Alt+V,會覆蓋掉很常用的Extract Local Variable(抽取局部變量)快捷鍵,因此強烈建議重設。另外,個人感覺AceJump比Vim常用的定位跳轉(f/F, /查找等)好用,建議設定其在Vim Keymap中的快捷鍵。  不熟悉Vim的朋友可在 http://sourceforge.net/projects/vimcdoc/files/pdf-manual/1.8.0/ 找到中文文檔(對應Vim版本7.3)。下面隨手列一些在IDEA下常用且有用的操作(也就是IDEA本身做起來不方便的),這些操作均在Vim普通模式下發起,注意大小敏感,大寫的字母可以按shift+字母輸入(不知道什麼是普通模式的朋友請看Vim文檔):  1. 在普通模式下輸入 :s/正則表達式/替換文本/g 可以在當前行範圍內查找替換。(在正常的IDEA中需要選中當前行後在當前選區查找替換)  2. 在普通模式下輸入 小數點 將在當前光標位置重複上一次修改操作。例如你在某一行進行了上述的查找替換,如果立即需要在另一行做同樣操作,把光標移動到該行按小數點即可。  3. yyp 複製當前行。 yy10p 複製當前行10次  4. u 撤銷修改 / Ctrl+R 重做修改  5. q加任何單個數字或字母,錄製後續操作,記錄到名爲該數字或字母的宏(Macro)中。在錄製狀態下按q結束錄製。@加某個已錄製的宏名(單個數字或字母),回放宏。錄製的宏只要不被覆蓋,會自動保存。重啓IDEA後仍然有效。(在正常的IDEA中使用宏需要進行菜單操作,不甚方便)  6. daw 刪除一個單詞,d$刪除至行尾,d0刪除至行首(包括縮進),d^刪除至行首(保留縮進),dd刪除當前行。刪除後按p可以複製刪除內容。  7. J 直接把下一行連接到本行末尾,去除縮進  8. % 跳到匹配的括號  9. 10ib<ESC> 插入10個b。(數字)i/a/o/O(字符串)<ESC> 可插入n個重複字符串,i在光標前插入,a在光標後插入,o在下一行插入,O在上一行插入。注意在IDEA默認情況下輸入“i字符”後會彈出自動補全菜單,需要多按一下ESC取消掉補全菜單。  10. 在一個數字上按ctrl+a,可將該數字加1.  按ctrl+x可將數字減1. 按(數字)ctrl+a,可將光標數字加上輸入的數字。  11.  ~ - 將光標下的字母改變大小寫。 g~aw - 改變當前單詞的大小寫。gU<空格> - 當前字母改大寫。gu<空格> - 當前字母改小寫。 gUaw - 當前單詞改大寫。 guaw - 當前單詞改小寫。 在字符串前面的引號上 gUf" - 字符串改大寫。  12. 行號G - 直接移動到某行。(使用IDEA的Ctrl+G會彈出對話框,且移動到的那行會自動居中,頗爲眼花)  13. H - 光標移動到屏幕第一行。 L - 光標移動到屏幕最後一行。 M - 光標移動到屏幕中間。 zz - 光標所在行居中。  當然這裏只是列出一些簡單的常用操作。Vim模擬器的玩法遠遠不止上述這些,有興趣但還不熟悉Vim的朋友閱讀文檔之餘也可以看看《Pratical VIM》這本書 http://www.itpub.net/forum.php?mod=viewthread&tid=1734891  5. Shortcut Translator插件 從其他IDE轉到Intellij時學習快捷鍵的插件。安裝後,按Ctrl+Shift+K調出快捷鍵翻譯對話框,選定你慣用的IDE keymap和需要學習的keymap,按下慣用keymap的快捷鍵,即可看到學習keymap上的對應快捷鍵。 

eclipse的ctrl+o 對應 IDEA default keymap的ctrl+F12  夜深,暫時先寫這些,後面想起來再補上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章