VScode 介紹
VScode 是一款強大的編輯器,至少在對於 OIer 來說 VScode 是最好的選擇,VScode 是輕量級編輯器,不像 VS 或者 Clion 一樣是重量級編輯器,不方便 OIer 使用(並且還瘋狂占用 CPU);也不像 Dev-cpp 一樣盡管可以直接使用,但是功能卻一言難盡……這個時候就要看 VScode 了!
VScode 支持打開文件夾,代碼補全,代碼片段插入,強大的調試功能,Markdown 的編輯和瀏覽,括號匹配,本地歷史記錄保存,修改代碼縮進風格,內部控制台,連體字符,內置 git,內置編碼查看修改,代碼查看,宏展開等等……絕對是 OIer 的不二之選。
VScode 下載和安裝
直接在官網下載即可,但是由於某些不知道的原因下載比較慢,建議配合多線程下載器使用,比如說 Minecraft 啟動器 多線程下載器 pcl2,可以在 1min 內下載完畢,下載完畢后不用多想一路下一個就行了,不像某 P2P 一樣會附帶捆綁。
我相信大多數人先看見 VScode 打開時那堆英文就勸退了,實際上等待一會兒 VScode 就會讓你下載中文插件,或者 Ctrl+Shift+X 打開拓展界面輸入 Chinese 安裝第一個插件就行了,最后重啟再打開顯示的就是中文了。再實際上重啟不用按叉叉再打開 VScode (這個叫大退),只要 Ctrl+Shift+P 輸入 reload 就可以重啟了(這個叫小退)。
VScode 的默認字體不是連體等寬字體,我們不妨在這里下載 Fira Code,一款連體等寬字體,然后在設置里輸入:
"editor.fontFamily": "Fira Code",
字體就變成漂亮的連體等寬字體 Fira Code 了。
眾所周知 VScode 在配置時比較麻煩,這點可以通過登錄 Github 賬號解決,也可以通過下載 VScode 綠色版解決。這里就介紹一下怎么下載 VScode 綠色版。
首先還是在這里下載,不過這次下載的是 .zip 壓縮包,解壓完之后在 Code.exe 同級目錄下新建文件夾 data,里面存放的就是各種配置,包括拓展、設置等等。在里面新建一個 tmp 的文件夾表示臨時文件會在這里面生成。這個時候打開 Code.exe 就可以了,綠色版就是這么簡單……
VScode 配置 c++ 環境
注意支持 win7 的最后一個版本 1.70.3。
都2022年了總是 c++ 了
首先安裝 C/C++ 插件,實際上有這個插件就行了,下載時可能 VScode 會熱情贈送一些沒用的插件,會拖慢啟動速度而且沒什么用處,可以直接不下載那些插件。
然后需要一個 c++ 在 Path 里的環境,所以需要一個 MinGW,考慮到 Dev-cpp 的 MinGW 過於古老,建議到 winlibs 里面下載一個 MinGW,下載下來是個壓縮包,解壓后放在自己喜歡的位置(也可以直接刪掉 Dev-cpp 里的 MinGW,把這個替換進去),然后 右鍵此電腦-屬性-高級系統設置-環境變量,選擇變量 Path ,如果沒有 MinGW 就新建一個,輸入 MinGW 的解壓地址,再來個 \bin 。比如說我把 MinGW 直接解壓到 C 盤下面,添加的路徑就是 C:\MinGW64\bin 。打開 cmd 輸入 g++ -v
就可以知道環境變量是否安裝成功,如果成功是會顯示 gcc 的版本的。
再次回到 VScode ,先選擇一個自己喜歡的文件夾,以后的文件都放這里了。Ctrl+Shift+P 輸入 C/C++編輯配置(JSON) 就會自動生成一個 .json 文件,一般來說是沒什么問題的,直接關掉就行了。
這個時候打開工作文件夾里的 .cpp 文件,就可以看到代碼補全和代碼高亮發揮了作用,如果沒有就小退/大退一下。如果還是沒有代碼補全試試 Ctrl+Shift+P 打開首選項:打開設置(JSON),輸入以下文字:
"[cpp]": {
"editor.quickSuggestions": true
},
如果還是沒有效果可能是因為沒有 .net4.5 以上的環境,可以在這里下載,建議下載脫機版。
但是這樣並不好,因為只能編譯卻不能運行,VScode 就只發揮了一般的高級編輯器的作用,然而 VScode 卻不是一般的高級編輯器,而是高級的高級編輯器(胡言亂語++)。有的同學可能已經在 F11 試圖運行了,結果卻全屏了,因為我們需要修改 VScode 的配置讓其能生成 .exe 文件並且打開 .exe文件。
指令
這個非常簡單,直接使用 cmd 自己輸指令編譯運行就行了。但是略微有些麻煩,不如 Code Runner。可能用 Linux 的比較順手?
Code Runner
不得不說 Code Runner 挺好用的。Ctrl+Shift+X 輸入 Code Runner 就可以下載 Code Runner 插件,然后直接就可以 Ctrl+Alt+N 運行了~
但是輸入和輸出都在小小的面板里,不得不說有點難受,可以選擇移動面板的位置來修改,另外可以 Ctrl+Shift+P 輸入首選項:打開設置(JSON),在 settings.json 輸入這些內容就可以在終端里運行(不是面板里的終端)。
"code-runner.clearPreviousOutput": true,//運行前清屏
"code-runner.runInTerminal": true,//在終端里運行
"terminal.integrated.cursorStyle": "line",//終端光標是線的形狀
"terminal.integrated.defaultLocation": "editor",//終端在頁面里
"terminal.integrated.cursorBlinking": true,//終端光標閃爍
"terminal.integrated.fontSize": 15,//終端字體大小為 15
"terminal.integrated.enableMultiLinePasteWarning": false,//在終端郵件粘貼時不警告
"code-runner.saveFileBeforeRun": true,//運行前保存文件
這樣修改過之后就是作者喜歡的形狀了(還是建議按照自己喜好修改)。
不過這樣弄完之后有些比較麻煩的事情,請看下面:
不能處理帶空格的文件
這是因為 Code Runner 默認配置的問題,可以在設置里輸入
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++20 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && ./Runner",
},
注意到 VScode 的默認終端是 powershell,如果不喜歡可以把終端改成 cmd。
"terminal.integrated.defaultProfile.windows": "Command Prompt",//將默認終端改成cmd
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++20 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && Runner",// cmd 的語法就不用 ./ 了
},
Code Runner 原理是在終端里輸入指令運行,所以你也可以試試自己 diy 哦!$dir
表示當前文件所在的文件夾名稱,$fileName
表示當前文件的名稱。
多說無益,給個表:
$workspaceRoot
當前工程目錄路徑$dir
要運行的代碼文件所在的目錄$dirWithoutTrailingSlash
要運行的代碼文件所在的目錄(不帶尾后斜桿)$fullFileName
要運行的代碼文件全路徑$fileName
要運行的代碼文件名稱$fileNameWithoutExt
要運行的代碼文件名稱(不帶后綴名)$driveLetter
要運行的代碼文件所在盤符(只用於Windows系統)$pythonPath
Python解釋器路徑
如果不想清一色 Runner 就這樣把所有 Runner 改成 \"$fileNameWithoutExt\"
,這樣產生的 exe 文件名就和 cpp 文件名一樣。
小優化
眾所周知有的機子編譯 c++ 程序比較慢,在台式機上問題不大是秒出,但是在我的垃圾電腦上跑的就比較慢。Code Runner 在編譯時期只有編譯完才可以輸入,有時候着急就按了好幾下粘貼了好幾次……這不太好,解決的最好方式是編譯結束后輸出一條結束語,最簡單的方法就是在 settings.json 里插入 echo
語句。
不過這樣輸出是白色的不太好看,所以我選擇另一種方式:寫一個小程序:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<windows.h>
int main(int argc,char const *argv[]){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
std::string c2;
for(int i=1;i<argc;i++)c2+=argv[i];
system(("echo \033[36;40m"+c2).data());
system("echo|set /p=\033[37;40m");
return 0;
}
眾所周知 c++ 的 main
函數可以放一個 int
變量和 char
數組指針的數組指針,argc
表示數組指針的數量,argv
記錄了參數內容。這個 exe 的大體意思是把所有參數組合起來,用藍色輸出,第二個 system
是讓顏色改成默認的黑白,否則后面一直是藍黑。|set /p=
的作用是讓 echo
不換行。
這個程序編譯完之后,可以在 cmd 里輸入
Runner "2345 6789"
來檢查正確性,如果輸出的是藍色的 2345 6789
就表示這個程序沒問題。把編譯完的文件放入工作文件夾改成喜歡的名字比如 IcePrint.exe 然后把 settings.json 這么改:
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++20 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && \"$workspaceRoot\"\\IcePrint \"Compile OK\" && ./Runner",
},
如果使用 echo 直接輸出:
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++20 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && echo \"Compile OK\" && ./Runner",
},
同理也可以改成 \"$fileNameWithoutExt\"
。結果令人滿意QAQ 也可以自己寫自己的 IcePrint,甚至可以自己寫隨機數來控制輸出的內容和顏色,甚至還能放幾句台詞???反正一切皆有可能只要你會基礎 cmd 語法和基礎 c++ 語法。
Ubuntu
按照 bash 的語法修改一下,其實就是上面 powershell 的語法:
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++20 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && ./Runner",
},
launch.json 和 tasks.json
注意:此方法從來沒有在 win7 及以下版本成功過,似乎 win7 不能運行 tasks.json
,而且支持 win7 的最后一個 VScode 版本是 1.70.3。
這個做法看似麻煩實際不難,而且是考場上沒有 Code Runner 時的做法。
一般的配置方式都是寫個 tasks.json
,使用 launch.json
調用一個 task,然后就可以跑程序了。
首先在剛剛的 .vscode
里建 launch.json
,輸入以下代碼:
{
"version": "0.2.0",
"configurations": [
{
"name": "編譯並調試(VScode)",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\Runner.exe",
"cwd": "${fileDirname}",
"preLaunchTask": "g++ compile"
},
{
"name": "編譯並運行(ConsolePauser)",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}\\ConsolePauser.exe",
"args": ["Runner.exe"],
"cwd": "${fileDirname}",
"console": "newExternalWindow",
"preLaunchTask": "g++ compile (no debug)"
},
{
"name": "編譯並運行(pause)",
"type": "cppvsdbg",
"request": "launch",
"program": "Runner.exe",
"cwd": "${fileDirname}",
"console": "externalTerminal",
"preLaunchTask": "g++ compile (no debug)"
},
{
"name": "(Windows) 快速啟動",
"type": "cppvsdbg",
"request": "launch",
"program": "C:\\Windows\\System32\\cmd.exe",
"args": [
"/c",
"g++",
"${file}",
"-o",
"${fileBasenameNoExtension}",
"-Wl,--stack=104857600",
"-O2",
"-Wall",
"-Wextra",
"-Wshadow",
"-std=c++20",
"&&",
"${fileBasenameNoExtension}.exe"
],
"cwd": "${fileDirname}",
"console": "externalTerminal"
}
]
}
這里的 name
就是名字,給自己看的而已,request
就寫 launch
,program
就是你要運行的程序,cwd
表示你寫的指令的相對位置,preLaunchTask
就是你要調用的 task 了。
仔細研究上述代碼,發現他們的 type
不同,cppdbg
表示調試的意思,而 cppvsdbg
表示運行,這個調試就是字面意思,沒什么可以研究的。運行中還帶個 console
表示類型,newExternalWindow
表示新跳出一個窗口,externalTerminal
表示新跳出一個窗口,運行結束后自動暫停。
注意中間那個寫法,ConsolePauser
就是 Dev-c++ 里面的 ConsolePauser
,我在這里調用就可以仿照 Dev-c++ 的操作界面了。ConsolePauser
的好處就是可以計時以及獲得返回值,args
就是參數表,也就是說你可以在 cmd 里面輸入 ConsolePauser Runner.exe
來以 Dev-c++ 的形式運行個 exe。
這里附上 tasks.json
的寫法:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ compile",
"command": "g++",
"args": [
"${file}",
"-g",
"-o",
"${fileDirname}\\Runner",
"-O2",
"-Wall",
"-Wextra",
"-Wshadow",
"-Wconversion",
"-std=c++20"
],
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "g++ compile (no debug)",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}\\Runner",
"-O2",
"-Wall",
"-Wextra",
"-Wshadow",
"-Wconversion",
"-std=c++20"
],
"problemMatcher": [
"$gcc"
]
}
]
}
如果是 Ubuntu 把相應的語法改成 bash 的語法就行了。
如果在 CSP 的時候機子不太行,不能跑 tasks.json
,那我推薦一個賽場上很適合寫的方法,把所有指令壓縮到 cmd 的參數列表里面,win7 和遠古版本 VScode 也肯定支持哦:
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) 快速啟動",
"type": "cppvsdbg",
"request": "launch",
"program": "C:\\Windows\\System32\\cmd.exe",
"args": [
"/c g++ ${file} -o ${fileBasenameNoExtension} -Wl,--stack=104857600 -O2 -Wall -Wextra -Wshadow -std=c++14 && ${fileBasenameNoExtension}.exe"
],
"cwd": "${fileDirname}",
"console": "externalTerminal"
}
]
}
但是不知道為啥,這個方法在 CSP-S2022 是可行的,NOIP2022 又不行了???都是考場害得!據說有的考場甚至沒有 VScode!
VScode 其他配置
VSCode git
git 安裝
git 是一個重要的源代碼管理工具,VScode 也帶了 git ,Ctrl+Shift+G 可以召喚 git,然而在這之前,你應該先安裝 git。
綁定 GitHub
安裝完 git 之后建議先把本地電腦和 GitHub 綁定起來,
ssh-keygen -t rsa -C "your email"
在 cmd 或者 git bush 輸入這句話,your email 是你注冊 GitHub 的郵箱,跳出一段話后直接回車,然后再直接回車,然后再再直接回車,就會產生一個奇怪的正方形,這個時候打開用戶文件夾,發現里面多了個 .ssh 文件夾,用 VScode 打開 id_rsa.pub,發現里面是一串以 ssh-rsa 開頭的字符串,將所有字符復制,打開 GitHub 的這個頁面,選擇 New SSH Key,Title隨意 ,Key 里就是剛剛那串字符串(要 ssh-rsa 這個前綴),然后 Add SSH Key 后輸入密碼就行了。
可以通過在 cmd 或者 git bush 輸入
ssh -T git@github.com
檢測是否成功,如出現
Are you sure you want to continue connecting (yes/no/[fingerprint])?
字樣就輸入 yes 然后回車,如果出現
Hi "Your Name"! You've successfully authenticated, but GitHub does not provide shell access.
就代表成功連接了 Github
上傳倉庫
直接 Ctrl+Shift+G 選擇上傳到Github,選擇是公有倉庫還是私有倉庫就行了。
更新
之后你的更改都會在 Ctrl+Shift+G 頁面顯示出來,可以暫存更改,在消息中輸入文字后 Ctrl+Enter 就可以提交更改,但是這只是在本機的更改,並不會影響 Github ,這個時候選擇右上角 3 個點選擇推送就行了,如果你想把 Github 上倉庫的內容替換本地,就選擇拉取。
Python
對於 OIer 來說光是 C/C++ 顯然是不夠的,比如說 Python 也是一種在高精度上重要的語言,Python 是解釋性語言,不需要這么復雜的配置,我在上面 Code Runner 章節也貼出了 Python 和 Ruby 的 Code Runner 參數,然后下載 Python 的插件就有了高亮和代碼補全,直接 Ctrl+Shift+N 運行即可。
Markdown
對於 OIer 來說 Markdown 也是很重要的,用來寫題解,筆記或者感想等都是非常有用的。VScode 內部自帶了 Markdown,只要建一個 xxx.md 文件就好了,Ctrl+K V 就可以一邊編輯 Markdown 一邊瀏覽了,非常方便!!
用戶代碼片段
別人隨便按幾下就是一個板子,隨便按幾下就是一個函數,羡慕嗎?這就是用戶代碼片段。只要文件-首選項-用戶片段-新建"xx"文件夾的代碼片段文件,選擇一個喜歡的名字就可以弄用戶代碼片段了,是一個 .code-snippets 文件。
這里給出一個板子:
{
"快速冪": {//補全提示
"scope": "cpp",//出現的文件
"prefix": "add_qp",//補全關鍵詞
"body": [//插入部分主體
"inline int qp(int a,int b,int t=1){for(;b;b>>=1,a=a*a%MOD)if(b&1)t=t*a%MOD;return t;}"
]
},
"模板": {
"scope": "cpp",
"prefix": "add_mod",
"body": [
"#include<iostream>",//以逗號隔開
"#include<cstdio>",
"#include<algorithm>",
"using std::cin;using std::cout;",
"signed main(){",
"//\tfreopen(\".in\",\"r\",stdin);",//注意這種情況需要轉義符
"//\tfreopen(\".out\",\"w\",stdout);",
"//\tstd::ios::sync_with_stdio(false);",
"//\tcin.tie(nullptr);cout.tie(nullptr);",
"\treturn 0;",
"}"//json文件語法,最后一個沒有逗號
]
}//json文件語法,最后一個沒有逗號
}
有人說:我這一個一個修改轉義符一個一個加上引號也太麻煩了吧!確實有點,但是作為一名成熟的 OIer,寫個程序為自己所用還是沒什么問題的:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
using std::cin;using std::cout;
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
std::ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
std::string a,b="";
while(std::getline(cin,a)){
cout<<b<<"\"";b=",\n";
for(char it:a){
switch(it){
case '\t':cout<<"\\t";continue;
case '\"':cout<<"\\\"";continue;
case '\\':cout<<"\\\\";continue;
default:cout<<it;
}
}
cout<<"\"";
}
return 0;
}
VScode 插件
Chinese
下載鏈接
不認識英語的蒟蒻表示很贊。
Code Runner
下載鏈接
一件運行代碼,簡單到不解釋。
C/C++
下載鏈接
提供了 C/C++ 的代碼補全和代碼高亮。
Python
下載鏈接
提供了 Python 的代碼補全和代碼高亮
Drawio
下載鏈接
提供了 VScode 對 .drawio 文件的支持
MindMap
下載鏈接 提供了 VScode 對 .km 文件的支持
One Dark Pro
下載鏈接 添加了 3 個暗色主題,主題色調為紫紅黃橙藍綠,非常優雅。
Horizon Theme
下載鏈接 粉粉的,真好看。
Mariana
下載鏈接 即 Sublime 的默認主題。
background-cover
下載鏈接 給你的 VScode 加個背景!
總不可能天天對着黑屏幕寫代碼,當然是對着自己喜歡的背景寫代碼啊。
注意的是有標題為 background 圖標是魔理沙的插件,那個插件下載完后字體會很奇怪QAQ。
Fix VScode Checksums
下載鏈接 當你裝完背景之后 VScode 會貼心提示你 Code 已損壞,安裝此插件后 Ctrl+Shift+P 輸入 Apply 然后大退就可以去掉 VScode 的貼心提示。
Colorful Comments
下載鏈接 在注釋里加上一些特殊字符可以讓注釋變成彩色的,比如說 //*
是綠色,//!
是紅色,特殊的,注釋再注釋是刪除線,//TODO
是橙色。
Hex Editor
下載鏈接 提供了 16 進制文本編輯器。
Error Lens
下載鏈接 將代碼報錯信息移動到行內。
vscode-pdf
下載鏈接 VScode 竟然不能看 .pdf 文件,大怒!還好有插件!
Svg Preview
下載鏈接 為 vscode 提供了 .svg 文件的瀏覽方法。
Rainbow CSV
下載鏈接 .csv 文件雖然可以直接瀏覽,但是容易糊成一團分不出列,使用本插件可以把相同列渲染為相同顏色,方便閱讀 .csv。
Markdown PDF
下載鏈接 可以把 .md 文件導出成為 .pdf .html 文件,操作簡單,右鍵即可。
LeetCode
下載鏈接 有的時候想做 LeetCode 的題,裝了這個插件直接在 LeetCode 里切。
vscode-luogu
下載鏈接 有的時候想做洛谷的題,裝了這個插件直接在洛谷里切。
Codeforces Bot
下載鏈接 有的時候想做 Codeforces 的題,裝了這個插件直接在 Codeforces 里切。
Bracket Pair Colorizer 2
下載鏈接 有的惡心題不免出現括號套括號套括號套括號套括號……的情況,這個插件可以給每一層括號匹配不同的顏色,將不匹配的括號渲染成紅色
然而現在 VScode 已經自帶此功能了,可以做到和插件一樣的效果並且加載速度飛快,常常高亮還沒加載出來括號匹配就渲染完了。這里給個板子:
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": "active",
"workbench.colorCustomizations": {
"editorBracketHighlight.foreground1": "#ffd700",
"editorBracketHighlight.foreground2": "#da70d6",
"editorBracketHighlight.foreground3": "#87cefa"
},
實際上不寫也可以有默認的括號匹配,這里給出只是為了 diy 愛好者自己 diy。
vscode-icons
下載鏈接 我只想說這個插件修改后的圖標真好看。
Marp for VS Code
下載鏈接 用 marp 寫課件真的很方便,沒有 ppt 一樣的頭痛,也沒有 \(\LaTeX\) 一樣的復雜。
Code Time
下載鏈接 可以統計你每天或者每周寫代碼的時間,登錄 Github 或者 Google 帳號還可以看歷史寫代碼時間。
CodeSnap
下載鏈接 為代碼截圖提供了更好的辦法,再也不用手動截圖了,選中代碼即可導出截圖。
Local History
下載鏈接 顧名思義,每次保存代碼時可以在本地產生一份備份,有的時候,Ctrl+Z 是解決不了問題的。然而現在 VScode 自帶這個功能了。只要在 Ctrl+Shift+E 里選擇時間線……
Settings Sync
下載鏈接 不同機子上 VScode 配置不同步怎么辦?用這個插件就可以同步,然而現在 VScode 只要登錄 GitHub 賬號就可以同步了……
小霸王
下載鏈接 這真的是小霸王,我只能……啊這了……
thief-book
下載鏈接 可以在面板的下面偷偷放出小說的字樣,神不知鬼不覺,其他人第一眼沒反應過來,第二眼字已經不見了!小說的格式是 .txt,編碼必須是 UTF-8。
Cloudmusic
下載鏈接 一邊寫代碼一邊聽歌有時候還是不錯的。
daily anime
下載鏈接 可以快速看見這周什么番會更新,也可以隨機獲取一條 ACGN 的句子......
Zhihu On VSCode
下載鏈接 來知乎,分享你新編的故事。
下載鏈接 機房不讓用 QQ 怎么辦?沒有人知道你的 VScode 里有個 QQ。
VScode 常用配置
settings.json
我這里把我的 settings 掛上來,至於是什么效果可以扔到 settings.json 使用鼠標懸停的方式看是什么效果:
{
"security.workspace.trust.untrustedFiles": "open",
"editor.fontFamily": "Fira Code",
// "editor.fontFamily": "Cascadia Mono",
// "editor.fontFamily": "JetBrains Mono",
// "editor.fontFamily": "Ubuntu Mono",
// "editor.fontFamily": "BabelStone Han",
"editor.insertSpaces": false,
"editor.fontLigatures": true,
"editor.detectIndentation": false,
"debug.onTaskErrors": "showErrors",
"code-runner.runInTerminal": true,
"code-runner.saveFileBeforeRun": true,
"code-runner.executorMap": {
"cpp": "cd $dir && g++ \"$fileName\" -o Runner -O2 -std=c++23 -Wall -Wextra -Wshadow -Wconversion \"-Wl,--stack=2147483647\" && ./Runner",
"python": "cd $dir && python -u \"$fileName\""
},
"terminal.integrated.defaultLocation": "editor",
"terminal.integrated.cursorBlinking": true,
"editor.fontSize": 14,
"terminal.integrated.fontSize": 14,
"debug.console.fontSize": 14,
"workbench.iconTheme": "vscode-icons",
"terminal.integrated.enableMultiLinePasteWarning": false,
"git.confirmSync": false,
"files.autoGuessEncoding": true,
"editor.minimap.maxColumn": 100,
"files.defaultLanguage": "cpp",
"explorer.copyRelativePathSeparator": "\\",
"editor.hover.delay": 200,
"extensions.ignoreRecommendations": true,
"editor.fastScrollSensitivity": 12,
"workbench.list.fastScrollSensitivity": 12,
"terminal.integrated.fastScrollSensitivity": 12,
"files.eol": "\n",
"vsicons.dontShowNewVersionMessage": true,
"workbench.sideBar.location": "right",
"diffEditor.ignoreTrimWhitespace": false,
"editor.cursorSmoothCaretAnimation": "on",
"terminal.integrated.scrollback": 19198100,
"git.ignoreMissingGitWarning": true,
"editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?!@©®℗№¥€£¥¢¤₩%°℃‰‱℉℅℆℀℁⅍…*·・×※❂⁂☮☯☣()—々〃「」【】〔〕[]〚〛〘〙、\;:‘’“”《》〈〉«»‹›⟨⟩˂˃˱˲、/÷",
"[python]": {
"editor.formatOnType": true
},
"workbench.colorTheme": "Horizon",
"workbench.activityBar.visible": false,
}
還有個更生猛的全部禁用斜體:
"editor.tokenColorCustomizations": { //禁用所有主題的斜體
"textMateRules": [
{
"scope": [
"comment",
"comment.block",
"comment.block.documentation",
"comment.line",
"constant",
"constant.character",
"constant.character.escape",
"constant.numeric",
"constant.numeric.integer",
"constant.numeric.float",
"constant.numeric.hex",
"constant.numeric.octal",
"constant.other",
"constant.regexp",
"constant.rgb-value",
"emphasis",
"entity",
"entity.name",
"entity.name.class",
"entity.name.function",
"entity.name.method",
"entity.name.section",
"entity.name.selector",
"entity.name.tag",
"entity.name.type",
"entity.other",
"entity.other.attribute-name",
"entity.other.inherited-class",
"invalid",
"invalid.deprecated",
"invalid.illegal",
"keyword",
"keyword.control",
"keyword.operator",
"keyword.operator.new",
"keyword.operator.assignment",
"keyword.operator.arithmetic",
"keyword.operator.logical",
"keyword.other",
"markup",
"markup.bold",
"markup.changed",
"markup.deleted",
"markup.heading",
"markup.inline.raw",
"markup.inserted",
"markup.italic",
"markup.list",
"markup.list.numbered",
"markup.list.unnumbered",
"markup.other",
"markup.quote",
"markup.raw",
"markup.underline",
"markup.underline.link",
"meta",
"meta.block",
"meta.cast",
"meta.class",
"meta.function",
"meta.function-call",
"meta.preprocessor",
"meta.return-type",
"meta.selector",
"meta.tag",
"meta.type.annotation",
"meta.type",
"punctuation.definition.string.begin",
"punctuation.definition.string.end",
"punctuation.separator",
"punctuation.separator.continuation",
"punctuation.terminator",
"storage",
"storage.modifier",
"storage.type",
"string",
"string.interpolated",
"string.other",
"string.quoted",
"string.quoted.double",
"string.quoted.other",
"string.quoted.single",
"string.quoted.triple",
"string.regexp",
"string.unquoted",
"strong",
"support",
"support.class",
"support.constant",
"support.function",
"support.other",
"support.type",
"support.type.property-name",
"support.variable",
"variable",
"variable.language",
"variable.name",
"variable.other",
"variable.other.readwrite",
"variable.parameter"
],
"settings": {
"fontStyle": ""
}
}
]
},
這個問題本來應該在第一段回答,為了防止影響理解就放在這里了:怎么把綠色版的配置變成本地的配置呢?
這里舉個例子,假如我的用戶名字叫做 piper,並且之前修改過 VScode 的配置,那么在 C:\Users\piper 目錄下有一個 .vscode 的文件夾,里面有一個 extensions 的文件夾和 argv.json 的文件,全部拷貝到 data 文件夾里。同時在 C:\Users\piper\AppData\Roaming 文件夾里有個叫 Code 的文件夾,也拷貝到 data 文件夾里,然后啟動 Code.exe,如果是移動完第一次啟動可能不會生效,只需要小退/大退一下就會生效。
對於綠色版和安裝版,C:\Users\piper\AppData\Roaming\Code\User 和 F:\VSCode\data\user-data\User (這里假設解壓到了 F 盤)是同一個東西,C:\Users\piper\AppData\Roaming\Code\User\settings.json 和 F:\VSCode\data\user-data\User\settings.json 就是后文多次提到的 Ctrl+Shift+P 首選項:打開設置(JSON)。當然也可以修改工作文件夾里的 .vscode 文件夾里的 settings.json 來覆蓋全局配置。設置用戶自定義快捷鍵的 keybindings.json 也是同理。(如果你沒有修改過,沒有這個文件是正常的)
另外說一句,卸載掉 VScode 之后 C:\Users\piper\.vscode 和 C:\Users\piper\AppData\Roaming\Code 這兩個文件夾仍然存在,如果不刪掉這兩個文件夾,以后再下載 Code 會保持原來的配置……所以如果不小心搞壞了 VScode,刪掉這兩個文件夾后又是一條好漢。
keybindings.json
- Ctrl+N 新建文件
- Ctrl+Shift+N 新建窗口
- Ctrl+P 搜索並打開文件
- Ctrl+Shift+P 選擇功能
- Ctrl+Shift+E 打開資源管理器
- Ctrl+Shift+D 打開調試欄
- Ctrl+Shift+F 打開工作文件夾搜索欄
- Ctrl+Shift+H 打開工作文件夾替換欄
- Ctrl+Shift+G 打開 Git 欄
- Ctrl+Shift+X 打開拓展欄
- Ctrl+B 打開或關閉以上 6 個
- Ctrl+Shift+K 刪除本行
- Ctrl+Shift+Enter 跳到上一行開頭
- Ctrl+Enter 跳到下一行開頭
- Ctrl+S 保存
- Ctrl+Shift+S 另存為
- Ctrl+K S 全部保存
- Ctrl+C 復制
- Ctrl+X 剪切
- Ctrl+V 粘貼
- Ctrl+Z 撤銷
- Ctrl+Y 恢復
- Ctrl+I 代碼補全
- Ctrl+F 搜索
- Ctrl+O 打開文件
- Ctrl+K Ctrl+O 打開文件夾
- Ctrl+H 替換
- Ctrl+A 全選
- Ctrl+G 跳到指定行
- Ctrl+L 選擇這行
- Ctrl+~ 打開面板終端
- Ctrl+K Ctrl+X 刪除尾部空格
- Ctrl+K R 在資源管理器打開當前文件
- Ctrl+K V 打開 Markdown 瀏覽
- Ctrl+K Z進入禪模式
- Ctrl+Shift+~ 打開終端
- Ctrl+, 打開設置
- Ctrl+/ 注釋
- Ctrl+Shift+\ 跳到匹配的括號
- Ctrl+tab 切換文件
- Ctrl+[ 向左縮進一次
- Ctrl+] 向右縮進一次
- Ctrl+- 窗口縮小
- Ctrl+= 窗口放大
- Ctrl+Up 光標不動,頁面上移
- Ctrl+Dn 光標不動,頁面下移
- Ctrl+Left 左移一塊
- Ctrl+Right 右移一塊
- Ctrl+F2 選中所有當前選中項
- Ctrl+F4 功能更強的關閉
- Ctrl+W 關閉文件
- Ctrl+U 回到上一次的光標位置
- Ctrl+K F 關閉文件夾
- Alt+F4 關閉 VScode
- Alt+Up 將這行代碼上移
- Alt+Dn 將這行代碼下移
- Alt+Shift+F 格式化
- Alt+Shift+I 在選中行末尾插入光標
- Alt+Shift+Up 向上復制一行
- Alt+Shift+Dn 向下復制一行
- Alt+Shift+Left 縮小選擇的代碼塊
- Alt+Shift+Right 擴大選擇的代碼塊
- Alt+左鍵 插入光標
- Alt+Shift+左鍵 多列插入光標
- Ctrl+Alt+Shift+Up 向上移動並插入光標
- Ctrl+Alt+Shift+Dn 向下移動並插入光標
- F2 重命名
- F5 編譯
- F8 跳到下一個錯誤
- F9 設置斷點
- F11 全屏
- F12 轉到定義
- Home 轉到行首
- End 轉到行尾
- Ctrl+Home 轉到文件首
- Ctrl+End 轉到文件尾
- Alt+F12 查看定義
- Shift+F12 查看引用
- Ctrl+K Ctrl+T 更改主題
- Ctrl+K Ctrl+S UI 界面修改快捷鍵
- Alt+Z 切換自動換行
當然也可以修改自己的快捷鍵,就像 settings.json 的位置一樣修改 keybindings.json 就可以了。不過我建議還是 Ctrl+K Ctrl+S 調出 UI 界面修改比較方便,所以這里就不放出 keybindings.json 的板子了。
其實看似快捷鍵一堆,常用的也沒多少,而且這些快捷鍵有許多也是編輯器的通用快捷鍵,所以上手很簡單。
以上就是 VScode 的簡要入門,看了這么多是不是感覺會的更少了……這就是標題從入門到更加入門的含義。