
作者:魔王不造反
https://zhuanlan.zhihu.com/p/35176928
任何一個程式員都有自己喜愛的編輯器、工具、開發利器,有這樣一群人,對于
vim
這種上古神器難以駕馭、
IDE
又太笨重,這時候多了一個選擇 vscode!!!
vscode 重新定義了編輯器,它開源、免費、Runs everywhere,是一款介于 IDE 和編輯器之間的産物,我們不能用 IDE 的所有特性都往它身上壓,如果都可以的話不就是 IDE 嗎?不就是嗎?是以用起來的感覺你懂的,美滋滋(๑•̀ㅂ•́) ✧
那麼這家夥都有什麼牛逼之處呢?
特性
- 微軟開發,軟體品質沒的說
- 高顔值,界面非常漂亮,允許自定義更改
- 插件超級多,開發者很願意接受它
- 對我天朝程式員友好,你懂的
- 啟動速度比 atom 快,資源占用少
- 跨平台的特性能沒有嗎?能嗎?
- 對各種程式設計語言支援良好(當然我隻試過java/node/go/python)
- 自動補全、代碼高亮、代碼跳轉...
- 內建終端好用,可以用
指令打開檔案/檔案夾code
-
功能好用(簡直是 mini 的 IDE)debug
- ( ⊙ o ⊙ )啊!特性太多了我實在寫不完
說了這麼多你一定迫不及待想嘗試吧~ (也許并不是)那現在
安裝 vscode
我知道在座的各位其實根本不用我教你怎麼安裝,因為它是傻瓜式安裝啊!它家的官網是 code.visualstudio.com/,你隻需要在首頁下載下傳符合你作業系統的軟體即可。
支援
Windows
、
Linux
Mac
。
了解 vsccde
為什麼要了解它呢?你不了解它的組成就不知道怎麼把它用好(高能型大佬除外)。
布局
上面是 vscode 的布局,和大多數編輯器一樣,分為
- Editor 用來編輯檔案的主體區域。可以并排打開三個編輯器。
- Side Bar 包含不同的像浏覽器一樣的視圖來協助來完成工程。
- Status Bar 展示目前打開的工程和正在編輯的檔案的資訊。
- View Bar 在最左手邊,幫助切換視圖以及提供額外的上下文相關的提示,比如激活了Git的情況下,需要送出的變化的數目。
在我看來學習一款編輯器并不用像學習程式設計語言那樣,按照某個教程把所有的功能都學會,我更喜歡探索性的嘗試自己需要的那些東西,比如在 View Bar 中如何的5個功能,其實點一點就大概明白什麼意思了,查閱文字資料隻是讓自己更精确的掌握使用姿勢。
配置
vscode 的使用者配置分3個級别,分别是預設配置、全局配置和工作區配置,優先級也依次遞增。對于團隊項目,一些規範可以通過項目目錄下建一個
.vscode/setting.json
檔案進行配置,比如:
// tab長度
"editor.tabSize": 2,
// 啟用後,将在儲存檔案時剪裁尾随空格。
"files.trimTrailingWhitespace": true,
// 配置 glob 模式以排除檔案和檔案夾。
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.DS_Store": true,
"**/.idea": true
},
這個配置我一般是不用的,隻用使用者配置,反正電腦就一個使用者。配置一下字型大小、自動儲存等。
必裝插件
- Beautify:代碼高亮
- Terminal:直接喚起終端
- Project Manager:多個項目切換
- Auto Close Tag:标簽自動閉合(其實我覺得可以内置的)
怎麼安裝呢?
在擴充輸入框裡輸入你想用的插件就可以了,當然它還會經常推薦給我們排行比較高的插件,可以嘗試安裝,安裝完成後重新加載編輯器就可以使用了。
常用快捷鍵
下面這些快捷鍵是我常用的,如果你想看更全的可以看看 VS Code有哪些常用的快捷鍵
- 向上向下複制一行:Shift+Alt+Up 或 Shift+Alt+Down
- 注釋代碼:
cmd + /
- 切換側邊欄:
cmd + b
- 檔案夾中查找:
cmd + shift + f
- 查找替換:
cmd + shift + h
- 重構代碼:
fn + F2
- 代碼格式化:
,或Shift+Alt+F
後輸入Ctrl+Shift+P
format code
Ctrl+P 模式: (Mac 是 CMD+P)
- 直接輸入檔案名,快速打開檔案
-
顯示并運作指令>
-
跳轉到行數,也可以Ctrl+G直接進入(Mac 是 CMD+G):
-
跳轉到symbol(搜尋變量或者函數),也可以Ctrl+Shift+O直接進入@
-
根據分類跳轉symbol,查找屬性或函數,也可以Ctrl+Shift+O後輸入:進入@:
-
根據名字查找symbol,也可以Ctrl+T#
配置 Java 環境
先安裝 Java 語言相關的插件 4 枚
- Language Support for Java(TM) by Red Hat
- Debugger for Java
- Java Test Runner
- Maven for Java
有人想問了,媽耶還要4個插件,這麼麻煩的嗎?
第一個插件幹嘛的?運作 Java 代碼的,第二個呢?調試的,不調試可以不裝,第三個運作單元測試,不測試可以不裝,第四個建議裝上,一個标準化的 Java 工程一定不是幾個檔案組成,maven 是在Java環境下建構應用程式的軟體(本地要先安裝哦)。
這時候還需要配置一下
java.home
,我的是
"java.home": "/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home",
大功告成,現在你可以在 vs code 下建立一個
Mmp.java
開始寫
Hello vscode!
了。
public class Mmp {
public static void main(){
System.out.println("Hello vscode!");
}
}
點選 調試 或者按下
F5
運作這久經碼場的輸出語句。具體操作見文章底部視訊。
代碼定位
按住 ctrl 鍵滑鼠懸停在類上面會有類描述,點選即可進入類定義處,方法也是同樣。
代碼重構
很強大的一個地方就是我們有時候會修改字段、方法的名稱。
- 找到所有的引用:
Shift + F12
- 同時修改本檔案中所有比對的:
Ctrl+F12
- 重命名:比如要修改一個方法名,可以選中後按
,輸入新的名字,回車,會發現所有的檔案都修改了F2
- 跳轉到下一個
或Error
:當有多個錯誤時可以按Warning
逐個跳轉F8
- 檢視
:在diff
裡選擇檔案右鍵explorer
,然後需要對比的檔案上右鍵選擇Set file to compare
Compare with file_name_you_chose
運作 SpringBoot 項目
下載下傳一個
SpringBoot
的示例工程
git clone https://github.com/JavaExamples/spring-boot-helloworld.git
code spring-boot-helloworld
什麼? git
還不會
啟動調試,選擇
Java
語言,會提示我們
launch.json
檔案是下面這樣的
{
// 使用 IntelliSense 了解相關屬性。
// 懸停以檢視現有屬性的描述。
// 欲了解更多資訊,請通路: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch)-Application<spring-boot-helloworld>",
"request": "launch",
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopOnEntry": false,
"mainClass": "hello.Application",
"projectName": "spring-boot-helloworld",
"args": ""
},
{
"type": "java",
"name": "Debug (Attach)",
"request": "attach",
"hostName": "localhost",
"port": 0
}
]
}
主要看
mainClass
,隻有第一次生成這個檔案,确認後點選 調試 即可看到控制台日志
嘗試 Lombok
這個家夥你用不用都無妨,反正我是挺喜歡的。這裡就不啰嗦到底幹嘛的,簡單來說就是我可以用一個
@Data
注解幫我自動生成(編譯後生成)
getter
setter
toString
equals
hashCode
這些方法,反正多花時間寫這些代碼也不會提高你的能力,修改的時候還要多花時間,完全沒!必!要!好嗎?
按照官方的文檔我嘗試了不在
maven
環境下是行不通的!行不通的。如果你可以的話在文章評論下告訴我哈~
是以我們安裝一個 Lombok Annotations Support for VS Code 就可以了。
在 maven 工程中添加
lombok
依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
試一下吧