整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          開發(fā)你的酷炫裝備 Jetson TX1使用指南

          開發(fā)你的酷炫裝備 Jetson TX1使用指南

          能無(wú)人機(jī)、自主機(jī)器人、智能攝像機(jī)、自動(dòng)駕駛……今年最令硬件創(chuàng)客們著迷的詞匯,想必就是這些一線“網(wǎng)紅”了。而這些網(wǎng)紅的背后,幾乎都和計(jì)算機(jī)視覺(jué)與深度學(xué)習(xí)密切相關(guān)。

          深度學(xué)習(xí)是人工智能領(lǐng)域一個(gè)最新的分支,可以幫助計(jì)算機(jī)理解圖像、聲音和文本,但需要強(qiáng)大的數(shù)據(jù)處理能力作為支撐。

          NVIDIA Jetson TX1

          在今年的Embedded World、SX Create、FIRST Championship等大型活動(dòng)中,你都可以看到很多小型團(tuán)隊(duì)或者創(chuàng)業(yè)公司,所打造的應(yīng)用了深度學(xué)習(xí)技術(shù)的機(jī)器人和無(wú)人機(jī)系統(tǒng)。一套套完美的解決方案,背后都有一個(gè)共同點(diǎn)——NVIDIA JetsonTX1!

          如果說(shuō)Arduino或者樹梅派是很多創(chuàng)客們此前的最愛,那么Jetson TX1就是今年他們眼中的最酷“玩具”!

          GoPro自動(dòng)目標(biāo)跟蹤

          觀看視頻點(diǎn)擊鏈接:http://v.qq.com/x/page/b0309rmqniy.html

          創(chuàng)客們對(duì)Jetson興趣十足,比如上面這個(gè)就是基于Jetson TX1,以GoPro為基礎(chǔ),實(shí)現(xiàn)了運(yùn)動(dòng)拍攝中的目標(biāo)自動(dòng)跟蹤

          什么是Jetson TX1

          Jetson TX1是NVIDIA第二代嵌入式平臺(tái)開發(fā)者套件,雖然只有信用卡大小,但Jetson TX1 GPU模塊的浮點(diǎn)運(yùn)算能力卻達(dá)到1 Teraflops,相比Jetson TK1有巨幅提升。如此強(qiáng)大的性能,Jetson TX1顯然是智能無(wú)人機(jī)、機(jī)器人最理想的嵌入式解決方案。

          Jetson TX1 核心模塊

          別看核心模塊只有信用卡大小,身體里可暗藏玄機(jī):內(nèi)建256個(gè)CUDA核心的NVIDIA Maxwell GPU,64位ARM A57 CPU,4GB LPDDR4內(nèi)存、16GB閃存、藍(lán)牙、802.11ac Wi-Fi模塊和千兆以太網(wǎng)卡,運(yùn)行Linux for Tegra操作系統(tǒng)。

          Jetson TX1 開發(fā)者套件

          配上坐騎后的Jetson TX1是這個(gè)樣子的。主板提供了USB 3.0 Type A、USB 2.0、HDMI、M.2 Key E、PCI-E x4、千兆以太網(wǎng)、SD、SATA數(shù)據(jù)和供電等接口,儼然是臺(tái)全功能的PC;既然是開發(fā)者套件,怎能少了針對(duì)硬件創(chuàng)客的擴(kuò)展接口:GPIO、I2C、I2S、SPI、帶流控制的TTL UART、顯示器擴(kuò)展頭和攝像頭擴(kuò)展頭一個(gè)不少。

          Jetson TX1 開發(fā)者套件內(nèi)容詳情

          作為上一代Jetson TK1的用戶,自然不會(huì)放過(guò)性能如此強(qiáng)悍的Jetson TX1。經(jīng)過(guò)了一段時(shí)間的使用和體驗(yàn),這里向大家分享一下粗淺的使用體驗(yàn),同時(shí)以個(gè)人觀點(diǎn)聊聊Jetson TX1到底能為我們帶來(lái)哪些想象空間!

          開箱體驗(yàn)與基本使用

          1、開箱體驗(yàn)

          Jetson TX1自帶了底座,十分貼心。雖然包裝盒內(nèi)沒(méi)有附帶任何光盤等介質(zhì),但Jetson TX1線上資源十分豐富,囊括文檔及軟件工具,并且獲取十分方便。

          Jetson TX1 開發(fā)者套件廬山真面目

          Jetson TX1模塊已預(yù)先安裝在主板上,Wi-Fi天線連接線也已接好,同時(shí)整個(gè)核心模塊由一個(gè)巨大的散熱片覆蓋,并配備了風(fēng)扇,為了保證系統(tǒng)運(yùn)行穩(wěn)定和兼顧控制能耗,按照系統(tǒng)設(shè)定,該風(fēng)扇僅在系統(tǒng)高負(fù)荷運(yùn)行時(shí)才會(huì)啟動(dòng),平時(shí)系統(tǒng)主要依靠散熱片被動(dòng)散熱,由此可見NVIDIA在保證系統(tǒng)穩(wěn)定并兼顧控制能耗上的細(xì)致,畢竟這樣一塊計(jì)算能力達(dá)到1 Teraflops的Jetson TX1,功耗峰值才10W。

          Jetson TX1與Jetson TK1

          由于配備了更多的擴(kuò)展接口,所以Jetson TX1比Jetson TK1主板面積要大一些。較大的外形也暗示著TX1擁有的更強(qiáng)性能和帶給開發(fā)者的想象空間。

          2、開發(fā)環(huán)境搭建

          在正式進(jìn)入Jetson TX1開發(fā)的奇幻之旅前,先簡(jiǎn)單介紹一下Jetson TX1開發(fā)環(huán)境的配置,在這里我們需要預(yù)先準(zhǔn)備下列項(xiàng)目:

          NVIDIA開發(fā)者賬號(hào)

          該賬號(hào)需要在NVIDIA官網(wǎng)的開發(fā)者頁(yè)面進(jìn)行注冊(cè),并同時(shí)加入“Embedded Development Program”。這樣就可以獲取Jetson TX1相關(guān)的全部文檔和軟件包資源,包括嵌入式系統(tǒng)鏡像、開發(fā)工具以及NVIDIA提供的各種工具和軟件庫(kù)。

          注冊(cè)NVIDIA開發(fā)者帳號(hào)并加入“Embedded Development Program”

          NVIDIA為開發(fā)者提供了涵蓋Jetson TX1方方面面的文檔資源和軟件資源

          Jetson TX1相關(guān)的文檔和軟件工具都可以通過(guò)Embedded Download Center下載

          安裝妥當(dāng)?shù)腏etson TX1

          正確的電源、鼠標(biāo)、鍵盤,網(wǎng)絡(luò)和顯示器連接。Jetson TX1開發(fā)套件提供了2個(gè)USB接口,包括一個(gè)USB 2.0 Micro,雖然通過(guò)轉(zhuǎn)接器可以連接標(biāo)準(zhǔn)USB接口的設(shè)備,但是開發(fā)過(guò)程中經(jīng)常需要將Jetson TX1通過(guò)USB連接至Host電腦,所以這里我推薦大家可以使用USB 3.0 HUB來(lái)解決USB接口不足的問(wèn)題。

          安裝妥當(dāng)?shù)腏etson TX1

          JetPack開發(fā)工具套件

          可以登錄NVIDIA EmbeddedDownload Center下載。

          一臺(tái)運(yùn)行Ubuntu Linux 64位操作系統(tǒng)的Host電腦

          操作系統(tǒng)推薦使用Ubuntu 14.04 LTS64位版本,同時(shí)至少有10GB硬盤空閑空間。

          準(zhǔn)備完畢后,在Host電腦為JetPack安裝包增加運(yùn)行權(quán)限并執(zhí)行,JetPack安裝程序?qū)⑼ㄟ^(guò)圖形界面引導(dǎo)開發(fā)者完成開發(fā)環(huán)境的配置,開發(fā)者只需依照自己的開發(fā)配置在安裝程序的引導(dǎo)下做出選擇即可,整個(gè)過(guò)程非常簡(jiǎn)約,界面友好。

          值得注意的是JetPack安裝程序不僅可以在Host電腦和Jetson TX1上搭建開發(fā)環(huán)境,同時(shí)還可以對(duì)Jetson TX1進(jìn)行刷機(jī),用來(lái)恢復(fù)出場(chǎng)設(shè)置和升級(jí)最新的操作系統(tǒng)版本,使用JetPack刷機(jī)比用命令行工具更加簡(jiǎn)便和不易出錯(cuò)。

          在Host電腦上為JetPack安裝包添加運(yùn)行權(quán)限并執(zhí)行

          全程只需要依據(jù)安裝引導(dǎo)進(jìn)行配置即可

          在Jetson TX1上測(cè)試開發(fā)編譯環(huán)境是否安裝成功

          運(yùn)行/開發(fā)環(huán)境初探

          運(yùn)行環(huán)境方面,JetPack搭建好開發(fā)環(huán)境后,Jetson TX1將重啟并引導(dǎo)之圖形界面。目前Jetson TX1上最新的操作系統(tǒng)為L(zhǎng)inux For Tegra R24.1,該操作系統(tǒng)在用于ARM架構(gòu)的Ubuntu 14.04 LTS版本基礎(chǔ)上定制開發(fā)。Ubuntu在國(guó)內(nèi)擁有龐大的用戶基礎(chǔ)和社區(qū)環(huán)境,基于Ubuntu定制開發(fā)的Linux For Tegra對(duì)于發(fā)者們來(lái)說(shuō),在界面,命令和操作習(xí)慣等方面非常熟悉,極易上手;與此同時(shí),開發(fā)者使用過(guò)程中遇到的問(wèn)題,除了官方論壇外,也可以在更廣泛的Ubuntu操作系統(tǒng)社區(qū)環(huán)境內(nèi)向眾大神尋求幫助。

          Jetson TX1操作系統(tǒng) Linux for Tegra概覽

          一般來(lái)說(shuō),針對(duì)嵌入式平臺(tái)的開發(fā)有兩種編譯模式:原生編譯和交叉編譯。原生編譯就是直接在嵌入式平臺(tái)上編譯代碼并運(yùn)行,而交叉編譯就是在個(gè)人電腦等平臺(tái)編譯代碼,然后加載到嵌入式平臺(tái)運(yùn)行。我們?cè)贘etson TX1開發(fā)上使用交叉編譯。這里需要提醒一下各位小伙伴,交叉編譯需要在Jetson TX1和Host電腦間同步代碼,所以需要提前安裝和配置Git,否則在后續(xù)編譯執(zhí)行的時(shí)候會(huì)報(bào)錯(cuò)的呦,開發(fā)工具會(huì)深情地問(wèn)你“Can you tell me who you are”。

          NVDIA Nsight啟動(dòng)界面

          NVDIA Nsight操作界面

          Jetson TX1使用的開發(fā)工具NVDIA Nsight是基于eclipse定制開發(fā),其界面和操作習(xí)慣于eclipse基本保持一致,消除了開發(fā)人員的熟悉工具的時(shí)間和精力消耗。

          接下來(lái)分享下在Jetson TX上創(chuàng)建,編輯,生成和運(yùn)行一個(gè)項(xiàng)目的過(guò)程。

          新建項(xiàng)目

          NVIDIA Nsight新建項(xiàng)目中目標(biāo)系統(tǒng)設(shè)置

          由于使用交叉編譯模式,所以在新建項(xiàng)目時(shí),需要指定目標(biāo)系統(tǒng),即實(shí)際編譯運(yùn)行程序的系統(tǒng)——Jetson TX1。這里按提示輸入Jetson TX1的網(wǎng)絡(luò)地址,用戶名,以及Jetson TX1上CUDA Toolkit的安裝路徑就可以了。

          如果不知道Jetson TX1上CUDA Toolkit的路徑也沒(méi)有關(guān)系,新建項(xiàng)目向?qū)Ш苜N心的設(shè)置了一個(gè)“自動(dòng)檢測(cè)”的功能,只要輕輕一點(diǎn),向?qū)?huì)自動(dòng)搜尋CUDA Toolkit的路徑,非常方便。

          編輯代碼

          NVIDIA Nsight代碼編輯視圖

          NVIDIA Nsight代碼編輯與eclipse完全一致,只是增加針對(duì)CUDA代碼的代碼補(bǔ)全,高亮提示以及語(yǔ)法檢查,用慣eclipse的開發(fā)者絕對(duì)能感覺(jué)到屠龍?jiān)谑郑煜挛矣小?/p>

          生成/運(yùn)行項(xiàng)目

          NVIDIA Nsight遠(yuǎn)程運(yùn)行項(xiàng)目對(duì)話框

          同樣的,在按照工具的提示配置好Jetson TX1后,就可以完成程序的編譯,運(yùn)行,然后坐等收獲結(jié)果!

          軟硬件配置概覽

          在簡(jiǎn)單介紹了Jetson TX1以及它的開發(fā)環(huán)境后,現(xiàn)在從Jetson TX1的軟硬件配置入手,來(lái)探索Jetson TX1開發(fā)者套件帶給廣大開發(fā)者的無(wú)限可能。

          CUDA

          CUDA是整套平臺(tái)的核心,保證了Jetson TX1超高的計(jì)算性能。同時(shí),Jetson TX1也支持各種基于CUDA跨架的軟件庫(kù),從而可以用于多種高并行度計(jì)算和高數(shù)據(jù)密度的應(yīng)用場(chǎng)景,如機(jī)器學(xué)習(xí),深度學(xué)習(xí),大數(shù)據(jù)實(shí)施分析以及物聯(lián)網(wǎng)邊緣計(jì)算等。

          GPIO、I2C、I2S、SPI、帶流控制的TTL UART等接口

          豐富的接口給了今后基于Jetson TX1進(jìn)行擴(kuò)展開發(fā)的無(wú)限可能,即可以通過(guò)TTL UART、GPIO等接口實(shí)現(xiàn)其它單片機(jī)、嵌入式系統(tǒng)的所有功能外,還能通過(guò)自身強(qiáng)大的性能,升任其它單片機(jī)、嵌入式系統(tǒng),如樹梅派等無(wú)力支撐的高數(shù)據(jù)密度業(yè)務(wù)和高處理實(shí)時(shí)性業(yè)務(wù),如智能機(jī)器人,機(jī)器人,無(wú)人駕駛汽車等。

          攝像頭擴(kuò)展頭

          通過(guò)將攝像頭(最高支持4K)與Jetson TX1連接,并借助OpenCV和Visionworks進(jìn)行視覺(jué)計(jì)算。

          PCIe x4接口

          這使得Jetson TX1與其它擴(kuò)展板卡得以結(jié)合,并碰撞出創(chuàng)新的火花。如可以通過(guò)PCIe x4接口將可編程的FPGA接入系統(tǒng),協(xié)助處理通信,加解密等業(yè)務(wù),從而進(jìn)一步提升Jetson TX1針對(duì)特殊應(yīng)用場(chǎng)景的性能。

          USB 2.0 Client/Host接口

          USB2.0 Client/Host口也為很多應(yīng)用提供便利。一方面通過(guò)USB Host可以將各種USB外設(shè)連接在Jetson TX1上,此外,也可以通過(guò) USB Client 將Jetson TX1作為外設(shè)連接至電腦或其它設(shè)備,開發(fā)者完全可以隨意定義這個(gè)USB Client的具體行為和功能,即可以將Jetson TX1開發(fā)為具備任何希望功能的外設(shè)連接至電腦或其它設(shè)備。

          初步的使用感受

          在基礎(chǔ)開發(fā)環(huán)境配置過(guò)程中,最令人映像深刻的感受有以下兩點(diǎn):

          Jetson TX1規(guī)格

          NVIDIA提供的工具軟件包強(qiáng)大且易用

          首先,JetPack為用戶提供了從Jetson TX1系統(tǒng)鏡像燒錄,到Jetson TX1和Host電腦開發(fā)環(huán)境安裝配置的一站式解決方案,省去了用戶用在分別安裝、配置各個(gè)組件,解決版本匹配和組件間依賴關(guān)系上的時(shí)間和精力,使用戶可以方便快捷的完成環(huán)境的準(zhǔn)備,并將精力集中在產(chǎn)品的研發(fā)上。相比之下,我之前在PC和其他嵌入式平臺(tái)上,往往總要在環(huán)境配置上耗費(fèi)很多時(shí)間,需要想方設(shè)法地去解決組件版本不匹配和軟件依賴關(guān)系不滿足等問(wèn)題。

          其次,JetPack在安裝配置過(guò)程中向用戶提供了非常詳盡的操作引導(dǎo),使用戶,尤其是新手可以很順利的完成基礎(chǔ)環(huán)境的配置。例如在Jetson TX1操作系統(tǒng)映像燒錄過(guò)程開始時(shí),安裝程序會(huì)彈出提示窗口,詳細(xì)的介紹了如何將Jetson TX1設(shè)置為recovery模式以及相應(yīng)的注意事項(xiàng),并要求用戶確認(rèn)準(zhǔn)備妥當(dāng)后按鍵繼續(xù),最大程度的避免了用戶操作不當(dāng)造成的系統(tǒng)損壞;再例如在配置Jetson TX1軟件環(huán)境時(shí),安裝程序會(huì)以圖示的形式讓用戶選擇Jetson TX1與Host電腦的連接方式,直觀易懂。

          Jetson TX1開發(fā)套件

          Jetson TX1相關(guān)的輔助資源非常豐富

          NVIDIA圍繞Jetson TX1提供了從用戶手冊(cè),產(chǎn)品設(shè)計(jì)文檔,到工具軟件和內(nèi)核源碼等全套資料,便于不同水平的用戶查閱;同時(shí)還有專門針對(duì)Jetson嵌入式平臺(tái)的開發(fā)者論壇,方便用戶針對(duì)文檔中未涉及的問(wèn)題和使用經(jīng)驗(yàn)進(jìn)行提問(wèn)和交流,NVIDIA的官方支持人員也會(huì)在論壇中回復(fù)大家提出的各種技術(shù)問(wèn)題,為用戶的開發(fā)過(guò)程提供有力支持。在本次編譯環(huán)境的配置過(guò)程中,我就曾遇到交叉編譯報(bào)錯(cuò),eclipse提示在Jetson TX1上找不到對(duì)應(yīng)路徑的問(wèn)題,當(dāng)時(shí)查閱了很多文檔但都沒(méi)有找到問(wèn)題所在,最終在開發(fā)者論壇中通過(guò)查閱開發(fā)者的歷史提問(wèn)找到的問(wèn)題所在,是Jetson TX1端的Git沒(méi)有正確配置,最終配置好Git后,編譯錯(cuò)誤也迎刃而解。

          Jetson TX1憑借強(qiáng)悍的計(jì)算性能,相對(duì)超低的能耗,豐富的文檔和資源和多樣化的擴(kuò)展接口,得以成為開發(fā)者和創(chuàng)客們的有力工具。后面,作者還將深入到不同的應(yīng)用場(chǎng)景,深入探索Jetson TX1究竟如何幫助開發(fā)者實(shí)現(xiàn)無(wú)限可能,敬請(qǐng)期待!

          者 | Hugo Di Francesco

          譯者 | 無(wú)明

          Visual Studio Code 結(jié)合了輕量級(jí)文本編輯器的易用性和大型 IDE 風(fēng)格的功能,只需要極少的配置,但充其量也只能說(shuō)它“還湊合”。

          在過(guò)去的幾年,我做了很多 PHP、JavaScript 以及其他與 Web 相關(guān)的開發(fā)工作(HTML、CSS、React、Python、Ruby)。對(duì)于開發(fā)人員來(lái)說(shuō),代碼編輯器是工具箱中最重要的組成部分之一。好的編輯器可以保護(hù)你的手腕和手指免受重復(fù)性勞損的傷害,在經(jīng)歷長(zhǎng)時(shí)間的編碼之后,它可以讓你的眼睛免受失明的風(fēng)險(xiǎn)。

          與其他 Web 開發(fā)人員一樣,我也是從 Sublime 開始的。當(dāng)時(shí),代碼編輯器領(lǐng)域的競(jìng)爭(zhēng)還沒(méi)有這么激烈。當(dāng) Atom 變得更加成熟時(shí),我轉(zhuǎn)向了 Atom。我很快就在 Atom 中使用 Nuclide 來(lái)協(xié)助 React 和 PHP 開發(fā)。我還使用過(guò) VIM。我也嘗試了 Eclipse 和 IntelliJ 一小段時(shí)間,但我已經(jīng)習(xí)慣了 Atom 和 Sublime 的按鍵綁定,所以感覺(jué) Eclipse 和 IntelliJ 的不太好用。這就是我的編輯器選擇之旅。作為開發(fā)人員,我們有時(shí)喜歡走很長(zhǎng)的路。我的意思是,它畢竟只是一款編輯器,又何必要如此煞費(fèi)苦心呢?

          我最新的代碼編輯器冒險(xiǎn)之旅是 Visual Studio Code。它帶來(lái)了 IDE 風(fēng)格的功能,不僅具有經(jīng)典輕量級(jí)代碼編輯器的簡(jiǎn)單性,還提供了一些我想要但 Atom 可能永遠(yuǎn)不會(huì)提供的功能。

          它是跨平臺(tái)的,并且是免費(fèi)和開源的,可以在這里下載到:

          https://code.visualstudio.com/

          精心設(shè)計(jì)的 GUI

          VSCode 的 GUI 設(shè)計(jì)與 Atom 或 Sublime 完全不同,它從一個(gè)突出的側(cè)邊欄開始:


          側(cè)邊欄包含了以下項(xiàng)目:

          1. 資源管理器(文件樹)
          2. 搜索
          3. Git
          4. 調(diào)試
          5. 擴(kuò)展

          你可以通過(guò)這個(gè)菜單進(jìn)行搜索,并查找能夠滿足你需求的擴(kuò)展程序。我從來(lái)不在 Atom 中使用擴(kuò)展搜索,但因?yàn)?VSCode 的擴(kuò)展功能如此突出,我還是通過(guò)菜單安裝了一些擴(kuò)展程序。

          你似乎總能看到你需要使用的功能,你不需要知道所有的鍵盤快捷鍵才能成為高級(jí)用戶。

          強(qiáng)大的默認(rèn)設(shè)置

          VSCode 提供了開箱即用的“JavaScript、TypeScript、JSON、HTML、CSS、Less 和 Sass”智能感知,這一點(diǎn)很不錯(cuò)。在 Atom 中,我并沒(méi)有使用代碼提示插件,所以 VSCode 的智能感知顯得有點(diǎn)啰嗦,不過(guò),這也是我之前錯(cuò)過(guò)的東西。它會(huì)根據(jù)你安裝的擴(kuò)展程序告訴你代碼的哪些部分是無(wú)效的。例如,當(dāng)代碼中的每個(gè) const 都被標(biāo)記為錯(cuò)誤時(shí),你就該知道它不支持 ES6。

          高度可發(fā)現(xiàn)的擴(kuò)展程序

          當(dāng)你意識(shí)到需要安裝 ES6 插件時(shí),它會(huì)根據(jù)當(dāng)前的 workspace 向你推薦擴(kuò)展程序,例如,對(duì)于 ES5/ES6,它會(huì)建議安裝“Babel ES6/ES7”擴(kuò)展程序。這比在網(wǎng)上尋找安裝哪個(gè)插件要好得多。

          VSCode 的生態(tài)系統(tǒng)還沒(méi)有那么碎片化,可能是因?yàn)樗€比較新。對(duì)于某項(xiàng)任務(wù),通常只有一個(gè)包可用(比如用于 ES6 高亮和提示的包)。

          輕松分屏

          我老是記不住分屏的快捷鍵。VSCode 在打開文檔選項(xiàng)卡的右上角提供了一個(gè)圖標(biāo),可用它來(lái)切換屏幕模式。我會(huì)在編寫測(cè)試代碼時(shí)用到它,也就是說(shuō),我可以同時(shí)打開應(yīng)用程序代碼和測(cè)試代碼。在將代碼從一個(gè)框架(或語(yǔ)言)移植到另一個(gè)框架(或語(yǔ)言)時(shí),這個(gè)功能也很有用。

          我從來(lái)不知道還能這么做。為了偶爾用到的功能記住一個(gè)快捷鍵并不會(huì)帶來(lái)多大幫助,但是有了這個(gè)功能,就可以讓我避免老是來(lái)回切換選項(xiàng)卡。這樣可以減少上下文切換,更好的注意力聚焦可以提高生產(chǎn)力。

          git diff 視圖

          我沒(méi)有使用 git GUI,這對(duì)我來(lái)說(shuō)通常不是一個(gè)大問(wèn)題。在終端中使用大多數(shù) git 命令(pull、commit、add、status、rebase)都沒(méi)有問(wèn)題,只是 git diff 不太好用。VSCode 提供了 diff 視圖,我因此可以編寫更好的提交日志消息,因?yàn)楝F(xiàn)在可以看到每個(gè)文件的全部代碼差異,而不是像以前那樣運(yùn)行 git diff,然后還有記住使用 git commit 時(shí) diff 中都包含了哪些內(nèi)容。

          單擊導(dǎo)入包

          我從不在 Atom 中使用單擊導(dǎo)入包,因?yàn)橛玫貌欢唷5坏┯玫搅耍憔蜁?huì)覺(jué)得無(wú)需重新輸入文件名這一點(diǎn)其實(shí)是很棒的。

          內(nèi)置的終端 / 調(diào)試器

          我會(huì)對(duì) Atom 和 iTerm 進(jìn)行分屏。但事實(shí)證明,iTerm 用得并不多。在 VSCode 中,你只需要使用 cmd +或 ctrl +就可以召喚出終端。

          智能感知

          能夠查看類型函數(shù)定義是非常有用的。之前,如果忘記一個(gè)函數(shù)(比如 PHP 中的 array_push)的參數(shù)順序是怎樣的,我都需要去查找 API 文檔。現(xiàn)在,VSCode 可以直接告訴我應(yīng)該按照怎樣的順序傳遞參數(shù),那么我就可以繼續(xù)專注于手頭的任務(wù)。

          你還可以按住 cmd 或 ctrl 鍵來(lái)查看自己定義的變量和導(dǎo)入的引用。

          所有這些功能都有一些共同點(diǎn):它們是開發(fā)工作流程的一部分,但不會(huì)一直被用到。當(dāng)你需要使用它們時(shí),它們就能幫助你提高工作效率。

          一些插件

          VSCode 具有很高的定制化能力和可擴(kuò)展性,以下這些是我目前安裝過(guò)的一些插件:

          • VSCode Atom 按鍵映射:
          • https://github.com/waderyan/vscode-atom-keybindings
          • Sublime 3 模式下自動(dòng)關(guān)閉標(biāo)簽,比如你輸入</,它會(huì)自動(dòng)填充與之匹配的關(guān)閉標(biāo)簽:
          • https://marketplace.visualstudio.com/items?staticName=formaulahendry.auto-close-tag
          • 用于 VSCode 的 EditorConfig,用于設(shè)定每個(gè) tab 的空格數(shù)量或去除尾部空格:
          • https://github.com/editorconfig/editorconfig-vscode
          • PHP IntelliSense:
          • https://marketplace.visualstudio.com/items?staticName=felixfbecker.php-intellisense
          • Babel ES6/ES7 用于現(xiàn)代 JavaScript 代碼的語(yǔ)法高亮:
          • https://marketplace.visualstudio.com/items?itemName=dzannotti.vscode-babel-coloring

          結(jié) 論

          VSCode 是跨平臺(tái)、免費(fèi)和開源的。即使你是一個(gè)頑固的 Atom 或 Sublime 粉絲,也要試一試 VSCode。它可能會(huì)讓你大吃一驚。

          英文原文

          https://hackernoon.com/virtualstudio-code-the-editor-i-didnt-think-i-needed-16970c8356d5

          者:lucida

          鏈接:http://lucida.me/blog/sublime-text-complete-guide/


          # 摘要(Abstract)


          本文系統(tǒng)全面的介紹了 Sublime Text,旨在成為最優(yōu)秀的 Sublime Text 中文教程。


          # 更新記錄


          1.2014/09/27:完成初稿


          2.2014/09/28:


          更正打開控制臺(tái)的快捷鍵為 Ctrl + `

          更正全局替換的快捷鍵為 Ctrl + Alt + Enter


          3.2016/09/15:作者已全面轉(zhuǎn)向 Visual Studio Code


          # 前言(Prologue)


          Sublime Text 是一款跨平臺(tái)代碼編輯器(Code Editor),從最初的 Sublime Text 1.0,到現(xiàn)在的 Sublime Text 3.0,Sublime Text 從一個(gè)不知名的編輯器演變到現(xiàn)在幾乎是各平臺(tái)首選的 GUI 編輯器。而這樣優(yōu)秀的編輯器卻沒(méi)有一個(gè)靠譜的中文教程,所以我試圖通過(guò)本文彌補(bǔ)這個(gè)缺陷。


          # 編輯器的選擇(Editor Choices)


          從初學(xué)編程到現(xiàn)在,我用過(guò)的編輯器有 EditPlus、UltraEdit、Notepad++、Vim、TextMate 和 Sublime Text,如果讓我從中推薦,我會(huì)毫不猶豫的推薦 Vim 和 Sublime Text,原因有下面幾點(diǎn):


          1.跨平臺(tái):Vim 和 Sublime Text 均為跨平臺(tái)編輯器(在 Linux、OS X 和 Windows 下均可使用)。作為一個(gè)程序員,切換系統(tǒng)是常有的事情,為了減少重復(fù)學(xué)習(xí),使用一個(gè)跨平臺(tái)的編輯器是很有必要的。


          2.可擴(kuò)展:Vim 和 Sublime Text 都是可擴(kuò)展的(Extensible),并包含大量實(shí)用插件,我們可以通過(guò)安裝自己領(lǐng)域的插件來(lái)成倍提高工作效率。


          3.互補(bǔ):Vim 和 Sublime Text 分別是命令行環(huán)境(CLI)和圖形界面環(huán)境(GUI)下的最佳選擇,同時(shí)使用兩者會(huì)大大提高工作效率。


          # 個(gè)人背景(Personal Background)


          我是一名非常典型的程序員:平時(shí)工作主要在 Linux 環(huán)境下使用 Java 和 Python,偶爾會(huì)用 HTML+CSS+JavaScript 編寫網(wǎng)頁(yè);業(yè)余時(shí)會(huì)在 Windows 環(huán)境編寫一些 C# 程序(包括控制臺(tái)程序(Console Application)和移動(dòng)應(yīng)用(Mobile App),也會(huì)玩一些非主流語(yǔ)言(比如 Haskell,ML 和 Ruby 等)以拓展見識(shí)。


          所以這篇文章會(huì)我的個(gè)人工作內(nèi)容為主要使用場(chǎng)景(Scenario),盡管無(wú)法覆蓋到所有的使用場(chǎng)景,但我認(rèn)為依然可以覆蓋到絕大部分,如果您認(rèn)為我遺漏了什么內(nèi)容,請(qǐng)?jiān)谖恼孪旅婊貜?fù),我會(huì)盡量更新。


          # 本文風(fēng)格(Writing Style)


          受益于 K&R C 的寫作風(fēng)格,我傾向于以實(shí)際案例來(lái)講解 Sublime Text 的功能,所以本文中的例子均源于我在實(shí)際開發(fā)時(shí)遇到的問(wèn)題。


          此外,把本文會(huì)使用大量動(dòng)畫(GIF)演示 Sublime Text 的編輯功能,因?yàn)槲野l(fā)現(xiàn)圖片難以演示完整的編輯流程(Workflow),而視頻又過(guò)于重量級(jí)。本文的GIF動(dòng)畫均使用 ScreenToGif 進(jìn)行錄制。


          # 編輯器(Editor) vs 集成開發(fā)環(huán)境(Integrated Development Environment,下文簡(jiǎn)稱 IDE)


          我經(jīng)常看到一些程序員拿編輯器和 IDE 進(jìn)行比較,諸如 Vim 比 Eclipse 強(qiáng)大或是 Visual Studio 太慢不如 Notepad++ 好使之類的討論比比皆是,個(gè)人認(rèn)為這些討論沒(méi)有意義,因?yàn)榫庉嬈骱?IDE 根本是面向兩種不同使用場(chǎng)景的工具:


          1.編輯器面向無(wú)語(yǔ)義的純文本,不涉及領(lǐng)域邏輯,因此速度快體積小,適合編寫單獨(dú)的配置文件和動(dòng)態(tài)語(yǔ)言腳本(Shell、Python 和 Ruby 等)。


          2.IDE 面向有語(yǔ)義的代碼,會(huì)涉及到大量領(lǐng)域邏輯,因此速度偏慢體積龐大,適合編寫靜態(tài)語(yǔ)言項(xiàng)目(Java、C++ 和 C# 等)。


          我認(rèn)為應(yīng)當(dāng)使用正確的工具去做有價(jià)值的事情,并把效率最大化,所以我會(huì)用 Eclipse 編寫 Java 項(xiàng)目,用 Vim 編寫Shell,用 Sublime Text 編寫 JavaScript/HTML/Python,用 Visual Studio 編寫C#。


          前言到此結(jié)束,下面進(jìn)入正題。


          # 安裝(Installation)


          Sublime Text 官方網(wǎng)站 提供了 Sublime Text 各系統(tǒng)各版本的下載,目前Sublime Text 的最新版本是 Sublime Text 3。這里以 Windows 版本的 Sublime Text 安裝為例。


          注意在安裝時(shí)勾選 Add to explorer context menu,這樣在右鍵單擊文件時(shí)就可以直接使用 Sublime Text 打開。



          # 添加 Sublime Text 到環(huán)境變量


          使用 Win + R 運(yùn)行 sysdm.cpl 打開 “系統(tǒng)屬性”。



          然后在 “高級(jí)” 選項(xiàng)卡里選擇 “環(huán)境變量”,編輯 “Path”,增加 Sublime Text 的安裝目錄(例如 D:\Program Files\Sublime Text 3)。



          接下來(lái)你就可以在命令行里面利用 subl 命令直接使用 Sublime Text 了:


          subl file    :: 使用 Sublime Text 打開 file 文件
          subl folder  :: 使用 Sublime Text 打開 folder 文件夾
          subl .       :: 使用 Sublime Text 當(dāng)前文件夾


          # 安裝 Package Control


          前文提到 Sublime Text 支持大量插件,如何找到并管理這些插件就成了一個(gè)問(wèn)題,Package Control 正是為了解決這個(gè)問(wèn)題而出現(xiàn)的,利用它我們可以很方便的瀏覽、安裝和卸載 Sublime Text 中的插件。


          進(jìn)入 Package Control 的 官網(wǎng),里面有詳細(xì)的 安裝教程。Package Control 支持 Sublime Text 2 和 3,本文只給出 3 的安裝流程:


          1.使用 Ctrl + ` 打開 Sublime Text 控制臺(tái)。

          2.將下面的代碼粘貼到控制臺(tái)里:

          import?urllib.request,os,hashlib;?h?=?'7183a2d3e96f11eeadd761d777e62404'?+?'e330c659d4bb41d3bdf022e94cab3cd0';?pf?=?'Package?Control.sublime-package';?ipp?=?sublime.installed_packages_path();?urllib.request.install_opener(?urllib.request.build_opener(?urllib.request.ProxyHandler())?);?by?=?urllib.request.urlopen(?'http://sublime.wbond.net/'?+?pf.replace('?',?'%20')).read();?dh?=?hashlib.sha256(by).hexdigest();?print('Error?validating?download?(got?%s?instead?of?%s),?please?try?manual?install'?%?(dh,?h))?if?dh?!=?h?else?open(os.path.join(?ipp,?pf),?'wb'?).write(by)


          3.等待 Package Control 安裝完成。之后使用 Ctrl + Shift + P 打開命令板,輸入 PC 應(yīng)出現(xiàn) Package Control:



          成功安裝 Package Control 之后,我們就可以方便的安裝使用 Sublime Text 的各種插件:


          # 購(gòu)買(Purchase)


          Sublime Text 是一個(gè)收費(fèi)閉源軟件,這在一定程度上成為了我支持 Sublime Text 的理由(我心中的軟件靠譜程度:免費(fèi)開源 << 免費(fèi)閉源 < 收費(fèi)開源 < 收費(fèi)閉源):在 這里 購(gòu)買。


          不過(guò)不購(gòu)買 Sublime Text 也可以 “正常” 使用它,只是 Sublime Text 會(huì)時(shí)不時(shí)的彈出一個(gè)對(duì)話框提醒你購(gòu)買,此外窗口處會(huì)有一個(gè)很屌絲很 low 逼的 (UNREGISTERED)。(在高頻操作下,一般 20 分鐘提示一次,個(gè)人認(rèn)為算是很厚道了)


          也許不少人會(huì)覺(jué)著 Sublime Text 70 刀的價(jià)格太貴,但相比它的功能和帶來(lái)的效率提升,70 刀真的不值一提,如果你不方便使用 Paypal 付款可以郵件聯(lián)系我,你支付寶給我打款然后我?guī)湍愀犊睿瑑r(jià)格按當(dāng)日匯率折算(450 元左右)。



          概覽(Tour)


          # 基本概念(Basic Concepts)


          Sublime Text 的界面如下:



          1.標(biāo)簽(Tab):無(wú)需介紹。

          2.編輯區(qū)(Editing Area):無(wú)需介紹。

          3.側(cè)欄(Side Bar):包含當(dāng)前打開的文件以及文件夾視圖。

          4.縮略圖(Minimap):如其名。

          5.命令板(Command Palette):Sublime Text 的操作中心,它使得我們基本可以脫離鼠標(biāo)和菜單欄進(jìn)行操作。

          6.控制臺(tái)(Console):使用 Ctrl + ` 調(diào)出,它既是一個(gè)標(biāo)準(zhǔn)的 Python REPL,也可以直接對(duì) Sublime Text 進(jìn)行配置。

          7.狀態(tài)欄(Status Bar):顯示當(dāng)前行號(hào)、當(dāng)前語(yǔ)言和Tab格式等信息。


          # 配置(Settings)


          與其他 GUI 環(huán)境下的編輯器不同,Sublime Text 并沒(méi)有一個(gè)專門的配置界面,與之相反,Sublime Text 使用 JSON 配置文件,例如:

          {  
            "font_size": 12,  
              "highlight_line": true,
          }


          會(huì)將默認(rèn)字體大小調(diào)整為 12,并高亮當(dāng)前行。

          JSON 配置文件的引入簡(jiǎn)化了 Sublime Text 的界面,但也使得配置變的復(fù)雜,一般我會(huì)到 這里 查看可用的 Sublime Text 配置。


          # 編輯(Editing)


          Sublime Text 的編輯十分人性化——它不像 Vim 那樣反人類(盡管我也用 Vim 但我還是要說(shuō) Vim 的快捷鍵設(shè)定絕壁連代謝產(chǎn)物都不如),少量的快捷鍵就可以完成絕大多數(shù)編輯任務(wù)。


          # 基本編輯(Basic Editing)


          ↑↓←→ 就是 ↑↓←→,不是 KJHL,(沒(méi)錯(cuò)我就是在吐槽 Vim,尼瑪設(shè)成 WSAD 也比這個(gè)強(qiáng)啊),粘貼剪切復(fù)制均和系統(tǒng)一致。


          Ctrl + Enter 在當(dāng)前行下面新增一行然后跳至該行;Ctrl + Shift + Enter 在當(dāng)前行上面增加一行并跳至該行。



          Ctrl + ←/→ 進(jìn)行逐詞移動(dòng),相應(yīng)的,Ctrl + Shift + ←/→ 進(jìn)行逐詞選擇。



          Ctrl + ↑/↓ 移動(dòng)當(dāng)前顯示區(qū)域,Ctrl + Shift + ↑/↓ 移動(dòng)當(dāng)前行。




          # 選擇(Selecting)


          Sublime Text 的一大亮點(diǎn)是支持多重選擇——同時(shí)選擇多個(gè)區(qū)域,然后同時(shí)進(jìn)行編輯。


          Ctrl + D 選擇當(dāng)前光標(biāo)所在的詞并高亮該詞所有出現(xiàn)的位置,再次 Ctrl + D 選擇該詞出現(xiàn)的下一個(gè)位置,在多重選詞的過(guò)程中,使用 Ctrl + K 進(jìn)行跳過(guò),使用 Ctrl + U 進(jìn)行回退,使用 Esc 退出多重編輯。


          多重選詞的一大應(yīng)用場(chǎng)景就是重命名——從而使得代碼更加整潔。盡管 Sublime Text 無(wú)法像 IDE(例如 Eclipse)那樣進(jìn)行自動(dòng)重命名,但我們可以通過(guò)多重選詞+多重編輯進(jìn)行直觀且便捷的重命名:



          有時(shí)我們需要對(duì)一片區(qū)域的所有行進(jìn)行同時(shí)編輯,Ctrl + Shift + L 可以將當(dāng)前選中區(qū)域打散,然后進(jìn)行同時(shí)編輯:



          有打散自然就有合并,Ctrl + J 可以把當(dāng)前選中區(qū)域合并為一行:



          # 查找&替換(Finding&Replacing)


          Sublime Text 提供了強(qiáng)大的查找(和替換)功能,為了提供一個(gè)清晰的介紹,我將 Sublime Text 的查找功能分為 快速查找、標(biāo)準(zhǔn)查找 和 多文件查找 三種類型。


          # 快速查找&替換


          多數(shù)情況下,我們需要查找文中某個(gè)關(guān)鍵字出現(xiàn)的其它位置,這時(shí)并不需要重新將該關(guān)鍵字重新輸入一遍然后搜索,我們只需要使用 Shift + ←/→ 或 Ctrl + D 選中關(guān)鍵字,然后 F3 跳到其下一個(gè)出現(xiàn)位置, Shift + F3 跳到其上一個(gè)出現(xiàn)位置,此外還可以用 Alt + F3 選中其出現(xiàn)的所有位置(之后可以進(jìn)行多重編輯,也就是快速替換)。



          # 標(biāo)準(zhǔn)查找&替換


          另一種常見的使用場(chǎng)景是搜索某個(gè)已知但不在當(dāng)前顯示區(qū)域的關(guān)鍵字,這時(shí)可以使用 Ctrl + F 調(diào)出搜索框進(jìn)行搜索:


          以及使用 Ctrl + H 進(jìn)行替換:


          # 關(guān)鍵字查找&替換


          對(duì)于普通用戶來(lái)說(shuō),常規(guī)的關(guān)鍵字搜索就可以滿足其需求:在搜索框輸入關(guān)鍵字后 Enter 跳至關(guān)鍵字當(dāng)前光標(biāo)的下一個(gè)位置, Shift + Enter 跳至上一個(gè)位置, Alt + Enter 選中其出現(xiàn)的所有位置(同樣的,接下來(lái)可以進(jìn)行快速替換)。


          Sublime Text 的查找有不同的模式:Alt + C 切換大小寫敏感(Case-sensitive)模式, Alt + W 切換整字匹配(Whole matching)模式,除此之外Sublime Text還支持在選中范圍內(nèi)搜索(Search in selection),這個(gè)功能沒(méi)有對(duì)應(yīng)的快捷鍵,但可以通過(guò)以下配置項(xiàng)自動(dòng)開啟。

          "auto_find_in_selection": true


          這樣之后在選中文本的狀態(tài)下范圍內(nèi)搜索就會(huì)自動(dòng)開啟,配合這個(gè)功能,局部重命名(Local Renaming)變的非常方便:



          使用 Ctrl + H 進(jìn)行標(biāo)準(zhǔn)替換,輸入替換內(nèi)容后,使用 Ctrl + Shift + H 替換當(dāng)前關(guān)鍵字, Ctrl + Alt + Enter 替換所有匹配關(guān)鍵字。


          # 正則表達(dá)式查找&替換


          正則表達(dá)式 是非常強(qiáng)大的文本查找&替換工具,Sublime Text中使用 Alt + R 切換正則匹配模式的開啟/關(guān)閉。Sublime Text的使用Boost里的Perl正則表達(dá)式風(fēng)格。


          出于篇幅原因,本文不會(huì)對(duì)正則表達(dá)式進(jìn)行詳細(xì)介紹,Mastering Regex(中譯本:精通正則表達(dá)式)對(duì)正則表達(dá)式的原理和各語(yǔ)言下的使用進(jìn)行了詳細(xì)介紹。此外網(wǎng)上有大量正則表達(dá)式的優(yōu)秀教程(“正則表達(dá)式30分鐘入門教程” 和 MSDN正則表達(dá)式教程.aspx)),以及在線測(cè)試工具(regexpal 和 regexer)。


          # 多文件搜索&替換


          使用 Ctrl + Shift + F 開啟多文件搜索&替換(注意此快捷鍵和搜狗輸入法的簡(jiǎn)繁切換快捷鍵有沖突):



          多文件搜索&替換默認(rèn)在當(dāng)前打開的文件和文件夾進(jìn)行搜索/替換,我們也可以指定文件/文件夾進(jìn)行搜索/替換。


          # 跳轉(zhuǎn)(Jumping)


          Sublime Text 提供了強(qiáng)大的跳轉(zhuǎn)功能使得我們可以在不同的文件/方法/函數(shù)中無(wú)縫切換。就我的使用經(jīng)驗(yàn)而言,目前還沒(méi)有哪一款編輯器可以在這個(gè)方面超越Sublime Text。


          # 跳轉(zhuǎn)到文件


          Ctrl + P 會(huì)列出當(dāng)前打開的文件(或者是當(dāng)前文件夾的文件),輸入文件名然后 Enter 跳轉(zhuǎn)至該文件。


          需要注意的是,Sublime Text使用模糊字符串匹配(Fuzzy String Matching),這也就意味著你可以通過(guò)文件名的前綴、首字母或是某部分進(jìn)行匹配:例如, EIS 、 Eclip 和 Stupid 都可以匹配 EclipseIsStupid.java 。



          # 跳轉(zhuǎn)到符號(hào)


          盡管是一個(gè)文本編輯器,Sublime Text 能夠?qū)Υa符號(hào)進(jìn)行一定程度的索引。Ctrl + R 會(huì)列出當(dāng)前文件中的符號(hào)(例如類名和函數(shù)名,但無(wú)法深入到變量名),輸入符號(hào)名稱 Enter 即可以跳轉(zhuǎn)到該處。


          此外,還可以使用 F12 快速跳轉(zhuǎn)到當(dāng)前光標(biāo)所在符號(hào)的定義處(Jump to Definition)。



          比較有意思的是,對(duì)于 Markdown, Ctrl + R 會(huì)列出其大綱,非常實(shí)用。



          # 跳轉(zhuǎn)到某行


          Ctrl + G 然后輸入行號(hào)以跳轉(zhuǎn)到指定行:



          # 組合跳轉(zhuǎn)


          在 Ctrl + P 匹配到文件后,我們可以進(jìn)行后續(xù)輸入以跳轉(zhuǎn)到更精確的位置:


          1.@ 符號(hào)跳轉(zhuǎn):輸入 @symbol 跳轉(zhuǎn)到 symbol 符號(hào)所在的位置

          2.# 關(guān)鍵字跳轉(zhuǎn):輸入 #keyword 跳轉(zhuǎn)到 keyword 所在的位置

          3.: 行號(hào)跳轉(zhuǎn):輸入 :12 跳轉(zhuǎn)到文件的第12行。



          所以 Sublime Text 把 Ctrl + P 稱之為 “Go To Anything”,這個(gè)功能如此好用,以至于我認(rèn)為沒(méi)有其它編輯器能夠超越它。


          # 中文輸入法的問(wèn)題


          從 Sublime Text 的初版(1.0)到現(xiàn)在(3.0 3065),中文輸入法(包括日文輸入法)都有一個(gè)問(wèn)題:輸入框不跟隨。



          目前官方還沒(méi)有修復(fù)這個(gè) bug,解決方法是安裝 IMESupport 插件,之后重啟 Sublime Text 問(wèn)題就解決了。



          # 文件夾(Folders)


          Sublime Text 支持以文件夾做為單位進(jìn)行編輯,這在編輯一個(gè)文件夾下的代碼時(shí)尤其有用。在 File 下 Open Folder :



          你會(huì)發(fā)現(xiàn)右邊多了一個(gè)側(cè)欄,這個(gè)側(cè)欄列出了當(dāng)前打開的文件和文件夾的文件,使用 Ctrl + K, Ctrl + B 顯示或隱藏側(cè)欄,使用 Ctrl + P 快速跳轉(zhuǎn)到文件夾里的文件。


          # 窗口&標(biāo)簽(Windows & Tabs)


          Sublime Text 是一個(gè)多窗口多標(biāo)簽編輯器:我們既可以開多個(gè)Sublime Text窗口,也可以在一個(gè)Sublime Text窗口內(nèi)開多個(gè)標(biāo)簽。



          # 窗口(Window)


          使用 Ctrl + Shift + N 創(chuàng)建一個(gè)新窗口(該快捷鍵再次和搜狗輸入法快捷鍵沖突,個(gè)人建議禁用所有搜狗輸入法快捷鍵)。


          當(dāng)窗口內(nèi)沒(méi)有標(biāo)簽時(shí),使用 Ctrl + W 關(guān)閉該窗口。


          # 標(biāo)簽(Tab)


          使用 Ctrl + N 在當(dāng)前窗口創(chuàng)建一個(gè)新標(biāo)簽, Ctrl + W 關(guān)閉當(dāng)前標(biāo)簽, Ctrl + Shift + T 恢復(fù)剛剛關(guān)閉的標(biāo)簽。


          編輯代碼時(shí)我們經(jīng)常會(huì)開多個(gè)窗口,所以分屏很重要。Alt + Shift + 2 進(jìn)行左右分屏, Alt + Shift + 8 進(jìn)行上下分屏, Alt + Shift + 5 進(jìn)行上下左右分屏(即分為四屏)。



          分屏之后,使用 Ctrl + 數(shù)字鍵 跳轉(zhuǎn)到指定屏,使用 Ctrl + Shift + 數(shù)字鍵 將當(dāng)前屏移動(dòng)到指定屏。例如, Ctrl + 1 會(huì)跳轉(zhuǎn)到1屏,而 Ctrl + Shift + 2 會(huì)將當(dāng)前屏移動(dòng)到2屏。


          # 全屏(Full Screen)


          Sublime Text 有兩種全屏模式:普通全屏和無(wú)干擾全屏。


          個(gè)人強(qiáng)烈建議在開啟全屏前關(guān)閉菜單欄(Toggle Menu),否則全屏效果會(huì)大打折扣。


          F11 切換普通全屏:



          Shift + F11 切換無(wú)干擾全屏:



          # 風(fēng)格(Styles)


          風(fēng)格對(duì)于任何軟件都很重要,對(duì)編輯器也是如此,尤其是GUI環(huán)境下的編輯器。作為一個(gè)程序員,我希望我的編輯器足夠簡(jiǎn)潔且足夠個(gè)性。


          Notepad++ 默認(rèn)界面



          Sublime Text 默認(rèn)界面



          所以在用過(guò) Sublime Text 之后,我立刻就卸掉了 Notepad++。


          Sublime Text 自帶的風(fēng)格是我喜歡的深色風(fēng)格(也可以調(diào)成淺色),默認(rèn)主題是Monokai Bright,這兩者的搭配已經(jīng)很不錯(cuò)了,不過(guò)我們還可以做得更好:接下來(lái)我將會(huì)展示如何通過(guò)設(shè)置偏好項(xiàng)和添加自定義風(fēng)格/主題使得 Sublime Text 更加 Stylish。


          # 一些設(shè)置(Miscellaneous Settings)


          下面是我個(gè)人使用的設(shè)置項(xiàng)。



          設(shè)置之后的效果如下:



          # 主題(Themes)


          Sublime Text 有大量第三方主題:[https://sublime.wbond.net/browse/labels/theme],這里我給出幾個(gè)個(gè)人感覺(jué)不錯(cuò)的主題:


          Soda Light

          Soda Dark

          Nexus



          Flatland

          Spacegray Light



          Spacegray Dark


          # 配色(Color)


          colorsublime 包含了大量 Sublime Text 配色方案,并支持在線預(yù)覽,配色方案的安裝教程在 這里,恕不贅述。


          我個(gè)人使用的是 Nexus 主題和 Flatland Dark 配色,配置如下:

          "theme": "Nexus.sublime-theme","
          color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",

          效果如下:


          # 編碼(Coding)


          優(yōu)秀的編輯器使編碼變的更加容易,所以 Sublime Text 提供了一系列功能以提高開發(fā)效率。



          # 良好實(shí)踐(Good Practices)


          良好的代碼應(yīng)該是規(guī)范的,所以Google為每一門主流語(yǔ)言都設(shè)置了其代碼規(guī)范(Code Style Guideline)。我自己通過(guò)下面的設(shè)置使以規(guī)范化自己的代碼。


          # 代碼段(Code Snippets)


          Sublime Text 支持代碼段(Code Snippet),輸入代碼段名稱后 Tab 即可生成代碼段。



          你可以通過(guò)Package Control安裝第三方代碼段,也可以自己創(chuàng)建代碼段,參考這里。


          # 格式化(Formatting)


          Sublime Text 基本的手動(dòng)格式化操作包括:Ctrl + [ 向左縮進(jìn), Ctrl + ] 向右縮進(jìn),此外 Ctrl + Shift + V 可以以當(dāng)前縮進(jìn)粘貼代碼(非常實(shí)用)。


          除了手動(dòng)格式化,我們也可以通過(guò)安裝插件實(shí)現(xiàn)自動(dòng)縮進(jìn)和智能對(duì)齊:

          1.HTMLBeautify:格式化HTML。

          2.AutoPEP8:格式化Python代碼。

          3.Alignment:進(jìn)行智能對(duì)齊。


          # 自動(dòng)完成(Auto Completion)


          Sublime Text 支持一定的自動(dòng)完成,按 Tab 自動(dòng)補(bǔ)全。



          # 括號(hào)(Brackets)


          編寫代碼時(shí)會(huì)碰到大量的括號(hào),利用 Ctrl + M 可以快速的在起始括號(hào)和結(jié)尾括號(hào)間切換, Ctrl + Shift + M 則可以快速選擇括號(hào)間的內(nèi)容,對(duì)于縮進(jìn)型語(yǔ)言(例如Python)則可以使用 Ctrl + Shift + J 。



          此外,我使用 BracketHighlighter 插件以高亮顯示配對(duì)括號(hào)以及當(dāng)前光標(biāo)所在區(qū)域,效果如下:



          # 命令行(Command Line)


          盡管提供了 Python 控制臺(tái),但 Sublime Text 的控制臺(tái)僅支持單行輸入,十分不方便,所以我使用 SublimeREPL 以進(jìn)行一些編碼實(shí)驗(yàn)(Experiments)。



          # 其它(Miscellaneous)


          盡管我試圖在本文包含盡可能多的 Sublime Text 實(shí)用技能,但受限于篇幅和我的個(gè)人經(jīng)驗(yàn),本文仍不免有所遺漏,歡迎在評(píng)論里指出本文的錯(cuò)誤及遺漏。


          下面是一些可能有用但我很少用到的功能:


          1.宏(Macro):Sublime Text 支持錄制宏,但我在實(shí)際工作中并未發(fā)現(xiàn)宏有多大用處。


          2.其它平臺(tái)(Other Platforms):本文只介紹了 Windows 平臺(tái)上 Sublime Text 的使用,不過(guò) Linux 和 OS X 上Sublime Text的使用方式和Windows差別不大,只是在快捷鍵上有所差異,請(qǐng)參考 Windows/Linux快捷鍵 和 OS X 快捷鍵。


          3.項(xiàng)目(Projects):Sublime Text支持簡(jiǎn)單的 項(xiàng)目管理,但我一般只用到文件夾。


          4.Vim模式(Vintage):Sublime Text自帶 Vim模式。


          5.構(gòu)建(Build):通過(guò)配置,Sublime Text可以進(jìn)行 源碼構(gòu)建。


          6.調(diào)試(Debug):通過(guò)安裝 插件,Sublime Text 可以對(duì)代碼進(jìn)行調(diào)試。


          # 快捷鍵列表(Shortcuts Cheatsheet)


          我把本文出現(xiàn)的Sublime Text按其類型整理在這里,以便查閱。

          通用(General)

          1.↑↓←→:上下左右移動(dòng)光標(biāo),注意不是不是 KJHL !

          2.Alt:調(diào)出菜單

          3.Ctrl + Shift + P:調(diào)出命令板(Command Palette)

          4.Ctrl + ` :調(diào)出控制臺(tái)


          # 編輯(Editing)


          1.Ctrl + Enter:在當(dāng)前行下面新增一行然后跳至該行

          2.Ctrl + Shift + Enter:在當(dāng)前行上面增加一行并跳至該行

          3.Ctrl + ←/→:進(jìn)行逐詞移動(dòng)

          4.Ctrl + Shift + ←/→進(jìn)行逐詞選擇

          5.Ctrl + ↑/↓移動(dòng)當(dāng)前顯示區(qū)域

          6.Ctrl + Shift + ↑/↓移動(dòng)當(dāng)前行


          #選擇(Selecting)


          1.Ctrl + D:選擇當(dāng)前光標(biāo)所在的詞并高亮該詞所有出現(xiàn)的位置,再次 Ctrl + D 選擇該詞出現(xiàn)的下一個(gè)位置,在多重選詞的過(guò)程中,使用 Ctrl + K 進(jìn)行跳過(guò),使用 Ctrl + U 進(jìn)行回退,使用 Esc 退出多重編輯

          2.Ctrl + Shift + L:將當(dāng)前選中區(qū)域打散

          3.Ctrl + J:把當(dāng)前選中區(qū)域合并為一行

          4.Ctrl + M:在起始括號(hào)和結(jié)尾括號(hào)間切換

          5.Ctrl + Shift + M:快速選擇括號(hào)間的內(nèi)容

          6.Ctrl + Shift + J:快速選擇同縮進(jìn)的內(nèi)容

          7.Ctrl + Shift + Space:快速選擇當(dāng)前作用域(Scope)的內(nèi)容


          # 查找&替換(Finding&Replacing)


          1.F3:跳至當(dāng)前關(guān)鍵字下一個(gè)位置

          2.Shift + F3:跳到當(dāng)前關(guān)鍵字上一個(gè)位置

          3.Alt + F3:選中當(dāng)前關(guān)鍵字出現(xiàn)的所有位置

          4.Ctrl + F/H:進(jìn)行標(biāo)準(zhǔn)查找/替換,之后:

          5.Alt + C:切換大小寫敏感(Case-sensitive)模式

          6.Alt + W:切換整字匹配(Whole matching)模式

          7.Alt + R:切換正則匹配(Regex matching)模式

          8.Ctrl + Shift + H:替換當(dāng)前關(guān)鍵字

          9.Ctrl + Alt + Enter:替換所有關(guān)鍵字匹配

          10.Ctrl + Shift + F:多文件搜索&替換


          # 跳轉(zhuǎn)(Jumping)


          1.Ctrl + P:跳轉(zhuǎn)到指定文件,輸入文件名后可以:

          2.@ 符號(hào)跳轉(zhuǎn):輸入 @symbol 跳轉(zhuǎn)到 symbol 符號(hào)所在的位置

          3.# 關(guān)鍵字跳轉(zhuǎn):輸入 #keyword 跳轉(zhuǎn)到 keyword 所在的位置

          4.: 行號(hào)跳轉(zhuǎn):輸入 :12 跳轉(zhuǎn)到文件的第12行。

          5.Ctrl + R:跳轉(zhuǎn)到指定符號(hào)

          6.Ctrl + G:跳轉(zhuǎn)到指定行號(hào)


          # 窗口(Window)


          1.Ctrl + Shift + N:創(chuàng)建一個(gè)新窗口

          2.Ctrl + N:在當(dāng)前窗口創(chuàng)建一個(gè)新標(biāo)簽

          3.Ctrl + W:關(guān)閉當(dāng)前標(biāo)簽,當(dāng)窗口內(nèi)沒(méi)有標(biāo)簽時(shí)會(huì)關(guān)閉該窗口

          4.Ctrl + Shift + T:恢復(fù)剛剛關(guān)閉的標(biāo)簽


          # 屏幕(Screen)


          1.F11:切換普通全屏

          2.Shift + F11:切換無(wú)干擾全屏

          3.Alt + Shift + 2:進(jìn)行左右分屏

          4.Alt + Shift + 8:進(jìn)行上下分屏

          5.Alt + Shift + 5:進(jìn)行上下左右分屏

          6.分屏之后,使用 Ctrl + 數(shù)字鍵 跳轉(zhuǎn)到指定屏,使用 Ctrl + Shift + 數(shù)字鍵 將當(dāng)前屏移動(dòng)到指定屏


          主站蜘蛛池模板: 国产一区二区中文字幕| 国产激情一区二区三区 | 91无码人妻精品一区二区三区L| 中文字幕日韩丝袜一区| 一区二区在线免费视频| 鲁丝丝国产一区二区| 精品无码人妻一区二区免费蜜桃| 一区二区三区免费视频播放器| 毛片一区二区三区| 亚洲电影一区二区| 中文字幕永久一区二区三区在线观看 | 精品国产一区二区三区久| 蜜桃臀无码内射一区二区三区| 一区二区三区影院| 中文字幕一区二区视频| 人成精品视频三区二区一区 | 美女视频黄a视频全免费网站一区| 91在线视频一区| 无码人妻一区二区三区在线视频 | 精品国产精品久久一区免费式| 91视频一区二区三区| 人妻无码第一区二区三区| 久久婷婷久久一区二区三区| 夜夜嗨AV一区二区三区| 久久国产三级无码一区二区| 精品一区二区三区在线观看| а天堂中文最新一区二区三区| 波多野结衣一区在线观看| 在线观看国产一区二区三区| 日本福利一区二区| www.亚洲一区| 久久久久一区二区三区| 色老头在线一区二区三区 | 国产在线一区二区视频| 精品一区二区三区免费毛片| 痴汉中文字幕视频一区| 中文字幕精品一区二区精品| 精品国产一区二区三区久久| 2022年亚洲午夜一区二区福利 | 久久国产一区二区三区| 亚洲一区二区三区高清视频|