VSCode中Default Settings(JSON)與Open User Settings與Open Settings(JSON)與Open Workspace Settings(JSON)各自的作用與聯系

在VSCode中輸入快捷鍵ctrl+shift+p,然后輸入settings,會出現上圖中幾個選項,這幾個選項共同完成了對VSCode及其擴展插件的設置,下面說明它們各自的作用。
1. Preferences: Open Default Settings(JSON)
點擊該選項,會出現defaultSettings.json文件,該文件至少有幾千行,並且無法編輯,這個文件構成了VSCode及其擴展插件的基礎配置,你可以在這個基礎配置的基礎上任意修改。
那么問題來了,defaultSettings.json這個文件無法編輯,又該怎么修改呢?這就要用到下一個選項:Preferences: Open User Settings。
2. Preferences: Open User Settings
點擊該選項,會出現下方的圖形界面,這個界面比較友好,需要設置什么選項,搜索這個選項,然后通過勾選、下拉框選擇、輸入數字等等方式,就可以完成設置,並且這個設置已經生效。

再次強調,這個設置已經生效。
但是,如果此時點擊Preferences: Open Default Settings(JSON),打開defaultSettings.json文件,就會發現,defaultSettings.json文件中,對應的設置選項還是沒有改變。
這是因為defaultSettings.json文件是不可編輯的,這個文件存在的目的是,當我們亂改一通,想要回到初始值設置時,還有一個可以參考的地方。
但是有一個文件改變了,這就是我們接下來要說的:Preferences: Open Settings(JSON)。
3. Preferences: Open Settings(JSON)
點擊該選項,會出現settings.json文件,這個文件很短,只有幾十行。
每當在第2部分的圖形界面中修改了一個設置,settings.json文件中就會多一行。
每當在第2部分的圖形界面中將修改了的設置又修改回默認值,settings.json文件中就會少一行。
舉一個例子,打開第2部分中的圖形界面,搜索PHP:Suggest:Basic,就會打開和PHP相關的一個設置,默認情況下打上了勾:

現在,我們去掉這個勾:

此時,輸入快捷鍵ctrl+shift+p,然后輸入settings,然后點擊Preferences: Open Settings(JSON),打開這一部分正在介紹的settings.json文件,會發現多出了一行:

好,現在,再次打開第2部分中的圖形界面,搜索PHP:Suggest:Basic,然后我們再打上勾,也就是恢復它默認的設置。
這個時候,輸入快捷鍵ctrl+shift+p,然后輸入settings,然后點擊Preferences: Open Settings(JSON),打開這一部分正在介紹的settings.json文件,之前多出的一行消失了。
所以,這一部分介紹Preferences: Open Settings(JSON)的和第2部分介紹的Preferences: Open User Settings其實是同一個東西,只不過一個用json文件展示,一個用圖形界面展示,既然如此,有人就要問了,當想要變更設置的時候,可不可以直接改第3部分介紹的settings.json文件呢?
答案是,完全可以!如果對VSCode很熟悉的話,完全可以無視第2部分的圖形界面。
介紹到這里,對VSCode進行普通的設置已經沒有任何問題了,第4部分好像沒有必要了。
但其實不是這樣,在VSCode中,我們會建立各種各樣的工程,寫各種各樣的代碼,工程A需要在設置A下進行開發、工程B需要在設置B下進行開發、工程C需要在設置C下進行開發。。。。。。設置A、設置B、設置C有一些共同的部分,這些共同的部分通過前3個部分進行設置,而不同的部分,就要靠接下來介紹的第4部分:Preferences: Open Workspace Settings(JSON)。
4. Preferences: Open Workspace Settings(JSON)
點擊該選項,會在當前工程目錄下新建一個.vscode目錄,在.vscode目錄下,會多出一個settings.json文件,默認為空:

在這個settings.json文件中,可以寫一些設置選項,這些設置選項僅僅對當前工程目錄下的文件起作用.
這一部分settings.json文件的寫法,和第3部分中介紹的settings.json文件的寫法一樣。
但需要注意的是,第4部分中settings.json文件會覆蓋第3部分中settings.json文件,假設,現在有個設置項apple,第3部分中settings.json文件將apple設為true,而第4部分中settings.json文件將apple設為false,那么,在當前工程目錄下,apple這個設置項的值就是false。
5. 總結
當我們再次看到這張圖時,應該胸有成竹了:

最后總結一下不同設置的優先級,也就是當不同設置之間出現沖突時,聽誰的:
Open Workspace Settings(JSON) >Open Settings(JSON) =Open User Settings >Open Default Settings(JSON)
