十大Intellij IDEA快捷鍵(附IDEA快捷鍵詳細列表及使用技巧)
Intellij IDEA中有很多快捷鍵讓人愛不釋手,stackoverflow上也有一些有趣的討論。每個人都有自己的最愛,想排出個理想的榜單還真是困難。以前也整理過Intellij的快捷鍵,這次就按照我日常開發時的使用頻率,簡單分類列一下我最喜歡的十大快捷-神-鍵吧。
十大Intellij IDEA快捷鍵
1 智能提示
Intellij首當其沖的當然就是Intelligence智能!基本的代碼提示用Ctrl+Space,還有更智能地按類型信息提示Ctrl+Shift+Space,但因為Intellij總是隨着我們敲擊而自動提示,所以很多時候都不會手動敲這兩個快捷鍵(除非提示框消失了)。(我個人修改了這個快捷鍵為ctrl + |
)用F2/ Shift+F2
移動到有錯誤的代碼,Alt+Enter
快速修復(即Eclipse中的Quick Fix功能)。當智能提示為我們自動補全方法名時,我們通常要自己補上行尾的反括號和分號,當括號嵌套很多層時會很麻煩,這時我們只需敲Ctrl+Shift+Enter就能自動補全末尾的字符。而且不只是括號,例如敲完if/for時也可以自動補上{}花括號。
最后要說一點,Intellij能夠智能感知Spring、Hibernate等主流框架的配置文件和類,以靜制動,在看似“靜態”的外表下,智能地掃描理解你的項目是如何構造和配置的。
2 重構
Intellij重構是另一完爆Eclipse的功能,其智能程度令人瞠目結舌,比如提取變量時自動檢查到所有匹配同時提取成一個變量等。尤其看過《重構-改善既有代碼設計》之后,有了Intellij的配合簡直是令人大呼過癮!也正是強大的智能和重構功能,使Intellij下的TDD開發非常順暢。
切入正題,先說一個無敵的重構功能大匯總快捷鍵Ctrl+Shift+Alt+T,叫做Refactor This。按法有點復雜,但也符合Intellij的風格,很多快捷鍵都要雙手完成,而不像Eclipse不少最有用的快捷鍵可以瀟灑地單手完成(不知道算不算Eclipse的一大優點),但各位用過Emacs的話就會覺得也沒什么了(非Emacs黑)。此外,還有些最常用的重構技巧,因為太常用了,若每次都在Refactor This菜單里選的話效率有些低。比如Shift+F6直接就是改名,Ctrl+Alt+V則是提取變量。
3 代碼生成
這一點類似Eclipse,雖不是獨到之處,但因為日常使用頻率極高,所以還是羅列在榜單前面。常用的有fori/sout/psvm+Tab即可生成循環、System.out、main方法等boilerplate樣板代碼,用Ctrl+J可以查看所有模板。后面“輔助”一節中將會講到Alt+Insert,在編輯窗口中點擊可以生成構造函數、toString、getter/setter、重寫父類方法等。這兩個技巧實在太常用了,幾乎每天都要生成一堆main、System.out和getter/setter。
另外,Intellij IDEA 13中加入了后綴自動補全功能(Postfix Completion),比模板生成更加靈活和強大。例如要輸入for(User user : users)只需輸入user.for+Tab。再比如,要輸入Date birthday = user.getBirthday();只需輸入user.getBirthday().var+Tab即可。
4 編輯
編輯中不得不說的一大神鍵就是能夠自動按語法選中代碼的Ctrl+W以及反向的Ctrl+Shift+W了。此外,Ctrl+Left/Right移動光標到前/后單詞,Ctrl+[/]移動到前/后代碼塊,這些類Vim風格的光標移動也是一大亮點。以上Ctrl+Left/Right/[]加上Shift的話就能選中跳躍范圍內的代碼。Alt+Forward/Backward移動到前/后方法。還有些非常普通的像Ctrl+Y刪除行、Ctrl+D復制行、Ctrl+</>折疊代碼就不多說了。
關於光標移動再多擴展一點,除了Intellij本身已提供的功能外,我們還可以安裝ideaVim或者emacsIDEAs享受到Vim的快速移動和Emacs的AceJump功能(超爽!)。另外,Intellij的書簽功能也是不錯的,用Ctrl+Shift+Num定義1-10書簽(再次按這組快捷鍵則是刪除書簽),然后通過Ctrl+Num跳轉。這避免了多次使用前/下一編輯位置Ctrl+Left/Right來回跳轉的麻煩,而且此快捷鍵默認與Windows熱鍵沖突(默認多了Alt,與Windows改變顯示器顯示方向沖突,一不小心顯示器就變成倒着顯式的了,冏啊)。
5 查找打開
類似Eclipse,Intellij的Ctrl+N/Ctrl+Shift+N可以打開類或資源,但Intellij更加智能一些,我們輸入的任何字符都將看作模糊匹配,省卻了Eclipse中還有輸入*的麻煩。最新版本的IDEA還加入了Search Everywhere功能,只需按Shift+Shift即可在一個彈出框中搜索任何東西,包括類、資源、配置項、方法等等。
類的繼承關系則可用Ctrl+H打開類層次窗口,在繼承層次上跳轉則用Ctrl+B/Ctrl+Alt+B分別對應父類或父方法定義和子類或子方法實現,查看當前類的所有方法用Ctrl+F12。
要找類或方法的使用也很簡單,Alt+F7。要查找文本的出現位置就用Ctrl+F/Ctrl+Shift+F在當前窗口或全工程中查找,再配合F3/Shift+F3前后移動到下一匹配處。
Intellij更加智能的又一佐證是在任意菜單或顯示窗口,都可以直接輸入你要找的單詞,Intellij就會自動為你過濾。
6 其他輔助
以上這些神鍵配上一些輔助快捷鍵,即可讓你的雙手90%以上的時間擺脫鼠標,專注於鍵盤仿佛在進行鋼琴表演。這些不起眼卻是至關重要的最后一塊拼圖有:
Ø 命令:Ctrl+Shift+A可以查找所有Intellij的命令,並且每個命令后面還有其快捷鍵。所以它不僅是一大神鍵,也是查找學習快捷鍵的工具。
Ø 新建:Alt+Insert可以新建類、方法等任何東西。
Ø 格式化代碼:格式化import列表Ctrl+Alt+O,可以幫你刪掉不需要引用的import,格式化代碼Ctrl+Alt+L。
Ø 切換窗口:Alt+Num,常用的有1-項目結構,3-搜索結果,4/5-運行調試。Ctrl+Tab切換標簽頁,Ctrl+E/Ctrl+Shift+E打開最近打開過的或編輯過的文件。
Ø 單元測試:Ctrl+Alt+T創建單元測試用例。
Ø 運行:Alt+Shift+F10運行程序,Shift+F9啟動調試,Ctrl+F2停止。
Ø 調試:F7/F8/F9分別對應Step into,Step over,Continue。
此外還有些我自定義的,例如水平分屏Ctrl+|等,和一些神奇的小功能Ctrl+Shift+V粘貼很早以前拷貝過的,Alt+Shift+Insert進入到列模式進行按列選中。
7 最終榜單
這榜單陣容太豪華了,后幾名都是如此有用,毫不示弱。
Ø Top #10切來切去:Ctrl+Tab
Ø Top #9選你所想:Ctrl+W
Ø Top #8代碼生成:Template/Postfix +Tab
Ø Top #7發號施令:Ctrl+Shift+A
Ø Top #6無處藏身:Shift+Shift
Ø Top #5自動完成:Ctrl+Shift+Enter
Ø Top #4創造萬物:Alt+Insert
太難割舍,前三名並列吧!
Ø Top #1智能補全:Ctrl+Shift+Space
Ø Top #1自我修復:Alt+Enter
Ø Top #1重構一切:Ctrl+Shift+Alt+T
8 附IDEA快捷鍵列表
-----------自動代碼--------
常用的有fori/sout/psvm+Tab即可生成循環、System.out、main方法等boilerplate樣板代碼
例如要輸入for(User user : users)只需輸入user.for+Tab
再比如,要輸入Date birthday = user.getBirthday();只需輸入user.getBirthday().var+Tab即可。代碼標簽輸入完成后,按Tab,生成代碼。
Ctrl+Alt+O 優化導入的類和包
Alt+Insert 生成代碼(如get,set方法,構造函數等) 或者右鍵(Generate)
fori/sout/psvm + Tab
Ctrl+Alt+T 生成try catch 或者 Alt+enter
CTRL+ALT+T 把選中的代碼放在 TRY{} IF{} ELSE{} 里
Ctrl + O 重寫方法
Ctrl + I 實現方法
Ctr+shift+U 大小寫轉化
ALT+回車 導入包,自動修正
ALT+/ 代碼提示
CTRL+J 自動代碼
Ctrl+Shift+J,整合兩行為一行
CTRL+空格 代碼提示
CTRL+SHIFT+SPACE 自動補全代碼
CTRL+ALT+L 格式化代碼
CTRL+ALT+I 自動縮進
CTRL+ALT+O 優化導入的類和包
ALT+INSERT 生成代碼(如GET,SET方法,構造函數等)
CTRL+E 最近更改的代碼
CTRL+ALT+SPACE 類名或接口名提示
CTRL+P 方法參數提示
CTRL+Q,可以看到當前方法的聲明
Shift+F6 重構-重命名 (包、類、方法、變量、甚至注釋等)
Ctrl+Alt+V 提取變量
-----------查詢快捷鍵--------
Ctrl+Shift+Backspace可以跳轉到上次編輯的地
CTRL+ALT+ left/right 前后導航編輯過的地方
ALT+7 靠左窗口顯示當前文件的結構
Ctrl+F12 浮動顯示當前文件的結構
ALT+F7 找到你的函數或者變量或者類的所有引用到的地方
CTRL+ALT+F7 找到你的函數或者變量或者類的所有引用到的地方
Ctrl+Shift+Alt+N 查找類中的方法或變量
雙擊SHIFT 在項目的所有目錄查找文件
Ctrl+N 查找類
Ctrl+Shift+N 查找文件
CTRL+G 定位行
CTRL+F 在當前窗口查找文本
CTRL+SHIFT+F 在指定窗口查找文本
CTRL+R 在 當前窗口替換文本
CTRL+SHIFT+R 在指定窗口替換文本
ALT+SHIFT+C 查找修改的文件
CTRL+E 最近打開的文件
F3 向下查找關鍵字出現位置
SHIFT+F3 向上一個關鍵字出現位置
選中文本,按Alt+F3 ,高亮相同文本,F3逐個往下查找相同文本
F4 查找變量來源
CTRL+SHIFT+O 彈出顯示查找內容
Ctrl+W 選中代碼,連續按會有其他效果
F2 或Shift+F2 高亮錯誤或警告快速定位
Ctrl+Up/Down 光標跳轉到第一行或最后一行下
Ctrl+B 快速打開光標處的類或方法
CTRL+ALT+B 找所有的子類
CTRL+SHIFT+B 找變量的類
Ctrl+Shift+上下鍵 上下移動代碼
Ctrl+Alt+ left/right 返回至上次瀏覽的位置
Ctrl+X 刪除行
Ctrl+D 復制行
Ctrl+/ 或 Ctrl+Shift+/ 注釋(// 或者/.../ )
Ctrl+H 顯示類結構圖
Ctrl+Q 顯示注釋文檔
Alt+F1 查找代碼所在位置
Alt+1 快速打開或隱藏工程面板
Alt+ left/right 切換代碼視圖
ALT+ ↑/↓ 在方法間快速移動定位
CTRL+ALT+ left/right 前后導航編輯過的地方
Ctrl+Shift+Backspace可以跳轉到上次編輯的地
Alt+6 查找TODO
---------------------其他快捷鍵-------------------
SHIFT+ENTER 另起一行
CTRL+Z 倒退(撤銷)
CTRL+SHIFT+Z 向前(取消撤銷)
CTRL+ALT+F12 資源管理器打開文件夾
ALT+F1 查找文件所在目錄位置
SHIFT+ALT+INSERT 豎編輯模式
CTRL+F4 關閉當前窗口
Ctrl+Alt+V,可以引入變量。例如:new String(); 自動導入變量定義
Ctrl+~,快速切換方案(界面外觀、代碼風格、快捷鍵映射等菜單)
--------------svn快捷鍵---------------
ctrl+k 提交代碼到SVN
ctrl+t 更新代碼
--------------調試快捷鍵---------------
其實常用的 就是F8 F7 F9 最值得一提的 就是Drop Frame 可以讓運行過的代碼從頭再來
alt+F8 debug時選中查看值
Alt+Shift+F9,選擇 Debug
Alt+Shift+F10,選擇 Run
Ctrl+Shift+F9,編譯
Ctrl+Shift+F8,查看斷點
F7,步入
Shift+F7,智能步入
Alt+Shift+F7,強制步入
F8,步過
Shift+F8,步出
Alt+Shift+F8,強制步過
Alt+F9,運行至光標處
Ctrl+Alt+F9,強制運行至光標處
F9,恢復程序
Alt+F10,定位到斷點
--------------重構---------------
Ctrl+Alt+Shift+T,彈出重構菜單
Shift+F6,重命名
F6,移動
F5,復制
Alt+Delete,安全刪除 Ctrl+Alt+N,內聯
IntelliJ IDEA使用技巧一覽表
在使用 InelliJ IDEA 的過程中,通過查找資料以及一些自己的摸索,發現這個眾多 Java 程序員喜歡的 IDE 里有許多值得一提的小竅門,如果能熟練的將它們應用於實際開發過程中,相信它會大大節省你的開發時間,而且隨之而來的還會有那么一點點成就感:) Try it !
1 、寫代碼時用 Alt-Insert ( Code|Generate… )可以創建類里面任何字段的 getter 與 setter 方法。
2 、右鍵點擊斷點標記(在文本的左邊欄里)激活速查菜單,你可以快速設置 enable/disable 斷點或者條件它的屬性。 3 、 CodeCompletion (代碼完成)屬性里的一個特殊的變量是,激活 Ctrl-Alt-Space 可以完成在或不在當前文件里的類名。如果類沒有引入則 import 標志會自動創建。 4 、使用 Ctrl-Shift-V 快捷鍵可以將最近使用的剪貼板內容選擇插入到文本。使用時系統會彈出一個含有剪貼內容的對話框,從中你可以選擇你要粘貼的部分。 5 、利用 CodeCompletion (代碼完成)屬性可以快速地在代碼中完成各種不同地語句,方法是先鍵入一個類名地前幾個字母然后再用 Ctrl-Space 完成全稱。如果有多個選項,它們會列在速查列表里。 6 、用 Ctrl-/ 與 Ctrl-Shift-/ 來注釋 / 反注釋代碼行與代碼塊。 -/ 用單行注釋標記(“ //… ”)來注釋 / 反注釋當前行或者選擇地代碼塊。而 Ctrl-Shift-/ 則可以用塊注釋標記(“ /*…*/ ”)把所選塊包圍起來。要反注釋一個代碼塊就在塊中任何一個地方按 Ctrl-Shift-/ 即可。 7 、按 Alt-Q ( View|Context Info )可以不需要移動代碼就能查看當前方法地聲明。連續按兩次會顯示當前所編輯的類名。 8 、使用 Refactor|Copy Class… 可以創建一個所選擇的類的“副本”。這一點很有用,比如,在你想要創建一個大部分內容都和已存在類相同的類時。 9 、在編輯器里 Ctrl-D 可以復制選擇的塊或者沒有所選塊是的當前行。 10 、 Ctrl-W (選擇字)在編輯器里的功能是先選擇脫字符處的單詞,然后選擇源代碼的擴展區域。舉例來說,先選擇一個方法名,然后是調用這個方法的表達式,然后是整個語句,然后包容塊,等等。 11 、如果你不想讓指示事件細節的“亮球”圖標在編輯器上顯示,通過按 Alt-Enter 組合鍵打開所有事件列表然后用鼠標點擊它就可以把這個事件文本附件的亮球置成非活動狀態。 這樣以后就不會有指示特殊事件的亮球出現了,但是你仍然可以用 Alt-Enter 快捷鍵使用它。 12 、在使用 CodeCompletion 時,可以用逗點( . )字符,逗號(,)分號(;),空格和其它字符輸入彈出列表里的當前高亮部分。選擇的名字會隨着輸入的字符自動輸入到編輯器里。 13 、在任何工具窗口里使用 Escape 鍵都可以把焦點移到編輯器上。 Shift-Escape 不僅可以把焦點移到編輯器上而且還可以隱藏當前(或最后活動的)工具窗口。 F12 鍵把焦點從編輯器移到最近使用的工具窗口。 14 、在調試程序時查看任何表達式值的一個容易的方法就是在編輯器中選擇文本(可以按幾次 Ctrl-W 組合鍵更有效地執行這個操作)然后按 Alt-F8 。 15 、要打開編輯器脫字符處使用的類或者方法 Java 文檔的瀏覽器,就按 Shift-F1 (右鍵菜單的 External JavaDoc )。 要使用這個功能須要把加入瀏覽器的路徑,在“ General ”選項中設置( Options | IDE Settings ),另外還要把創建的 Java 文檔加入到工程中( File | Project Properties )。 16 、用 Ctrl-F12 ( View | File Structure Popup )鍵你可以在當前編輯的文件中快速導航。 這時它會顯示當前類的成員列表。選中一個要導航的元素然后按 Enter 鍵或 F4 鍵。要輕松地定位到列表中的一個條目,只需鍵入它的名字即可。 17 、在代碼中把光標置於標記符或者它的檢查點上再按 Alt-F7 (右鍵菜單中的 Find Usages… )會很快地查找到在整個工程中使用地某一個類、方法或者變量的位置。 18 、按 Ctrl-N ( Go to | Class… )再鍵入類的名字可以快速地在編輯器里打開任何一個類。從顯示出來的下拉列表里選擇類。 同樣的方法你可以通過使用 Ctrl-Shift-N ( Go to | File… )打開工程中的非 Java 文件。 19 、要導航代碼中一些地方使用到的類、方法或者變量的聲明,把光標放在查看項上再按 Ctrl-B 即可。也可以通過按 Ctrl 鍵的同時在查看點上單擊鼠標鍵調轉到聲明處。 20 、把光標放到查看點上再按 Ctrl-Alt-B 可以導航到一個抽象方法的實現代碼。 21 、要看一個所選擇的類的繼承層次,按 Ctrl-H ( Browse Type Hierarchy )即可。也可以激活編輯器中的繼承關系視圖查看當前編輯類的繼承關系。22 、使用 Ctrl-Shift-F7 ( Search | Highlight Usages in File )可以快速高亮顯示當前文件中某一變量的使用地方。按 Escape 清除高亮顯示。 23 、用 Alt-F3 ( Search | Incremental Search )在編輯器中實現快速查查找功能。 在“ Search for: ”提示工具里輸入字符,使用箭頭鍵朝前和朝后搜索。按 Escape 退出。 24 、按 Ctrl-J 組合鍵來執行一些你記不起來的 Live Template 縮寫。比如,鍵“ it ”然后按 Ctrl-J 看看有什么發生。 25 、 Introduce Variable 整合幫助你簡化代碼中復雜的聲明。舉個例子,在下面的代碼片斷里,在代碼中選擇一個表達式:然后按 Ctrl-Alt-V 。 26 、 Ctrl-Shift-J 快捷鍵把兩行合成一行並把不必要的空格去掉以匹配你的代碼格式。 27 、 Ctrl-Shift-Backspace ( Go to | Last Edit Location )讓你調轉到代碼中所做改變的最后一個地方。 多按幾次 Ctrl-Shift-Backspace 查看更深的修改歷史。 28 、用 Tools | Reformat Code… 根據你的代碼樣式參考(查看 Options | IDE Setting | Code Style )格式化代碼。 使用 Tools | Optimize Imports… 可以根據設置(查看 Options | IDE Setting | Code Style | Imports )自動“優化” imports (清除無用的 imports 等)。 29 、使用 IDEA 的 Live Templates | Live Templates 讓你在眨眼間創建許多典型代碼。比如,在一個方法里鍵入 再按 Tab 鍵看有什么事情發生了。 用 Tab 鍵在不同的模板域內移動。查看 Options | Live Templates 獲取更多的細節。 30 、要查看一個文件中修改的本地歷史,激活右鍵菜單里的 Local VCS | Show History… 。也許你可以導航不同的文件版本,看看它們的不同之處再回滾到以前的任何一個版本吧。 使用同樣的右鍵菜單條目還可以看到一個目錄里修改的歷史。有了這個特性你就不會丟失任何代碼了。 31 、如果要了解主菜單里每一個條目的用途,把鼠標指針移到菜單條目上再應用程序框架的底部的狀態欄里就會顯示它們的一些簡短描述,也許會對你有幫助。 32 、要在編輯器里顯示方法間的分隔線,打開 Options | IDE Settings | Editor ,選中“ Show method separators ”檢查盒( checkbox )。 33 、用 Alt-Up 和 Alt-Down 鍵可以在編輯器里不同的方法之間快速移動。 34 、用 F2/Shift-F2 鍵在高亮顯示的語法錯誤間跳轉。 用 Ctrl-Alt-Down/Ctrl-Alt-Up 快捷鍵則可以在編譯器錯誤信息或者查找操作結果間跳轉。 35 、通過按 Ctrl-O ( Code | Override Methods… )可以很容易地重載基本類地方法。 要完成當前類 implements 的(或者抽象基本類的)接口的方法,就使用 Ctrl-I ( Code | Implement Methods… )。 36 、如果光標置於一個方法調用的括號間,按 Ctrl-P 會顯示一個可用參數的列表。 37 、要快速查看編輯器脫字符處使用的類或方法的 Java 文檔,按 Ctrl-Q (在彈出菜單的 Show Quick JavaDoc 里)即可。 38 、像 Ctrl-Q ( Show Quick JavaDoc 顯示簡潔 Java 文檔), Ctrl-P ( Show Parameter Info 顯示參數信息), Ctrl-B ( Go to Declaration 跳轉到聲明), Shift-F1 ( External JavaDoc 外部 Java 文檔)以及其它一些快捷鍵不僅可以在編輯器里使用,也可以應用在代碼完成右鍵列表里。 39 、 Ctrl-E ( View | Recent Files )彈出最近訪問的文件右鍵列表。選中文件按 Enter 鍵打開。 40 、在 IDEA 中可以很容易地對你的類,方法以及變量進行重命名並在所有使用到它們的地方自動更正。 試一下,把編輯器脫字符置於任何一個變量名字上然后按 Shift-F6 ( Refactor | Rename… )。在對話框里鍵入要顯示地新名字再按 Enter 。你會瀏覽到使用這個變量地所有地方然后按“ Do Refactor ”按鈕結束重命名操作。 41 、要在任何視圖( Project View 工程視圖, Structure View 結構視圖或者其它視圖)里快速 選擇當前編輯地部分(類,文件,方法或者字段),按 Alt-F1 ( View | Select in… )。 42 、在“ new ”字符后實例化一個已知類型對象時也許你會用到 SmartType 代碼完成這個特性。比如,鍵入 再按 Ctrl-Shift-Space : 43 、通過使用 SmartType 代碼完成,在 IDEA 中創建接口的整個匿名 implementation 也是非常容易的,比如,對於一些 listener (監聽器),可以鍵入 Component component; component.addMouseListener( new