即使沒有讓 Visual Studio Code 成為每個開發人員的強大工具的大量擴展,Microsoft 的開源編程編輯器默認情況下也加載了許多巧妙的功能。但是,其中一些有用的功能并不明顯,即使對于經驗豐富的用戶也是如此。而且,隨著 VS Code 的每次新版本發布,更多便捷的功能被推出——通常會保持在水線以下。
譯自 10 neat tricks for Visual Studio Code,作者 Serdar Yegulalp。
以下是 10 個你可能不知道的有用的 Visual Studio Code 提示和快捷方式。從初學者到經驗豐富的資深用戶,對各個等級的 VS Code 開發者都具有吸引力。
想要在 VS Code 中查找任何命令嗎?按 Ctrl-Shift-P 并開始輸入。命令面板(按其名稱)可讓你快速訪問任何已注冊的命令,包括加載項提供的命令。此外,如果給定命令關聯了鍵綁定,它將顯示在鍵入搜索的下拉列表中。通過這種方式,你可以直接使用快捷方式。
在 VS Code 命令面板中鍵入以搜索任何命令,包括其鍵綁定。
VS Code 中的彈出式終端窗口非常方便。無需切換到另一個應用程序窗口來處理它。按 Ctrl-`(Ctrl 后跟反引號鍵)也可以輕松訪問它。按這些鍵只需要一只手,因此你可以打開或關閉窗口,而無需觸摸鼠標。此外,當你打開光標時,光標的焦點會轉到終端窗口,因此你可以直接打開它并開始鍵入。
使用單手快捷鍵開啟和關閉 VS Code 的集成終端
想與 VS Code 交談而不是鍵入嗎? VS Code Speech 擴展允許你通過按 Ctrl-Alt-V(或你選擇的其他鍵綁定)直接在編輯器中聽寫文本。文本轉語音引擎完全是本地的,因此它不需要網絡連接即可使用。Microsoft Windows、macOS 和 Linux 都受支持。
VS Code 語音擴展在操作中。光標附近的麥克風圖標表示擴展程序正在監聽輸入。
在 VS Code 中編輯文檔的一種相當神奇的方法是定義多個光標。沒錯——你可以一次在文檔中的多個位置鍵入。
如果你按住 Alt 鍵并單擊某個位置,你將放下一個新光標。每個光標都將同時接受相同的鍵命令——例如,這是一種一次在多行上輸入樣板文本的便捷方法。
添加光標的另一種方法是按住 Ctrl+Alt 并按向上或向下箭頭鍵。這樣做會在當前光標上方或下方的行中插入光標——這對于在文本列中工作很有用。
另一個巧妙的技巧:你可以通過按 Ctrl-Shift-L 在所選文本的每個實例中插入光標。你還可以通過按 Shift-Alt 和左右箭頭來控制多個光標的選擇大小。
要返回到單個光標,只需按 Escape 鍵。
VS Code 允許您使用多個光標同時在一個文檔中的多個位置處鍵入。
自 VS Code 早期以來,用戶就要求能夠從主窗口分離選項卡并在單獨的窗口中打開它。Microsoft 于 2023 年 11 月提供了此功能。右鍵單擊主窗口中的選項卡,然后選擇“移至新窗口”以分離選項卡。要重新附加它,請將選項卡拖回到原始窗口上的選項卡列表中。
可將標簽分離并轉換為獨立窗口,并在桌面上自由移動。請注意,分離的窗口中不提供主窗口的菜單。
VS Code 可以在您鍵入大多數常見純文本文檔類型時提供基于單詞的建議。但是,默認情況下,建議僅從當前文檔或相同類型的打開文檔中提供。
最近引入的一項功能允許您從所有當前打開的文件中查找建議。將 editor.wordBasedSuggestionsMode 配置選項設置為 allDocuments 以從每個已打開的文件中獲取建議,而不僅僅是您當前正在編輯的文件或具有相同擴展名的打開文件。如果您有包含應用程序類型存根的文件,但與您正在編輯的文件不共享文件擴展名,這將非常方便。
從所有打開的文檔中啟用 VS Code 中的單詞建議。建議“db_context”來自一個打開的代碼文件。
操作系統具有實用程序,如 Windows 的任務管理器,可讓您查看系統當前正在運行的進程列表。類似地,VS Code 有自己的內部進程資源管理器,可讓您查看在代碼編輯器中運行的所有子進程的列表——每個窗口、擴展、外部生成的進程等。對于每個進程,進程資源管理器會顯示進程 ID 以及 CPU 和內存使用情況。
要打開進程資源管理器,只需從幫助菜單中選擇“打開進程資源管理器”,或在命令面板中搜索“進程資源管理器”。您可以右鍵單擊進程以復制其信息或將其終止。請注意,您無法對視圖進行排序,但使用最多內存或 CPU 的進程將被突出顯示。
VS Code 的進程資源管理器可讓您查看應用程序的所有正在運行的進程,包括擴展。
有時您希望確保不會意外修改工作區中的文件。VS Code 能夠將活動編輯器標記為只讀,或切換其只讀狀態。默認情況下,沒有為這些行為分配任何鍵綁定,但您可以從命令面板中訪問它們(鍵入“只讀”以搜索它們)并根據需要分配鍵。
將文件標記為只讀以進行會話可以防止意外修改不應更改的關鍵配置數據。
VS Code 可以處理任意數量的不同語言和文件類型。但您可能不希望為每個語言和文件類型使用相同的自定義設置。Python 項目需要與 Java 或 C# 項目不同的自定義設置。為此,VS Code 允許您使用 配置文件(Profile) 將各種自定義設置組合在一起,并將其保存在一個通用名稱下。您可以通過配置文件修改和保存設置、鍵盤快捷鍵、用戶代碼段和任務以及擴展,并且可以與隊友共享您的配置文件以保持工作流同步。
配置文件可用于存儲和共享針對每個工作流或語言自定義的設置組。
通常,您會像運行成熟的 Visual Studio 或 Microsoft Office 一樣,將 Visual Studio Code 作為正式安裝的應用程序運行。但在某些情況下,便攜式運行 VS Code 會很有用——即從可移動驅動器或系統上的奇特目錄運行,而無需正式安裝它。為此,VS Code 提供了 便攜模式,該模式受應用程序的 .zip/ .tar.gz 存檔版本支持。
請注意,必須手動對 VS Code 的便攜副本進行任何升級,方法是從舊安裝將用戶數據復制到新安裝。另請注意,您可以將現有的 VS Code 安裝遷移到便攜模式,但只能通過將數據目錄從正式安裝的 VS Code 版本復制到便攜版本的新副本來執行此操作。您無法“就地”將已安裝的 VS Code 實例轉換為便攜版。
本文介紹了如何在 Windows 10 下使用 VSCode 配置 C/C++ 環境,編譯器采用 MinGW-w64(GCC 在Windows 下的支持)
主要參考了微軟 VSCode 官方文檔配置 Mingw-w64文檔:Mingw-w64 on Windows,含有大量的翻譯內容
MinGW-w64 http://mingw-w64.org/doku.php
Mingw-w64 是原始 mingw.org 項目的改進,旨在支持 Windows 系統上的 GCC 編譯器。它在
2007 年進行了分叉,以提供對 64 位和新 API 的支持。從那以后,它得到了廣泛的使用和分配。
注意 MinGW-w64 與 MinGW 是有區別的,不要選錯
1. 下載
托管在此網站:https://sourceforge.net/projects/mingw-w64/files/
可以直接選擇在線安裝器:MinGW-W64 Online Installer
MinGW-W64-install.exe
也可以選擇相應版本安裝,這里我選擇的是 x86_64-posix-seh
2. 安裝
方法1. 使用安裝包
選項說明:
名稱 | 解 釋 | 可選項 | 說明 | 選擇建 議 |
Version | 制 定 版 本 號 | 根據需 求,無 需求則 最大 | ||
Architecture | 架 構 | x86_64,i686 | 64 位系統選擇 x86_64,32 位系統 選擇 i686 | x86_64 |
Threads | 線 程 模 型 | posix,win32 | posix,跨平臺好。win32 性能好 | posix |
Exception | 異 常 處 理 系 統 | x86_64: sjlj,seh。 i686:sjlj, dwarf。 | sjlj 同時支持 32 位和 64 位,穩定 性好。seh 和 dwarf 只分別支持 64 位、32位,但性能好 | seh |
Build revision | 構 建 版 本 號 |
參考:https://wiki.qt.io/MinGW-64-bit
方法2. 壓縮包(推薦)
下載相應的安裝包,具體版本選擇參考上表,選擇合適位置解壓至路徑中沒有空格的文件夾(換句話說,不能是 C:/Program Files/ 下的默認位置,可以是 C:\mingw-w64 )
3. 添加環境變量
將 mingw64 下的 bin 文件夾添加至 path
4. 檢查
執行命令
g++ --version
gdb --version
VSCode
1. 安裝 MinGW-w64
2. 安裝 C/C++ 插件
3. 配置
這里我們需要在 .vscode 文件夾下共創建如下3個文件:
以基于源代碼創建可執行文件)
具體操作說明:
1. 創建 C++ 示例代碼文件 Hello World,并保存,確保存在于文件夾中,而非臨時文件
示例代碼:
2. 配置 tasks.json ,用于編譯
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
1. 配置 tasks.json
菜單 > 終端 > 配置默認生成任務
下拉列表中,列出了 C++ 編譯器的各種預定義構建任務。選擇 C/C++: g++.exe build
active file。若是 C,請選擇 C/C++: gcc.exe build active file,C 無法使用 g++.exe
Note: 是 C 還是 C++ 是根據文件后綴名來判斷的,而非根據右下角選擇的語言
完成后會在 .vscode 文件夾下創建 task.json 文件并打開
部分變量說明:
些參數。此任務告訴 g++ 獲取活動文件( ${file} ),對其進行編譯,并在當前
目錄( ${fileDirname} )中創建一個與活動文件同名但以 .exe 為擴展名
( ${fileBasenameNoExtension}.exe )的可執行文件,如 helloworld.exe。
可使用 "${workspaceFolder}\*.cpp" 來替換 ${file} ,這將生成當前文件夾
中的所有 .cpp 文件
性僅出于方便起見;如果設置為 false,仍然可以使用“ 任務:運行構建任務”從“終
端”菜單中運行
務。此屬性僅出于方便起見;如果將其設置為 false,仍可以使用“ 運行生成任務”
從“終端”菜單中運行
附 task.json變量參考 https://code.visualstudio.com/docs/editor/variables-reference
2. 運行生成任務,編譯
回到 helloworld.cpp ,按 Ctrl + Shift + B 或從“ 終端”菜單中選擇“ 運行生成任務”
成功如圖所示
且當前文件夾下會多出一個 helloworld.exe 文件,可以使用”+“按鈕新建一個終端,
用來執行它,輸入 .\helloworld.exe
3. 配置 launch.json ,用于調試
1. 配置 launch.json
按 F5 或 菜單 > 調試 > 添加配置 > 選擇“ C ++(GDB / LLDB)”
將看到各種預定義調試配置的下拉列表,選擇 g++.exe build and debug active file
VSCode 將會創建 launch.json 文件并打開
部分變量說明:
為 false 。將 stopAtEntry 值更改為 true 會導致調試器開始調試時在 main 方法
上停止
記得保存修改
2. 調試
回到 helloworld.cpp ,按F5或從主菜單中選擇“ 調試”>“開始調試”
前進到該程序中的下一條語句(跳過為初始化循環而執行的所有內部代碼)
逐步瀏覽 C++ 標準庫中的源代碼,若要返回自己的代碼,可以按 Step over (單
步跳過)或者直接切換選項卡
具體調試過程省略,有興趣的朋友可以在底部的參考鏈接參考官方文檔中的調試
設置 WATCH :
可以用來跟蹤變量的值
將斷點設置為如圖所示位置,并在 WATCH 窗口中點擊“+”,在文本框中輸入“word”,這
是循環中的變量名,當逐步執行循環時,可發現 WATCH 窗口中的“word”的值在變化
可在調試時,將鼠標懸浮于變量中,快速查看任何變量的值
4. 配置 c_cpp_properties.json ,進一步配置 C/C++ 擴展。非必要步驟
1. 按快捷鍵 Ctrl+Shift+P 打開命令面板,輸入 C/C++,選擇“Edit Configurations(UI)”
將生成配置文件 c_cpp_properties.json 并打開
2. 配置以下兩個選項
應該會自動填充,我這里是
D:\Develop\compilers\mingw64\bin\gcc.exe
compilerPath 搜索順序是:
因此,如果安裝了 Visual Studio 或 WSL,則可能需要更改 compilerPath
選擇 gcc-x64
配置文件參考
task.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-
rev0\\mingw32\\bin\\g++.exe",
"args": ["-g", "${file}", "-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x86"
}
],
"version": 4
}
均位于 .vscode 文件夾下
不想看此文的小白的可以直接創建 .vscode 文件夾,在文件夾下創建這3個文件哦!
VSCode 官方文檔:https://code.visualstudio.com/docs/cpp/config-mingw