https://blog.csdn.net/weixin_32120857/article/details/112865250
今天來看一下編輯器自帶的文本搜索功能,快速地穿梭於海量的代碼之中
一個功能豐富且快速的搜索,在很多情況下甚至會比語言服務還要來得有用
單文件搜索
把光標放在編輯器當中,然后按下 Ctrl + F,就能夠快速地調出搜索窗口
調出搜索窗口的時候,編輯器就會把當前光標所在位置的單詞自動填充到搜索框中
與此同時,當前文件里和搜索關鍵詞相同的單詞都會被高亮出來
自動填充搜索關鍵詞的好處在於,當我們按下 Ctrl + F搜索這個單詞之后,還能夠立刻通過回車鍵或者shift+回車鍵 在所有搜索結果當中快速跳轉
這里需要注意的事情是,當開始搜索的時候,光標已經被移動到了搜索框當中,如果在這時候繼續打字的話,那原有的搜索關鍵詞將會被修改
如果希望找到搜索結果后,接下來就直接修改編輯器中的內容,那么就得將光標重新移動到編輯器當中
這種情況下,不妨換一個快捷鍵
首先將光標移動到我們想要搜索的單詞處,然后按下 F3,此時同樣調出了搜索框,但與前面Ctrl + F這個快捷鍵不同的是,這時光標依然是在編輯器當中,而不是在搜索框中
然后我們通過不斷按下F3就能夠在搜索結果之間自上而下地循環跳轉,這時只需直接打字就能對代碼進行修改了
如果想要在搜索結果里自下而上地跳轉,也是可以通過快捷鍵實現的,只需多增加一個 shift 鍵即可,也就是按下 Shift + F3來實現自下而上的跳轉
注意:在搜索框中打字的時候,搜索操作是自動觸發的,而無需再按下回車鍵去手動地執行搜索這個操作
除了搜索純文本以外,搜索框還支持多種不同的搜索方式
比如,在搜索框的最右側,就有三個配置按鈕
第一個是大小寫敏感
這個很好理解,就是在文檔中搜索關鍵詞的時候,搜索的結果是否要跟關鍵詞大小寫完全一致
默認情況下,VS Code 的搜索是不區分大小寫的,也就是說哪怕大小寫不一樣,也會算到搜索結果里去
但如果不想要這個特性,就可以點擊這個按鈕,或者按下上是 Alt + C來關閉它
第二個是全單詞匹配
有的時候我們搜索的單詞恰好是別的某個單詞中間的一部分,如果不希望這樣的結果出現在搜索結果中,那么就可以點擊這個按鈕或按下 Alt + W 來關閉它
第三個,就是正則表達式匹配了
當我們點擊這個按鈕或按下 Alt + R,就能夠打開正則表達式的支持,然后在搜索框中輸入正則表達式來搜索
要注意的是,編輯器中的這個搜索框,它里面的正則表達式使用的是 JavaScript 的正則引擎
這三個功能的快捷鍵的配置,它們分別使用了 Case、Word 和 Regular Expression 的第一個字母作為快捷鍵的一部分,若你知道是這幾個單詞,那對應的快捷鍵就不會容易忘了
除了這三個搜索設置以外,在搜索窗口關閉按鈕的左側,相信你還能看到一個特別的圖標
那這個按鈕的功能是什么呢?
我們可以先選中一段文本,然后按下 Ctrl+ F 調出搜索框,這之后點擊這個按鈕,就可以將這段文本的范圍設置為接下來的搜索區域
然后當我們在輸入框里輸入關鍵字后,編輯器就只會在這個區域里進行搜索
搜索配置
上面我們提到的功能,都是 VS Code 的默認行為
但也有部分用戶不喜歡搜索框的一部分行為,比如說自動填充搜索關鍵詞,那你可以打開設置,搜索 “editor.find.seedSearchStringFromSelection” 來關閉它
也有個別用戶覺得,如果選中了多行文本,那么當開始搜索時,應該自動地只在這幾行代碼里進行搜索,你則需要打開設置 “editor.find.autoFindInSelection”
單文件替換
在搜索到想要的結果之后,可以直接在文件中進行修改,也可以使用替換窗口進行批量替換
只需用鼠標點一下搜索窗口最左側的箭頭按鈕即可打開替換框
替換框的后面,一共有兩個按鈕:第一個能夠替換單個搜索結果,第二個則能夠替換全部的搜索結果
查看對應的快捷鍵,只需把鼠標指針移動到它們上面,就能夠看到了
也可以通過快捷鍵直接調出替換窗口,最常用的命令就是按下 Ctrl + H鍵,這樣當前光標所在的單詞就會被用作為搜索關鍵詞,同時編輯器將光標移動到替換窗口中,只需直接輸入想要替換的關鍵詞就行了
當然,如果在書寫完替換文本后,覺得搜索關鍵詞需要修改,那你可以按下 Shift + Tab 鍵將光標移動到上面的搜索輸入框里
Tab 和 Shift + Tab 鍵能夠幫助你在這兩個輸入框直接進行跳轉
多文件搜索和替換
多文件搜索的運行方法跟單文件搜索非常類似,通過按下Ctrl + Shift + F 來調出多文件搜索的視圖
在這樣一個視圖中,我們看到了熟悉的搜索輸入框,以及大小寫敏感、全單詞匹配和正則表達式三個配置按鈕
搜索框的左側則是下拉按鈕,點擊即可調出替換框
默認情況下,調出多文件搜索的視圖時,VS Code 會在當前打開的文件夾下進行搜索
不過,要發揮多文件搜索的更大功效,可以通過書寫配置來決定在哪些子文件夾下進行搜索,以及過濾掉哪些特殊的文件或者文件夾
要完成這樣的配置,需要點擊搜索框下三個點形狀的圖標,點開后,能看到兩個輸入框,它們的名字分別是“包含的文件” 和 “排除的文件”
這兩個配置的書寫格式是 glob,很多編程語言和配置都會使用 glob 來模糊匹配文件名和文件夾
擴展
glob:是用來返回匹配指定模式的文件名或目錄,所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式
星號(*)匹配零個或多個任意字符
[abc]匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c)
問號(?)只匹配一個任意字符
多文件搜索配置
多文件的配置比單文件里的搜索框還要更多一些,你可以打開設置搜索 “search” 看看都有哪些,這里僅介紹常用的兩個
第一個是 “search.collapseResults”
它是用來控制是否自動展開搜索結果
默認的配置是 “auto” 自動, 也就是說,VS Code 會根據搜索結果的多少來決定是否要將某個文件下的搜索結果展開,如果某個文件夾下的結果過多的話,就會將其暫時折疊,用戶需要展開結果
第二個是 “search.location” ,也就是多文件搜索視圖的位置
默認情況下,搜索視圖會出現在側邊欄
但是 VS Code 同樣允許你把搜索視圖放到底部面板中去,你只需將其修改為 “panel” 即可
文章開頭說,一個功能豐富且快速的搜索,在很多情況下甚至比語言服務還要來得有用
這是因為,VS Code 里的多文件搜索太快了,當我對某個類或者函數的名字有個大概的印象,我都會使用多文件搜索,進行模糊匹配,基本都能找到想要的結果
這比絞盡腦汁想出到底是哪個具體的類、名字是啥,然后使用語言服務來找到它在哪里被使用了,要快捷得多,雖說很暴力,但不得不說也很有效
好了,搜索就介紹到這,我們下篇文章見~
2+
相關資源:vscode-go-to-fuzzy:文件內的模糊搜索和定位-源碼_vscode模糊搜索...
————————————————
版權聲明:本文為CSDN博主「曹小靈」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_32120857/article/details/112865250