領先一步
VMware 提供培訓和認證,以加速你的進展。
了解更多你是 Eclipse 使用者嗎? 你是否想要一個快速且簡單的方式來搜尋你的工作區中的文字片段和模式? 那就繼續讀下去!
全新的「快速搜尋」功能已包含在剛發布的 Spring ToolSuite (STS) 3.3.0 和 Groovy Grails Tool Suite (GGTS) 3.3.0 中。 即使你不是 Spring 或 Grails 開發人員,你也可能會對此功能感興趣,因為它可以單獨安裝到純淨的 Eclipse 中。
你可以按下 CTRL+SHIFT+L (或 Mac 上的 CMD+SHIFT+L) 來開啟對話框
當然,如果你想使用滑鼠也可以,但是你的手完全不需要離開鍵盤。
如果你在 Eclipse 編輯器或視圖中選取了一段文字,當你開啟快速搜尋時,該字串將會自動輸入到搜尋框中。 開始輸入以替換它。 例如,你可以選取主控台中的日誌或錯誤訊息字串,以便快速搜尋它
如果沒有選取任何內容,則你上次的搜尋將會輸入到搜尋框中。 這在你重複搜尋相同模式時很有幫助。
那麼這怎麼可能呢? 老實說,我們獲得了很大的提升,因為現代硬體真的非常快。 快速的 CPU、大量的 RAM 和作業系統中良好的檔案系統快取,在使用高度最佳化的原生 Java RegExp 時非常有幫助。
故事中另一個更有趣的部分是,你「體驗」到的速度實際上是一種錯覺。 最壞的情況是,你可能會將一個唯一的搜尋詞彙貼到對話框中,並且必須等待幾秒鐘,讓它搜尋你工作區中的所有檔案。 但實際上,你不太常遇到這種最壞的情況。 因此,讓我們看看幕後使用的兩個「技巧」。 (注意:我並未聲稱發明了這些技術。 我確信它們以前已被用於提供反應靈敏的搜尋體驗。 本文是關於我如何使用這些技術為我自己和其他 Eclipse 使用者建立一個不錯的文字搜尋工具。)
技巧 1:非同步性
只要你輸入第一個字元,搜尋程序就會啟動,並開始搜尋與你的查詢相符的結果。 結果會在找到後立即顯示。 通常,單一字元搜尋會在幾乎任何檔案中找到許多相符項。 因此,對話框會立即填滿。 為了避免對話框爆炸,搜尋器會在達到約 200 個結果的限制時暫停。
當你輸入另一個字元時,搜尋詞彙會更新。 但是,搜尋詞彙不是從頭開始重新搜尋,而是在正在執行的搜尋程序內部更新。 這表示接下來的任何結果都將與新的搜尋詞彙相符。 但是,對於已經找到的結果呢? 嗯,它們遠非無用,我們知道它們已經包含新查詢的結果! 例如,如果我們輸入 "av",那麼任何包含 "av" 的內容也一定包含 "a"。 因此,我們只需要對舊查詢 "a" 的結果進行篩選,濾除不符合新查詢 "av" 的結果。 這比從頭開始重新搜尋要快得多,因為我們只需要篩選相對少量的記憶體內項目,而不是再次掃描檔案系統。 因此,隨著你的輸入,更新會在瞬間發生。
技巧 2:優先順序
第二個技巧是「優先順序」。 如果讓它運行,快速搜尋引擎最終會遍歷你工作區中的所有檔案。 但它會嘗試聰明地優先遍歷你可能更感興趣的檔案。 我們這樣做的方式並不是特別複雜。 我們只是根據目前在編輯器中開啟的檔案來設定優先順序。 最高優先順序分配給「目前作用中的編輯器」。 然後是在其他編輯器中開啟的檔案。 然後是與這些檔案位於相同資料夾中的檔案,依此類推。
這有兩個好處。 首先,它使搜尋更快地傳回有趣的結果。 其次,它使更有趣的結果出現在列表的頂部附近。
若要單獨安裝,你可以從 Eclipse Market place 取得 (搜尋 "Quick Search")。 或者你可以直接從更新站點安裝。 透過選單「Help >> Install New Software」開啟 Eclipse 安裝程式,並將更新站點 URL 貼到對話框中 (本文末尾)。 然後僅選取「Eclipse Quicksearch」功能,然後點擊「Install」按鈕。