本指南面向使用 Vim、Emacs 或 Sublime Text 等文本編輯器的 Python 開發(fā)人員,為他們提供切換到 PyCharm 的信息。指南首先簡(jiǎn)要討論 IDE 的概念,然后探討具體差異。
Python 開發(fā)人員長(zhǎng)期以來使用了各種工具來編寫代碼。雖然界限模糊,但這些工具大致分為兩類:文本編輯器和集成開發(fā)環(huán)境(IDE)。簡(jiǎn)而言之,文本編輯器專注于單個(gè)文件的編輯,提供非常簡(jiǎn)潔的體驗(yàn)。
IDE 顧名思義,具有更廣闊的視野。它希望查看你的整個(gè)項(xiàng)目以及所有與編碼相關(guān)的活動(dòng),并將這些統(tǒng)一到一個(gè)一致且強(qiáng)大的用戶界面中。盡管這兩類工具有所重疊,但總體范圍是主要區(qū)別。
像 PyCharm 這樣的 IDE 會(huì)查看項(xiàng)目中的所有代碼、依賴項(xiàng)中的代碼以及平臺(tái)本身的代碼,因此它能在編碼活動(dòng)中提供大量幫助。這種分析和協(xié)助體現(xiàn)在許多強(qiáng)大的功能中:
雖然文本編輯器提供了一些這些功能,但 PyCharm 超越了基于字符串的操作,解決了代碼和語言的 語義,提供了智能協(xié)助。PyCharm 理解 Python,并理解你的代碼,因此它可以跳轉(zhuǎn)到符號(hào)定義的位置,或者你的類被使用的位置,或者在代碼庫中重構(gòu)方法及其用法。實(shí)際上,這些能力不僅限于 Python:從 IntelliJ 家族的其他成員中,PyCharm 繼承了一流的 IDE 支持,用于 Web 開發(fā)和許多其他領(lǐng)域。
除了這些編碼協(xié)助功能之外,PyCharm 還將相關(guān)操作集成到同一環(huán)境中:版本控制、數(shù)據(jù)庫管理、分析、測(cè)試運(yùn)行、遠(yuǎn)程環(huán)境等。每個(gè)功能都以集成的方式提供:在查看差異時(shí)應(yīng)用更改可以自動(dòng)觸發(fā)重新運(yùn)行測(cè)試。
最后,這種功能伴隨著以產(chǎn)品為中心的理念:一切開箱即用。雖然其他工具有一長(zhǎng)串可能的功能,但你需要自己組裝和維護(hù)整體。對(duì)于喜歡折騰的人來說,這很好。而使用 PyCharm 作為你的 IDE,這些功能開箱即用,并且得到專業(yè)支持,年復(fù)一年。
由于像 PyCharm 這樣的 IDE 涉及范圍廣泛,用戶界面(UI)比簡(jiǎn)單的文本編輯器需要更多的指導(dǎo)。例如,以下是 PyCharm 中一個(gè)典型的項(xiàng)目:
有關(guān)顯示或隱藏工具窗口的更多信息,請(qǐng)參閱用戶界面和工具窗口頁面。
仍然覺得太多?如果你是從文本編輯器過渡而來,想要簡(jiǎn)潔的外觀,PyCharm 有幾個(gè)解決方案:
實(shí)際上,PyCharm 通過以鍵盤為中心、搜索為導(dǎo)向的交互方式,擁抱了現(xiàn)代、簡(jiǎn)潔的趨勢(shì)。不想在菜單中點(diǎn)擊來格式化代碼?不僅有快捷鍵序列,還可以按 Ctrl + Shift + A 來搜索“格式化代碼”的操作:
如前所述,PyCharm 不僅關(guān)注單個(gè)文件,而是將項(xiàng)目視為完整的軟件解決方案。不僅是項(xiàng)目伴隨的軟件,還包括相關(guān)任務(wù)。
項(xiàng)目包含的內(nèi)容遠(yuǎn)不止這些工件。在項(xiàng)目中,你可能有 3 個(gè)文件以特定順序在標(biāo)簽頁中打開。這些信息保存在項(xiàng)目的元數(shù)據(jù)中,位于項(xiàng)目根文件夾的.idea 子目錄中。因此,下次打開項(xiàng)目時(shí),你會(huì)恢復(fù)到該配置。這不僅適用于配置:PyCharm 保存和恢復(fù)編輯時(shí)的更改,由本地歷史記錄支持,可以將代碼恢復(fù)到之前的狀態(tài)。PyCharm 的 IDE 中有大量?jī)?nèi)容是項(xiàng)目配置的一部分:Python 設(shè)置、運(yùn)行代碼的場(chǎng)景、數(shù)據(jù)庫連接信息等。
如果你目前使用的是文本編輯器,那么你進(jìn)入 PyCharm 的第一步將會(huì)是創(chuàng)建一個(gè)項(xiàng)目。你有多種選擇和機(jī)會(huì)。讓我們討論其中一些。
首先,你可能從空白開始,或者從磁盤上現(xiàn)有的目錄開始,或者從尚未檢出的遠(yuǎn)程存儲(chǔ)庫開始。
接下來,你可能有一個(gè)或多個(gè)想要在項(xiàng)目中使用的 Python 解釋器。PyCharm 支持本地安裝的 Python 2 和 3,以及創(chuàng)建或重新使用虛擬環(huán)境。它還支持基于 Anaconda 的解釋器、遠(yuǎn)程解釋器、Vagrant 和 Docker。你可以在開始 PyCharm 的“新建項(xiàng)目”向?qū)е霸O(shè)置這些,或者在項(xiàng)目創(chuàng)建期間指定(甚至創(chuàng)建)這些。此外,你也可以在創(chuàng)建項(xiàng)目后改變主意。
使用 PyCharm Professional Edition,我們讓開始使用流行項(xiàng)目類型變得容易。例如,創(chuàng)建一個(gè) Django 項(xiàng)目將生成遵循 Django 最佳實(shí)踐的目錄結(jié)構(gòu),并添加一個(gè)啟動(dòng) Django 服務(wù)器的“運(yùn)行配置”。
長(zhǎng)期使用 Vim 的用戶在其編輯器使用方式上有大量投資。幸運(yùn)的是,JetBrains 有一個(gè)非常強(qiáng)大且支持良好的 IntelliJ 插件,名為 IdeaVim,它是一個(gè)“用于基于 IntelliJ 平臺(tái)的 IDE 的 Vim 模擬插件”。
通過此插件,你可以在 PyCharm 內(nèi)部進(jìn)入 Vim 模擬模式。更多相關(guān)信息可在上述鏈接的 GitHub 頁面以及 Twitter 賬號(hào)和 PyCharm IdeaVim 屏幕錄像中找到。雖然有些過時(shí),但這里有一篇由前 Vim 用戶深入探討的評(píng)論。
學(xué)習(xí)如何在 PyCharm 中使用 IdeaVim 插件,請(qǐng)查閱使用 Vim 編輯器在 PyCharm 中(IdeaVim)。
也可以將 vim 配置為 PyCharm 的外部工具,具體方法參見 PyCharm:在 Vim、Emacs 或 Sublime Text 中打開當(dāng)前文件。
Emacs 和 vim 是面向硬核開發(fā)人員的兩個(gè)流行文本編輯器。PyCharm 提供了一個(gè)與許多 Emacs 快捷鍵序列匹配的鍵盤映射。
雖然 PyCharm 沒有像 IdeaVim 那樣全面的 Emacs 插件,但社區(qū)有一個(gè)活躍的插件 emacsIDEAs,它提供了一些來自 Emacs 和其擴(kuò)展(如 AceJump)的有用功能。
你可以將 Emacs 配置為 PyCharm 的外部工具,用于編輯文件。此過程在該教程中有詳細(xì)描述。
PyCharm 的 IntelliJ 基礎(chǔ)非常廣泛(許多 IDE 構(gòu)建在其之上)且非常成熟,這也帶來了另一個(gè)好處:PyCharm 非??啥ㄖ啤@?,它還提供了一種可選的、更暗的主題“Darcula”,以匹配現(xiàn)代編輯器趨勢(shì)。除了調(diào)整主題外,還可以定制許多外觀和感覺選項(xiàng):字體大小、顏色方案、工具欄設(shè)置、氣球行為等。
“它看起來如何”只是自定義選項(xiàng)的開始。我們討論了切換到不同的捆綁鍵盤映射。但你可以以多種方式擴(kuò)展和自定義鍵盤映射,將不同的快捷鍵映射到不同的操作。除此之外,PyCharm 的行為還可以擴(kuò)展:安裝插件、自定義操作“模板”、更改代碼意圖等。
這是一個(gè)來自其他工具的開發(fā)者們所青睞的強(qiáng)力功能:多光標(biāo)。Sublime Text 首次引入了這一概念,IntelliJ 為其平臺(tái)上所有 IDE 添加了這一功能。借助 PyCharm 的多光標(biāo)功能,可以使用多個(gè)插入符,每個(gè)插入符都可進(jìn)行獨(dú)立的 IDE 操作。這一功能在 PyCharm 多重選擇屏幕錄像中有詳細(xì)展示。
像 Emacs 和 vim 這樣的成熟文本編輯器以其豐富的方式將屏幕拆分為多個(gè)區(qū)域而聞名,允許多個(gè)文件同時(shí)可見。這些工具不僅限于基礎(chǔ)功能:你可以以豐富的方式在這些區(qū)域之間移動(dòng),垂直或水平拆分,重新拆分,并且所有這些都可以通過鍵盤完成。
PyCharm 也具備展示多個(gè)文件的成熟功能。最基本的,你可以將多個(gè)文件打開為標(biāo)簽頁,這些標(biāo)簽頁可以手動(dòng)重新組織或按字母順序排序。標(biāo)簽頁可以固定或脫離成獨(dú)立窗口。
除了標(biāo)簽頁,你還可以將編輯器窗口拆分為獨(dú)立的窗格,以同時(shí)顯示多個(gè)文件/標(biāo)簽頁。拆分可以垂直或水平進(jìn)行。你可以通過將標(biāo)簽頁移動(dòng)到相反組來重新排列當(dāng)前打開的文件。
最后,所有上述操作都可以通過鍵盤中心化的方式完成,使你能夠輕松處理多個(gè)文件和窗口,而無需使用鼠標(biāo)。
雖然文本編輯器提供了處理 Python 代碼運(yùn)行的工具,但 PyCharm 通過稱為運(yùn)行配置的設(shè)施將這一功能大大擴(kuò)展。這些運(yùn)行配置允許你定義與運(yùn)行 Python(或其他語言如 JavaScript)代碼相關(guān)的參數(shù)。然后,當(dāng)你運(yùn)行該運(yùn)行配置時(shí),所有相關(guān)設(shè)置都會(huì)應(yīng)用。
此外,PyCharm 在專用工具窗口中運(yùn)行你的代碼,該窗口為處理運(yùn)行中的代碼提供了許多功能:停止、重新運(yùn)行等。輸出顯示在迷你控制臺(tái)中,錯(cuò)誤顯示帶有可點(diǎn)擊行號(hào)的回溯。此工具窗口以及運(yùn)行和重新運(yùn)行代碼都可以通過鍵盤驅(qū)動(dòng)。
這些運(yùn)行配置還適用于特殊類型的運(yùn)行:帶有專用窗口顯示測(cè)試輸出的測(cè)試運(yùn)行程序配置、帶有可視化調(diào)試器的調(diào)試配置、測(cè)試覆蓋率運(yùn)行配置、分析運(yùn)行配置,甚至還有并發(fā)圖配置。所有這些都為專業(yè) Python 開發(fā)人員的工作流程提供了真正的價(jià)值。
最后,PyCharm Professional 為其支持的框架添加了新的運(yùn)行配置類型。例如,Pyramid 運(yùn)行配置了解 Pyramid 配置文件和 Pyramid 獨(dú)有的功能。
從命令行運(yùn)行
雖然 PyCharm 像其他應(yīng)用程序一樣傳統(tǒng)上啟動(dòng)(從桌面),但你也可以從命令行與 PyCharm 交互。這些可以在初始安裝期間設(shè)置。例如,在 Linux 和 macOS 上,/usr/local/bin/charm 可用于在 PyCharm 中打開文件。你還可以運(yùn)行檢查和使用 PyCharm 的差異工具。
打開單個(gè)文件
你無需創(chuàng)建項(xiàng)目即可打開特定文件。PyCharm 的打開菜單(或命令行“charm”程序)可以在現(xiàn)有項(xiàng)目的窗口或新窗口中打開單個(gè)文件。
臨時(shí)文件
如果你需要一個(gè)臨時(shí)編輯器來編寫代碼或文本片段,而不希望將其保存在項(xiàng)目中甚至文件中,PyCharm 提供了一種稱為臨時(shí)文件的設(shè)施。你可以創(chuàng)建與語言關(guān)聯(lián)的臨時(shí)文件(因此具有語法高亮顯示、代碼補(bǔ)全、可運(yùn)行等功能)或臨時(shí)緩沖區(qū)(小文本片段)。
這些臨時(shí)文件具有許多功能:你可以列出它們(最多五個(gè)),關(guān)閉和刪除它們,將它們與語言關(guān)聯(lián),并重新組織它們。臨時(shí)文件保存在項(xiàng)目中的一個(gè)特殊區(qū)域。
內(nèi)置提示
當(dāng)你首次安裝 PyCharm 時(shí),每次啟動(dòng)時(shí)會(huì)提供一個(gè)友好的提示。它還允許你關(guān)閉這些提示。如果你以后想查看更多提示,可以在主菜單中選擇幫助 | 每日一招。
安裝插件
正如前面多次提到的,PyCharm 和 IntelliJ 擁有大量 IDE 插件生態(tài)系統(tǒng)。PyCharm 本身擁有近 500 個(gè)插件,涵蓋許多不同類別。
實(shí)際上,PyCharm IDE 本身是由插件組成的。這就是例如 PyCharm 從 WebStorm 繼承許多 Web 功能的原因:它們通過插件共享相同的核心功能。
通過 PyCharm 的設(shè)置對(duì)話框,可以瀏覽、安裝、更新和刪除插件。此外,插件會(huì)與 PyCharm 本身一起檢查更新。如果插件有更新,系統(tǒng)會(huì)提示你下載并重新啟動(dòng) PyCharm。
多語言開發(fā)
雖然文本編輯器支持多種語言,但 PyCharm 在 Python 之外帶來的強(qiáng)大功能是獨(dú)一無二的。例如,PyCharm 是一流的 Web 開發(fā) IDE。它不僅提供 HTML、CSS 和 JavaScript 的語法高亮顯示和自動(dòng)完成,還提供完整的功能范圍:語義感知的代碼檢查、重構(gòu)、調(diào)試、啟動(dòng)實(shí)時(shí)服務(wù)器、將 SASS 文件轉(zhuǎn)換為 CSS、瀏覽 npm 運(yùn)行腳本等。
這也適用于 Web 開發(fā)之外的領(lǐng)域:IPython Notebook 模擬、reStructuredText 等。PyCharm 是如何做到這一點(diǎn)的?正如前面提到的,它與基于 IntelliJ 的其他 IDE 兄弟共享 JetBrains 插件。
迷你地圖
其他工具,如 Sublime Text 和 Visual Studio(通過插件),提供了一種可視化的滾動(dòng)方式。通過這種方式,正常的滾動(dòng)條被文檔的圖形縮略圖和你當(dāng)前的滾動(dòng)位置所取代。
PyCharm 用戶也可以通過 CodeGlance JetBrains 插件獲得此功能,該插件符合選定的主題。
更多建議: