網站首頁 編程語言 正文
前言
歡迎來到 vscode 的世界,本文目標為科普 vscode 中關于【代碼定位】的一些設計理念,其實就是查詢,但查詢是個很龐大的話題,想想自己找半天還找不到正確位置的煩惱?
想想我們的日常搜索,基本上就是cmd/ctrl + F
在當前文件根據關鍵詞進行搜索,或者cmd/ctrl + shift + F
在整個項目進行搜索,這其實搜索里最簡單的功能,舉下面幾個例子吧
- 報錯信息中存在文件路徑和行號,改怎么定位
- 關鍵詞在文件多處出現,限定查找
函數
,該怎么縮小范圍 - 模塊化下,搜索函數的調用處或被調用函數的定義處
這些問題,如果只采用搜索關鍵詞,就會變得很低效而且結果不精確
整體思路
在 vscode 中,功能的支持大體分為三個層面:文件查詢、內容查詢、語言層面查詢;
文件查詢主要關注范圍:項目內、已打開文件中;
內容查詢主要關注條件:根據內容查詢、根據所在行數(+文件名)查詢;
語言層面查詢主要關注邏輯:符號(變量)查詢、函數、類、接口的聲明與實現(調用)
接下來,讓我們開始逐一解釋吧!
文件查詢
項目內查詢
項目內最常見的是根據文件名或項目相對路徑進行查詢,對應命令是cmd+p
喚起命令面板,然后輸入文件路徑即可
已打開文件中
如果打開文件過多,想找其中的一個文件就比較麻煩了,這是我們可以Ctrl+Tab
,就可以打開一個文件列表,這個列表羅列了當前打開的所有文件。接下來,你可以通過按下 “Tab”鍵在這個列表里跳轉,選擇你想要打開的文件。
內容查詢
根據內容查詢
需求 | 快捷鍵 for mac | 快捷鍵 for win |
---|---|---|
文件內搜索內容 | cmd + F | ctrl + F |
項目內搜索內容 | cmd + shift + F (這個快捷鍵很容易被搜狗輸入法占用,請留意) | ctrl + shift + F |
關鍵詞查找還支持三個功能項
- 第一個是大小寫敏感:默認忽略,搜索的結果是否要跟關鍵詞大小寫完全一致
- 全單詞匹配:默認忽略,勾選時會排除搜索的單詞恰好是別的某個單詞中間一部分的情況
- 正則表達式匹配:勾選時會開啟正則匹配
根據所在行數(+文件名)查詢
需求 / 對應命令 | 快捷鍵 for mac | 快捷鍵 for win |
---|---|---|
打開指定文件的指定行,不指定 filename 默認當前文件 / [filename]?:[行數] | ctrl + g | ? |
語言層面查詢
符號(變量)查詢
VS Code 提供了一套 API 給語言服務插件,它們可以分析代碼,告訴 VS Code 項目或者文件里有哪些類、哪些函數或者標識符(我們把這些統稱為符號)。
需求 / 對應命令 | 快捷鍵 for mac | 快捷鍵 for win |
---|---|---|
模糊查詢當前文件符號,不填默認展示所有(如果加上:會分類展示)/ @[:]? | Cmd + Shift + O | Ctrl + Shift + O |
模糊查詢當前打開的文件列表中的符號 ,不填默認為空 / # | cmd + T | ? |
函數、類、接口的聲明與實現(調用)
很簡單,一個F12
解決一切。光標在使用者上時,按下F12
會跳轉到定義的位置;光標在定義上時,按下F12
,vscode 會打開一個引用列表,點擊引用即會跳轉到指定位置(目前跨文件的引用是不會被檢索到的)。
原文鏈接:https://juejin.cn/post/7163434812290629662
相關推薦
- 2022-06-23 python基礎之while循環、for循環詳解及舉例_python
- 2022-11-07 Docker鏡像多架構構建介紹_docker
- 2022-09-26 Anaconda環境克隆、遷移的詳細步驟_python
- 2022-06-01 Python寫一個字符串數字后綴部分的遞增函數_python
- 2022-06-28 ES6基礎語法之Map和Set對象_基礎知識
- 2022-03-03 iview 在 Table 組件中,文字過長用省略號代替,鼠標放上去 Tooltip 文字提示
- 2022-12-26 解決Python?httpx?運行過程中無限阻塞的問題_python
- 2022-12-27 pytorch?K折交叉驗證過程說明及實現方式_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支