【轉】我最終還是選擇了VS code!

原文鏈接:https://zhuanlan.zhihu.com/p/93239107

 

我最終還是選擇了VS code!

 

 

前言

兜兜轉轉,在開發工具方面我還是選擇了VS Code,原因非常簡單--遠程開發

工作之後,開發平臺慢慢就開始以Linux爲主。之所以選擇Linux,首先,是因爲它在編譯、操作等方面更加便捷省心。其次,是因爲和後期測試、部署環境更加統一。

但是,這就遇到了一個矛盾,日常辦公主要以windows爲主,而開發只能在無桌面的服務器端進行,這樣隨之而來的就是開發效率和便捷性的降低。雖然一些小的項目可以使用vim完成,但是在大一些的工程,就會覺得處處都顯得非常不順手。而且,對於記憶vim繁多的快捷鍵一直非常排斥,可能還是習慣的問題。

因此,在我的遠程開發之路上,就開始了長時間的變遷之路。

我的遠程開發之路

Pycharm+vim+Putty

 

這是我最先採用的方式,主要的編碼工作是在windows下用Pycharm完成,然後用SVN、SFTP同步到遠程服務器,然後使用Putty結合vim做一些小規模的開發,然後進行調試,打包、測試。雖然現在看起來會非常繁瑣,但是在當時眼界被侷限的時候,認爲這就是本應該有的遠程開發形式,所以,延續的很久。

MobaXterm

後來,我遇到了MobaXterm,使用幾個月之後我很驚歎,爲什麼有這麼強大的工具?

Mobaxterm相對於Putty是一款功能非常豐富的增強型終端模擬工具,更重要的是它集成了xming,能夠自動把遠程服務器下的窗口投影到本地,這樣的話我們就可以輕鬆打開帶有UI的客戶端。

因此,這時候我開始在遠程服務器上配置Pycharm和Python開發環境,然後使用MobaXterm打開Pycharm客戶端進行開發。

就這樣又延續了幾個月,我認爲,也許這就是遠程開發最完美的解決方案。

xshell+xming

再後來,我嘗試了一下xshell,然後就再也回不去了。經過對比之後逐漸凸顯出MobaXterm的缺點,也讓xshell的優點顯得更加突出,

  • 豐富而簡單的主題配置
  • 強大的快捷鍵
  • 反應迅速靈敏
  • 支持豐富的定製化功能

但是,隨之而來也遇到了一個問題。一直喜歡的有界面的Pycharm不能用了,xshell自家的Xmanger收費。只能自己安裝xming,設置轉發隧道,用xming顯示Pycharm客戶端。

這時候,我覺得也許我可以在探索遠程開發的道路上停下腳步了,但是,這時候我卻遇到了vs code。

VS Code遠程開發

最近兩年vs code在開發工具領域表現得非常搶眼,讓很多原本熱衷於eclipse、IntelliJ、Atom的同學紛紛轉向了vs code,並且對其讚不絕口。一直以來,我認爲vs code名不副實,它只不過是一個並沒有什麼特色之處,依靠插件而使其豐富起來的編輯器而已。因此,雖然我會安裝vs code,但是使用頻率缺少的可憐。

直到今年5月份微軟在PyCon 2019 大會上發佈了 VS Code Remote之後,我才發現它對我太具有誘惑力了。

我不願意爲了一點優勢而捨棄Pycharm強大的自動補全和代碼調試功能,但是,我願意爲了便捷的遠程開發去學着改掉自己的使用習慣,去適應一款新的開發工具。當然,前提是這款工具真的能夠驚豔到我的情況下,這一點vs code做到了,它在遠程開發方面的確讓我驚豔了一把。

爲什麼選擇vs code?

遠程開發對於開發工具並不算是一個新鮮的事情,其中在我們熟知的JetBrains家族(IntelliJ IDEA、Pycharm等)的開發工具裏就已經實現了遠程開發功能。但是,爲什麼只有vs code吸引到我了?

對比一下以IntelliJ IDEA爲代表的JetBrains家族開發工具和vs code的遠程開發就一目瞭然。

  1. IntelliJ遠程開發只有專業版纔有,而社區版沒有這項功能,而vs code免費即可使用遠程開發功能。
  2. IntelliJ的遠程開發時通過FTP、SFTP(File Transfer Protocol,文件傳輸協議)實現,它們的遠程開發的原理是通過文件傳輸協議連接到遠程服務器,通過上傳和下載的方式進行遠程遠程項目和本地項目的同步,這樣的缺點是:不能實時同步、操作繁瑣。而vs code是通過SSH(Secure Shell)的方式連接到遠程服務器,換句話說,vs code在遠程開發過程中扮演的角色更像是一款終端模擬工具,它不需要繁瑣的上傳和下載步驟,而且實時性更好,只需要在windows上保存一下,會瞬間同步到遠程開發機。

不得不佩服微軟在軟件方面的實力,一旦他們去專注做一件產品,真的會做到令人驚豔的地步。所以,經過多項的對比,我還是選擇了vs code作爲遠程開發工具。這樣,真的徹底解放了對終端模擬工具的依賴。

遠程開發配置

下面開始詳細講一下vscode遠程開發的配置。

第一步:安裝插件

配置遠程開發首先需要安裝一個名爲Remote Development的插件,具體操作步驟如下,

  • 點擊擴展按鈕
  • 搜索Remote Development
  • 安裝

第二步:配置遠程服務器

安裝插件之後,點擊遠程資源管理器,在SSH TARGETS配置遠程服務器,具體步驟如下,

  • 點擊齒輪圖標
  • 打開彈出的config文件
  • 分別配置Host、Hostname、User

這裏需要注意一個,Host是一個名稱,自己可以隨意命名。Hostname是遠程服務器的IP,User是用於登錄遠程服務器的賬戶名稱。

第三步:修改設置

打開vs code設置,搜索Show Login Terminal,勾選下方"Always reveal the SSH login terminal",記得一定要操作這一步,不然會一直提示報錯。

第四步:打開遠程連接窗口

把鼠標放在上一步配置的遠程連接條目上,點擊Connect to Host in New Window,然後就會在新的窗口打開我們想要的遠程連接。

配置免密登錄

由於vs code是通過SSH遠程連接到遠程服務器的方式進行遠程開發,因此,每次打開遠程連接是都會提示輸入密碼,顯然這是非常繁瑣的。不過,還好有不錯的解決方案,我們可以通過配置免密登錄的方式避免每次打開連接時都需要重複輸入密碼。

第一步:生成windows公鑰

這個需要windows配置有ssh工具,可以通過安裝git、openssh實現。

打開cmd,

$ ssh-keygen

然後一直點擊Enter鍵,不用輸入任何內容,最後會在C:\Users\user_name\.ssh路徑下生成公鑰文件,可以看到有一個id_rsa.pub文件,然後通過FTP等方式把這個文件上傳到遠程服務器。

第二步:配置遠程服務器

進入SSH配置目錄,

$ cd ~/.ssh
$ ls

查看一下是否有一個名爲authorized_keys的文件,如果沒有就創建一個,然後把剛上傳的id_rsa.pub中的內容附到authorized_keys文件中,

$ touch authorized_keys
$ cat ~/id_rsa.pub >> authorized_keys

第三步:修改文件權限

這一步非常重要,如果沒有這一步,前面的操作都沒有用。就是給authorized_keys修改爲600的權限,

$ chmod -R 600 authorized_keys

這樣就完成了免密登錄的配置。

輔助插件

一款工具,單憑它自帶的工具,是很難滿足不同人羣的需求的,因此,插件就成了一個不可或缺的部分。通過適當的插件配置能夠讓一款看似平淡無奇的工具瞬間變的豐富強大起來。我認爲vs code的優勢之一就是它豐富的插件及便捷的配置方式,在這裏,我推薦5款個人認爲不錯的vs code插件。

TabNine

當然首推還是這一款基於GPT-2語言模型的自動補全工具,我在前面一篇文章中花了一篇文章對這款插件進行了介紹。在這裏,我再次強烈推薦TabNine這款插件,哪怕你使用的不是vs code也可以嘗試一下這款插件。

TabNine和我認識中的自動補全工具有很大的不同,傳統的補全工具更多的是根據上下文信息和第三方庫進行補全,換句話說就是基於既有的內容進行補全。而TabNine更多的是偏向推理,它能夠根據開發者前面輸入的內容快速推理接下來要輸入的代碼,甚至參數、字符串、符號它都能夠準確的推理並補全。

Bookmarks

我們在開發過程中會經常進行跳轉或者翻頁,當經過一系列的跳轉之後想回到最初的位置卻發現無從下手了。在使用Pycharm時,可以通過快捷鍵給代碼添加上標籤,當我們想回到某一個位置時能夠使用快捷鍵或者搜索的方式快速定位到準確的位置,這也是Pycharm吸引我的地方之一,它也養成了我喜歡打標籤的習慣。

剛從Pycharm遷移到vs code在標籤這一塊會很不習慣,發現總是忘記之前所在代碼片段。最後發現,vs code也可以通過配置插件實現強大的標籤功能,這款插件就是Bookmarks。我們能夠使用Ctrl+Alt+KCtrl+Alt+JCtrl+Alt+L快捷鍵添加標籤,並且可以快速調整到指定標籤位置。

GitLens

多人開始過程中,版本管理工具是必不可少的,其中使用較多的就是Git。它在日常開發中佔據着非常重要的地位,因此版本管理在大多數開發工具中都是必備的功能之一。我之前一直使用Pycharm,我認爲它在版本管理方面已經做的很好了,但是,經過一段時間試用GitLens之後才發現,Pycharm在Git版本管理方面對比於GitLens真的是相差甚遠。

它能夠清晰的顯示當前文件 的修改時間、修改歷史,能夠可視化分支、作者、commit等信息,提供便捷而強大的對比功能。

TODO Highlight

我們在開發過程中,有時會爲了測試或某種原因,某段代碼需要之後進行修改和完善。如果就不做一些標記,時間久了、需要修改的多了,就很難區分出哪些是需要修改的、哪些是不需要修改的。因此養成做標記的好習慣對提升開發效率具有很大的幫助。

在開發過程中常用的待辦標記有TODOFIXME,在Pycharm中當我們使用這兩個標記時它能夠自動對其進行高亮顯示,這樣對於我們找到標記處非常方便。vs code可以通過安裝TODO Highlight插件來實現,這樣能夠突出顯示我們還有哪些內容有待完善,能夠避免我們檢查代碼過程中遇到的麻煩。

Code Runner

這是一款支持C、C++、Java、Python等主流編程語言快速運行的插件,它能夠便捷的運行當前活動頁代碼文件、能夠運行選定代碼段、運行自定義命令,對於調試代碼具有很大的幫助。


乾貨

乾貨 | 2019年共享免費資源整理(上):學習資源篇​mp.weixin.qq.com

乾貨 | 2019年共享免費資源整理(下):實用工具篇​mp.weixin.qq.com

作品精選

Jackpop:目錄 | 精選CV、Python等系列教程

Jackpop:大數據處理 | Spark&HDFS集羣配置及基本使用

Jackpop:實用工具 | 推薦3款令人驚豔的截圖工具

Jackpop:強烈推薦 | 這將會成爲一個優質的github項目

Jackpop:計算機小白如何開始機器學習的學習,有入門課程推薦嗎?

Jackpop:C盤快滿了,該如何清理?

Jackpop:2019 年雙十一有哪些值得購買的東西?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章