導航:首頁 > 編程語言 > textmate2安裝json

textmate2安裝json

發布時間:2023-05-16 17:31:10

㈠ textmate mac版這款多功能純文本編輯器如何使用有老司機有教程嗎感謝!

TextMate大部分嘗試模仿NSTextView系統組件的行為,正如應用程序(如Mail,Safari和基本上所有其他Cocoa應用程序)所使用的那樣。
本部分介紹了與文本編輯相關的一些額外功能。
一、自動配對字元(引號等)
編寫結構化文本(如標記或源代碼)時,會有成對的字元。例如,在編程語言中,你很少輸入一個左大括弧({)而不需要大括弧(})。
為了幫助您保持這些字元的平衡,TextMate會在輸入開頭字元後在插入符號後面插入適當的結束字元。如果輸入結束字元,TextMate足夠智能,可以覆蓋自動插入的字元。如果您鍵入開頭字元,然後使用反向刪除(⌫)將其刪除,則自動插入的字元也將被刪除。如果您只想刪除自動插入的字元,請改用forward delete(⌦)。
也可以通過選擇文本並鍵入開始字元來將選定內容打開/關閉。例如,如果您鍵入foo,選擇它並鍵入,(則TextMate將使它(foo)在插入結束括弧後放置插入符號。
實際的字元對在捆綁首選項中定義,針對不同的語言和上下文使用不同的設置。例如,在源代碼中,除了注釋和字元串之外,撇號被設置為使自己成為關閉字元。這是通過使用范圍選擇器實現的。
與自動配對字元有關的兩個有用的快捷方式(定義為源包中的宏並針對幾種語言重寫)是:
1.⌘↩
移動到行尾並插入換行符。
例如,如果你寫:
print("foo
然後,您將需要")脫字元的右側,現在可以使用⌘+來跳過這兩個字元並插入一個新行。
2.⇧⌘+
移動到行尾,插入一個;,然後插入一個換行符。
二、完成
TextMate在⎋(轉義)上有一個簡單而有效的完成功能。它將根據當前文檔中的匹配完成當前單詞。如果有多個匹配項,您可以連續按⎋循環選擇這些匹配項。也可以使用cycle向後循環。
這些比賽按照脫字元號的距離排序,這意味著候選人距離脫字型大小較近的候選人將被推薦在離候選人較遠的地方。
有兩種可能性來增加這種默認完成。兩者都通過捆綁首選項完成。
第一個選項是提供應始終提出的候選人名單。例如,Objective-C包含一個常用的Cocoa框架方法列表。這是一系列候選人,例如:
completions = ( 'retain', 'release', 'autorelease', 'description' );
另一個選項是設置一個自定義shell命令來收集完成。shell命令將具有可用的TM_CURRENT_word 環境變數(作為需要完成的單詞)以及其他變數。
例如,C包有一個自定義完成命令設置,用於當插入符號位於預處理程序include指令內時,它看起來像這樣:
completionCommand = 'find "$TM_DIRECTORY" \
-name "$TM_CURRENT_WORD*.h" -maxdepth 2 \
-exec basename "{}" \;|sort';
這將查找匹配項,當前目錄(和直接子目錄)中的任何文件,其中包含當前詞作為前綴和.h擴展名。
當您提供自己的完成命令(或列表)時,您可能想要禁用默認匹配。這可以通過設置disableDefaultCompletion來完成。
三、復制並粘貼
1剪貼板歷史記錄
每次復制或剪切文本時,都會將文本壓入堆棧。
通過按^⌘⌘V你會看到所有以前的剪報列表,並可以選擇一個你想要使用箭頭鍵粘貼。使用return來插入它並轉義以關閉列表。如果您關閉了該列表,則當前選定的剪輯將是您下次使用粘貼功能時粘貼的內容。無需從列表中選擇剪輯,您可以使用⇧⌘V將上一個剪輯粘貼到列表中。在那之前再次使用該鍵將前進到剪輯等等。要返回,您可以使用⌥⌘V。當您想從一個文檔創建多個副本,然後將這些LIFO樣式(後進先出)粘貼到另一個文檔(或同一文檔中的另一個位置)時,這些等價鍵就很有用。
2.重新縮進的粘貼
當粘貼文本時,TextMate將估計粘貼文本的縮進以及當前縮進級別,並調整粘貼文本以使其與當前縮進相匹配。
估算是使用重新縮進文本部分中提到的縮進規則完成的。
如果您暫時想要避免這種情況,您可以使用^⌘V粘貼文本。您也可以在首選項的文本編輯部分中永久禁用重新縮進粘貼。
四、編輯模式
1.免費編輯
您可以在編輯→模式子菜單(⌥⌘E)中啟用或禁用免編輯編輯。
在這種模式下,插入符號的移動不會受到行尾或製表位的限制。
在使用ASCII圖時,在給定列上插入某些內容(並且不想插入填充)以及其他幾種情況時,這很有用。
當進行欄選擇時,(暫時)啟用freehanded模式,允許您在行末尾進行選擇。
也可以通過在按住選項鍵(⌥)的同時單擊滑鼠來將插入符號放在行尾以外。
2.覆蓋模式
通過在編輯→模式子菜單(⌥⌘O)中啟用覆蓋模式,文檔中已存在的字元將在您鍵入而不是正常插入時被覆蓋。
使用列數據時這很有用,例如:
想像一下,我們想要覆蓋第一列中的一些值。有點類似,我們可能有一條固定寬度的行,並希望替換其中的一部分,但保留寬度,例如我們可以使用這樣的代碼,我們必須將該值與第20列對齊,但要覆蓋標簽:
printf("Value is %3d", 37).
五、查找和替換
除了標准查找對話框外,TextMate還有一個查找子菜單(位於編輯菜單中),它為您提供查找和替換操作的關鍵等價物。
1.在查找對話框中插入換行符和製表符
查找對話框使用正常的系統控制來接受輸入。您可以使用替換文本欄位旁邊的箭頭在單行和多行文本控制項之間切換。如果需要在任一文本欄位中插入換行符或製表符,可以在按住選項卡(⇥)或返回(↩)鍵的同時按住選項(⌥)。這將插入一個文字標簽或換行符。2查找剪貼板
兩個有用的關鍵等價物是⌘E和⌘G。第一個將選擇復制到共享查找剪貼板。這適用於大多數應用程序,並允許您通過按⌘G查找該字元串的下一個匹配項。
查找剪貼板適用於各種應用程序,因此無論是在Safari,TextEdit,Mail,TextMate,Terminal,Console還是類似應用程序中,都可以將選定文本復制到查找剪貼板,切換應用程序並使用⌘G查找該字元串。
另外TextMate提供了⇧⌘E將選擇復制到替換剪貼板。這通常對於保存查找對話框很有用,例如,如果您希望用|項目列表中的管道字元()替換換行符,選擇一個換行符,請按⌘E將其用作查找字元串。現在輸入a |,選擇它並按⇧⌘E,以便它被復制到替換剪貼板。
然後下一步是按^⌘F在整個文檔中執行替換,或者選擇希望替換的范圍,然後使用^⇧⌘F替代。
六、移動文本
1.增加/減少縮進級別
在文本菜單中,有一個Shift⌘和Shift Right操作綁定到⌘[和⌘]。這些將按一個選項卡的大小增加和減少縮進。
在許多歐洲的鍵盤布局中,這些鍵都比較尷尬,除此之外,還可以使用⌥⇥和⌥⇤(其中⇤使用achieved實現)。
2.向上/向下/向左/向右移動文本
如果您想要向上/向下移動一行/一行或移動一個字/列選擇,可以通過按住^⌘並使用箭頭鍵移動選擇來完成。它也適用於在沒有選擇的情況下向上/向下移動線條。
3.重新縮進文本
如果您的代碼已打破縮進,您可以選擇它並使用文本→縮進選擇(沒有選擇縮進當前行)。
估算縮進的規則是使用包首選項按語言設置的。有關更多詳細信息
七、選擇文字
選擇文字是通過按住⇧的同時使用正常的移動鍵來實現的。另外,編輯→選擇子菜單可以選擇當前的單詞,行,段落,括弧和整個文檔。
1.編輯多行
有時需要為可變長度的行添加後綴,或者可能需要編輯這些行的最後部分。
雖然您可以使用查找和替換,但更簡單的方法是選擇需要編輯的行,然後使用文本→編輯選中的每一行(⌥⌘A),並且插入符號將放在第一行的末尾在選擇線。
您現在可以鍵入新文本,刪除文本或返回並編輯現有文本,並且將通過所有(先前選定的)行進行鏡像。要離開此模式,只需將插入符號從當前行移開即可。
2.列選擇
可以通過按住⌥並用滑鼠進行選擇,或者定期選擇,然後按⌥一次(在兩種選擇之間切換)來選擇列數據。
您可以對列選擇使用所有常規操作,例如移動選區,替換選區,轉置(線),來自文本菜單的操作,通過shell命令過濾選區等。
八、列移動/打字
使用向上/向下箭頭鍵⌥會將插入符號移至當前列的第一行/最後一行。按住⇧將其選中。例如,如果您的列數據如上所示,並且前面有插入符號foo,請按⌥⇧↓鍵,它會將插入符向前移動,fud並將文本保留在之間foo並將其fud選中。
您現在可能想要按⌥一次切換到零寬度列選擇,然後開始輸入以在每行上鍵入。或者使用→→然後→選擇整個列(在列模式下)。
九、智能選項卡行為
當在一行的開頭使用Tab鍵時,TextMate會插入盡可能多的製表符,因為它估計對於該行是正確的。如果該行已經有文本,則脫字元將移到本文的前面。
如果該行已經具有正確的縮進(或以上),則將插入單個選項卡。
十、拼寫檢查
TextMate支持系統范圍內的「檢查拼寫時的拼寫」。這可以在編輯→拼寫子菜單中更改。
您可以調出拼寫錯誤的單詞來獲取拼寫建議。
由於TextMate適用於結構化文本,因此可以排除文件的部分內容。這是通過創建一個完成的首項在包編輯器,設置spellChecking到0並在填充范圍選擇與選擇的目標為不進行拼寫檢查。
默認情況下,源代碼除了字元串和注釋以外,還禁用了拼寫檢查,還包括HTML,LaTeX,Markdown等中的關鍵字,標簽和類似內容。
十一、使用空格而不是製表符
TextMate可以使用空格而不是製表符。這是通過點擊狀態欄中的「Tab Size」並啟用軟標簽來完成的。
此設置只會影響當前的語言和所有具有尚未設置選項的公共根目錄的語言。這同樣適用於拼寫檢查,軟包裝和實際標簽大小的狀態。當啟用軟標簽時,TextMate將在大多數情況下像使用硬標簽一樣操作,但文檔確實包含空格。

㈡ 華為padvscode配置

華為padvscode配置
想要優雅且高效的編寫代碼,必須熟練使用一款前端開發工具。但前端開發工具數不勝數,像HBuilder、Sublime Text、WebStorm、Visual Studio Code......等等,其中VSCode以其輕量且強大的代碼編輯功能和豐富的插件生態系統,獨受前端工師的青睞。網上有很多vscode的配置以及使用博客,但都沒有本篇那麼詳細且全面。

軟體下載
直接在官網進行下載

Visual Studio Code - Code Editing. Redefined
最近很多人留言說官網下載被限速,如果大家存在這種情況,可以在「前端碼頭」後台發送vscode獲取軟體包。

首頁

vscode設置成中文
vscode默認的語言是英亮扮春文,對於英文不好的小夥伴可能不太友好。簡單幾步教大家如何將vscode設置成中文。

按快捷鍵「Ctrl+Shift+P」。
在「vscode」頂部會出現一個搜索框。
輸入「configure language」,然後回車。
「vscode」裡面就會打開一個語言配置文件。
將「en-us」修改成「zh-cn」。
按「Ctrl+S」保存設置。
關閉「vscode」,再次打開就可以看到中文界面了。
當然如果你不願意設置,也可以直接安裝它的中文插件,還是很人性化的。

VScode用戶設置
1. 打開設置

文件--首選項--設置,打開用戶設置。VScode支持選擇配置,也支持編輯setting.json文件修敬耐改默認配置。個人更傾向於編寫json的方式進行配置,下面會附上我個人的配置代碼

這里解析幾個常用配置項:

(1)editor.fontsize用來設置字體大小,可以設置editor.fontsize : 14;

(2)files.autoSave這個屬性是表示文件是否進行自動保存,推薦設置為onFocusChange——文件焦點變化時自動保存。

(3)editor.tabCompletion用來在出現推薦值時,按下Tab鍵是否自動填入最佳推薦值,推薦設置為on;

(4)editor.codeActionsOnSave中的source.organizeImports屬性,這個屬性能夠在保存時,自動調整 import 語句相關順序,能夠讓你的 import 語句按照字母順序進行排列,推薦設置為true,即"editor.codeActionsOnSave": { "source.organizeImports": true };

(5)editor.lineNumbers設置代碼行號,即editor.lineNumbers :true;

我的個人配置,供參考:

{ "files.associations": { "*.vue": "vue", "*.wpy": "vue", "*.wxml": "html", "*.wxss": "css" }, "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe", "git.enableSmartCommit": true, "git.autofetch": true, "emmet.triggerExpansionOnTab": true, "emmet.showAbbreviationSuggestions": true, "emmet.showExpandedAbbreviation": "always", "emmet.includeLanguages": { "vue-html": "html", "vue": "html", "wpy": "html" }, //主題顏色 //"workbench.colorTheme": "Monokai", "git.confirmSync": false, "explorer.confirmDelete": false, "editor.fontSize": 14, "window.zoomLevel": 1, "editor.wordWrap": "on", "editor.detectIndentation": false, // 重新設定tabsize "editor.tabSize": 2, //失去焦點後自動保存 "files.autoSave": "onFocusChange", /缺升/ #值設置為true時,每次保存的時候自動格式化; "editor.formatOnSave": false, //每120行就顯示一條線 "editor.rulers": [ ], // 在使用搜索功能時,將這些文件夾/文件排除在外 "search.exclude": { "**/node_moles": true, "**/bower_components": true, "**/target": true, "**/logs": true, }, // 這些文件將不會顯示在工作空間中 "files.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/CVS": true, "**/.DS_Store": true, "**/*.js": { "when": "$(basename).ts" //ts編譯後生成的js文件將不會顯示在工作空中 }, "**/node_moles": true }, // #讓vue中的js按"prettier"格式進行格式化 "vetur.format.defaultFormatter.html": "js-beautify-html", "vetur.format.defaultFormatter.js": "prettier", "vetur.format.defaultFormatterOptions": { "js-beautify-html": { // #vue組件中html代碼格式化樣式 "wrap_attributes": "force-aligned", //也可以設置為「auto」,效果會不一樣 "wrap_line_length": 200, "end_with_newline": false, "semi": false, "singleQuote": true }, "prettier": { "semi": false, "singleQuote": true } } }
最近經常有人微信問我,這個配置代碼寫在哪裡?

新版的vscode設置默認為UI的設置,而非之前的json設置。如果你想復制我上面這段代碼進行配置,可以進行下面的修改

文件>首選項>設置 > 搜索workbench.settings.editor,選中json即可改成json設置;

禁用自動更新

文件 > 首選項 > 設置(macOS:代碼 > 首選項 > 設置,搜索update mode並將設置更改為none。

開啟代碼提示設置

第一步:點擊左下角點擊設置圖標,找到並點擊「setting」

第二步:到搜索框里搜索「prevent」--->並取消此項的勾選

常用的快捷鍵
高效的使用vscode,記住一些常用的快捷鍵是必不可少的,我給大家羅列了一些日常工作過程中用的多的快捷鍵。

以下以Windows為主,windows的 Ctrl,mac下換成Command就行了

對於 行 的操作:

重開一行:游標在行尾的話,回車即可;不在行尾,ctrl + enter 向下重開一行;ctrl+shift + enter 則是在上一行重開一行
刪除一行:游標沒有選擇內容時,ctrl + x 剪切一行;ctrl +shift + k 直接刪除一行
移動一行:alt + ↑ 向上移動一行;alt + ↓ 向下移動一行
復制一行:shift + alt + ↓ 向下復制一行;shift + alt + ↑ 向上復制一行
ctrl + z 回退

㈢ 如何打造一款屬於自己的 Visual Studio Code 顏色主題

Visual Studio Code 是我在最近一年中最喜歡的一款編輯器,微軟每一次豎拆的更新都會給大家帶來驚喜,更是令人愈加喜歡。之前一直使用內置的顏色主題 Light+ 和 Dark+ ,但近來突然覺得前者顏色區分度不高,一眼看上去就密密麻麻的一對代碼,而後者則是被選中的文本背景色太淺,跟編輯器的背景顏色很相似,很難區分出來,於是萌生了要製作一款自己的顏色主題的想法。經過幾天的研究,終於搗鼓出來了 Lei Theme 系列顏色主題。

先來看看其中兩款主題的效果:

一般來說,我們並不需要重頭來製作一款顏色主題,首先需要選擇一款自己最喜歡的顏色主題(或者說先找一款與自己的想法最相似的顏色主題),然後在此基礎上渣猛進行些許調整即可。另外如果想將顏色主題發布到微軟的 Visual Studio Code 擴展商店上,還需要注冊一個微軟開發者賬號,並通過 vsce 工具來發布出去,下文會對此進行詳細說明。
tmTheme 格式的顏色主題

TextMate 曾是多年前最流行的代碼編輯器之一,其顏色主題的文件後綴為 .tmTheme ,在本文中我們將其簡稱為 tmTheme 格式。Visual Studio Studio 的顏色主題採用的是標準的 TextMate 主題格式,我們可以參考這篇文章 Writing a TextMate Grammar: Some Lessons Learned ,大概可以理解為這樣: 編輯器對代碼進行解析後,會為每個元素指定一個 scope ,這個 scope 即表明此元素是一個關鍵字還是一個常量,又或者是一個標點符號,通過 tmTheme 格式的文件來定義相應 scope 的文字樣式。

根據該文章可知道以下是常見的 scope 列表:

comment
constant
constant.character.escape
constant.language
constant.numeric
declaration.section entity.name.section
declaration.tag
deco.folding
entity.name.function
entity.name.tag
entity.name.type
entity.other.attribute-name
entity.other.inherited-class
invalid
invalid.deprecated.trailing-whitespace
keyword
keyword.control.import
keyword.operator.js
markup.heading
markup.list
markup.quote
meta.embedded
meta.preprocessor
meta.section entity.name.section
meta.tag
storage
storage.type.method
string
string source
string.unquoted
support.class
support.constant
support.function
support.type
support.variable
text source
variable
variable.language
variable.other
variable.parameter

以下是一個 tmTheme 格式文件的代碼片段:

<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>
<string>keyword.control,keyword.other,variable.language,storage.type,storage.modifier,keyword.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0808D1</string>
</dict>如纖橋
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#cd3131</string>
</dict>
</dict>

從上面的代碼可以看出,其實這個 tmTheme 格式的文件似乎也挺簡單的,然而初學者而言,難的是 不知道 scope 怎麼寫 ,下文會循序漸進地對此進行說明。
創建顏色主題項目

根據官方文檔,我們先執行以下命令安裝 Yeoman 代碼生成工具來創建一個默認的顏色主題項目:

$ npm install -g yo generator-code

安裝完畢之後,進入 ~/.vscode/extensions 目錄執行以下命令啟動生成器:

$ yo code

說明: ~/.vscode/extensions 表示用戶根目錄下的 .vscode/extensions 目錄,之所以在此處新建項目主要是為了不用發布到擴展商店也可以在本地進行使用,並且方便調試。

選擇 New Color Theme 創建顏色主題項目:

_-----_ ╭——————————————————————————╮
| | │ Welcome to the Visual │
|--(o)--| │ Studio Code Extension │
`---------´ │ generator! │
( _´U`_ ) ╰——————————————————————————╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `

? What type of extension do you want to create?
New Extension (TypeScript)
New Extension (javaScript)
❯ New Color Theme
New Language Support
New Code Snippets

接著需要在命令行下互動式地填寫一些問題,以下是我在執行過程中填寫的內容:

? What type of extension do you want to create? New Color Theme
URL (http, https) or file name of the tmTheme file, e.g., http://www.monokai.nl/blog/wp-content/asdev/Monokai.tmTheme.
? URL or file name: http://www.monokai.nl/blog/wp-content/asdev/Monokai.tmTheme
? What's the name of your extension? my-theme
? What's the identifier of your extension? my-theme
? What's the description of your extension?
? What's your publisher name? leizongmin
? What's the name of your theme shown to the user? my-theme
? Select a base theme: Dark

需要說明的是,第一個問題 URL (http, https) or file name of the tmTheme file 需要提供一個已有的 tmTheme 文件作為基礎,此處可直接復制示例中的 URL 。

稍等片刻,工具自動生成了項目之後,會提示我們執行以下命令開始編輯代該項目:

$ cd my-theme
$ code .

以下是生成的項目的文件結構:

.
├—— README.md
├—— package.json (擴展信息文件)
├—— themes
│ └—— Monokai.tmTheme (顏色主題定義文件)
└—— vsc-extension-quickstart.md (幫助文件,上面詳細說明操作步驟)

首先看看 package.json 文件:

{
"name": "my-theme",
"displayName": "my-theme",
"description": "",
"version": "0.0.1",
"publisher": "leizongmin",
"engines": {
"vscode": "^1.5.0"
},
"categories": [
"Themes"
],
"contributes": {
"themes": [
{
"label": "my-theme",
"uiTheme": "vs-dark",
"path": "./themes/Monokai.tmTheme"
}
]
}
}

contributes 中定義了此擴展項目包含的內容,其中 themes 表示顏色主題,是一個數組,我們可在此處放入多個顏色主題。以下是 themes 中每個元素的定義:

label 表示顏色主題的名稱,即在 Preferences: Color Theme 列表中顯示的名稱
uiTheme 是指編輯器 UI 的顏色,可選為 vs-light 和 vs-dark ,如果我們的顏色主題是深色系的,就選 vs-dark
path 是 tmTheme 文件的位置

為了避免混淆,我們可以將文件 ./themes/Monokai.tmTheme 改名為 ./themes/my-theme.tmTheme ,並修改 package.json 相應的位置。

現在在 Visual Studio Code 中按快捷鍵 ⌘Command + Shift + P 打開命令面板(Windows / Linux 系統應為 Ctrl + Shift + P ),輸入 Color Theme 並按回車,再中列表中選擇 my-theme 按回車即可使用剛剛創建的新顏色主題:

從上圖可以看出,這其實就是一個標準的 Monokai 主題。
tmTheme 編輯器

從生成的 vsc-extension-quickstart.md 文件中我們得知有一款 Web 版的在線 tmTheme 編輯器 ,通過該編輯器可以進行可視化地編輯 tmTheme 文件。比如以下視頻是更改 String 和 Keyword 顏色的示例:
你的瀏覽器不支持 標簽.

主要的操作方法為:

在左側 Scope Name 列表中選中一項,然後雙擊 FG 列上的顏色(FG 表示 foreground,即前景顏色),然後選擇要更改的顏色即可,可以看到代碼預覽區域的顏色會實時改變
點擊頂部欄的【Download】按鈕即可下載編輯後的 tmTheme 文件,直接將其覆蓋項目中的 ./themes/my-theme.tmTheme 文件即可
在 Visual Studio Code 中按快捷鍵 ⌘Command + Shift + P 打開命令面板,輸入 Reload Window 並按回車即可看到修改後的顏色主題

但是,在一些實現細節上,Visual Studio Code 並不與該 tmTheme 編輯器一致,所以我們在該在線編輯器上看到的效果可能與 Visual Studio Code 上稍有不同,所以我們可能還需要直接編輯 tmTheme 文件。
如何知道 scope 是什麼

下面是這款主題中,模板字元串的渲染效果:

從圖中可以看到,模板字元串中的字元串和變數的顏色都是一樣的,而假如我想改變模板字元串中變數的顏色,卻是無從下手,因為即使翻遍 TextMate 官方文檔中關於 tmTheme 的介紹也找不到模板字元串的 scope 是什麼。

其實我們可以藉助 Visual Studio Code 的開發者工具來找到任意元素的 scope ,以下是演示視頻:
你的瀏覽器不支持 標簽.

從開發者工具中我們可以看到模板字元串中 ${ 的樣式是:

token block ts punctuation definition meta string begin function arrow new expr template expression template-expression

而模板變數 file 的樣式是:

token block ts meta variable other readwrite string function arrow new expr template expression

再結合文首對於 scope 介紹的文章,我們假設我們要的 scope 名為 template.expression 。接著打開文件 ./themes/my-theme.tmTheme ,仿照該文件的格式,我們添加以下代碼在對應位置:

<dict>
<key>name</key>
<string>Template Expression</string>
<key>scope</key>
<string>template.expression</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#23C4FA</string>
</dict>
</dict>

再按快捷鍵 ⌘Command + Shift + P 打開命令面板,執行 Reload Window ,此時可以看到模板字元串中的變數顏色跟字元串的顏色不一樣了:

tmTheme 文件處理規則

盡管已經實現了我們想要的效果,相信閱讀到這里的時候很多人還是一頭霧水,並不知道為何 scope 是 template.expression 。我在剛開始時雖然也猜想到是像 CSS 的類選擇器一樣,但還是不太確定,直到閱讀到 Visual Studio Code 的源碼後才得以印證。

以下是 Visual Studio Code 源碼中負責處理 tmTheme 的 scope 的程序文件 src/vs/workbench/services/themes/electron-browser/stylesContributions.ts ( 點此查看完整文件 ):

export class TokenStylesContribution {

public contributeStyles(themeId: string, themeDocument: IThemeDocument, cssRules: string[]): void {
let theme = new Theme(themeId, themeDocument);
theme.getSettings().forEach((s: IThemeSetting, index, arr) => {
// @martin TS(2.0.2) - s.scope is already a string[] so no need for all this checking.
// However will add a cast at split to keep semantic in case s.scope is wrongly typed.
let scope: string | string[] = s.scope;
let settings = s.settings;
if (scope && settings) {
let rules = Array.isArray(scope) ? <string[]>scope : (scope as string).split(',');
let statements = this._settingsToStatements(settings);
rules.forEach(rule => {
rule = rule.trim().replace(/ /g, '.'); // until we have scope hierarchy in the editor dom: replace spaces with .

cssRules.push(`.monaco-editor.${theme.getSelector()} .token.${rule} { ${statements} }`);
});
}
});
}

private _settingsToStatements(settings: IThemeSettingStyle): string {
let statements: string[] = [];

for (let settingName in settings) {
const value = settings[settingName];
switch (settingName) {
case 'foreground':
let foreground = new Color(value);
statements.push(`color: ${foreground};`);
break;
case 'background':
// do not support background color for now, see bug 18924
//let background = new Color(value);
//statements.push(`background-color: ${background};`);
break;
case 'fontStyle':
let segments = value.split(' ');
segments.forEach(s => {
switch (s) {
case 'italic':
statements.push(`font-style: italic;`);
break;
case 'bold':
statements.push(`font-weight: bold;`);
break;
case 'underline':
statements.push(`text-decoration: underline;`);
break;
}
});
}
}
return statements.join(' ');
}
}

我們再來回顧一下上文 tmTheme 文件每一項 scope 的配置內容:

<dict>
<key>name</key>
<string>Template Expression</string>
<key>scope</key>
<string>template.expression</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>http://www.315nk.com/app/?23C4FA</string>
</dict>
</dict>

其中第一項 name 表示的是我們給該規則起的名稱; scope 則是適用的 scope ,如果多個可以用逗號分隔,比如 User-defined constant 的 scope 值就為 constant.character, constant.other ; settings 則是具體的樣式信息,比如顏色值。

從源碼中可以看出,支持的樣式只有 foreground 和 fontStyle ,而 background 則從注釋中可以看出由於某原因導致 Visual Studio Code 暫時不支持。

scope 值為 template.expression 則可被認為是 CSS 類選擇器 token.template.expression ,在前文的 Developer Tools 的演示視頻中,模板字元串的變數名在渲染時其 HTML 為 <span class="token block ts meta variable other readwrite string function arrow new expr template expression">...</span> ,如果我們熟悉 CSS 的話應該能一眼就看出來 .token.template.expression 是會匹配到該標簽的。所以,我們可以簡單地把 scope 當作是 CSS 的類選擇器。

需要注意的是,如果我們在定義 scope 時寫得不夠詳細,可能會錯誤地匹配到其他元素,致使調好了一部分,另一部分卻被調壞了,所以要做得完美也並非易事。
發布到擴展商店

要將擴展發布到擴展商店以便讓更多人可以使用到,我們需要藉助 vsce 命令行工具,可以參考文檔 vsce - Publishing Tool Reference 。以下是其基本步驟:

安裝 vsce 命令行工具。執行命令 npm install -g vsce
注冊 Visual Studio Team Services 賬號,並獲取到 Access Token
創建 Publisher。執行命令 vsce create-publisher
登錄到 Publisher。執行命令 vsce login
發布擴展。執行命令 vsce publish

詳細操作步驟建議參考相應的官方文檔。

本文並沒有詳細到手把手教地去講解如何打造一款 Visual Studio Code 顏色主題,僅僅是提到了幾個我在折騰過程中認為比較關鍵,而又很難通過文檔去查到的要點。愛折騰是程序員的天性,希望本文能讓愛折騰的你少走一些彎路,把喜愛的 Visual Studio Code 玩出花來。

㈣ web前端開發用什麼軟體

對於前端,官方的定義是網站前台部分,運行在PC端,移動端等瀏覽器上展現給用戶瀏覽的網頁。用自己的話來說,前端是網頁給訪問網站的人看的內容和頁面,那前端開發顧名思義就是這些內容和頁面中代碼的實現。

現在的前端開發使得現代網頁更加美觀,交互效果顯著,功能更加強大。所以現在的前端開發,運用到的知識面更加廣泛,難度也更大。前端開發目前市場需求還是很大的,而且相對來講比較容易,很適合學習。需要學習的內容也不少,我有全套web前端視頻課資料可以發給你自學。

學習內容包括:

①計算機基礎以及PS基礎

②前端開發基礎(HTML5開發、JavaScript基礎到高級、jQuery網頁特效、Bootstrap框架)

③移動開發

④前端高級開發(ECMAScript6、Veu.js框架開發、webpack、前端頁面優化、React框架開發、AngularJS 2.0框架開發等)

⑤小程序開發

⑥全棧開發(MySQL資料庫、Python編程語言、Django框架等)

⑦就業拓展(網站SEO與前端安全技術)

互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。

想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。

祝你學有所成,望採納。

㈤ 如何打造一款屬於自己的 Visual Studio Code 顏色主題

TextMate曾是多年前最流行的代碼編輯器之一,其顏色主題的文件後綴為.tmTheme,在本文中我們將其簡稱為tmTheme格式。Visual Studio Studio 的顏色主題採用的是標準的 TextMate 主題格式,我們可以參考這篇文章Writing a TextMate Grammar: Some Lessons Learned,大概可以理解為這樣:編輯器對代碼進行解析後,會為每個元素指定一個scope,這個scope即表明此元素是一個關鍵字還是一個常量,又或者是一個標點符號,含前差通過tmTheme格式的文件來定義相應scope的文字樣式。

根據該文章可知道以下是常見的scope列表:
comment
constant
constant.character.escape
constant.language
constant.numeric
declaration.section entity.name.section
declaration.tag
deco.folding
entity.name.function
entity.name.tag
entity.name.type
entity.other.attribute-name
entity.other.inherited-class
invalid
invalid.deprecated.trailing-whitespace
keyword
keyword.control.import
keyword.operator.js
markup.heading
markup.list
markup.quote
meta.embedded
meta.preprocessor
meta.section entity.name.section
meta.tag
storage
storage.type.method
string
string source
string.unquoted
support.class
support.constant
support.function
support.type
support.variable
text source
variable
variable.language
variable.other
variable.parameter

以下是一個tmTheme格式文件的代碼片段:
<dict>
<key>name</key>
<string>Keyword</string>
<key>scope</key>談皮
<string>keyword.control,keyword.other,variable.language,storage.type,storage.modifier,keyword.function</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#0808D1</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>Invalid</string>
<key>scope</key>
<string>invalid</string>
<key>settings</key>
<dict>
<key>foreground</悔凱key>
<string>#cd3131</string>
</dict>
</dict>

從上面的代碼可以看出,其實這個tmTheme格式的文件似乎也挺簡單的,然而初學者而言,難的是不知道scope怎麼寫,下文會循序漸進地對此進行說明。

創建顏色主題項目

根據官方文檔,我們先執行以下命令安裝Yeoman代碼生成工具來創建一個默認的顏色主題項目:
$ npm install -g yo generator-code

安裝完畢之後,進入~/.vscode/extensions目錄執行以下命令啟動生成器:
$ yo code

說明:~/.vscode/extensions表示用戶根目錄下的.vscode/extensions目錄,之所以在此處新建項目主要是為了不用發布到擴展商店也可以在本地進行使用,並且方便調試。

選擇New Color Theme創建顏色主題項目:
_-----_ ╭──────────────────────────╮
| | │ Welcome to the Visual │
|--(o)--| │ Studio Code Extension │
`---------´ │ generator! │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `

? What type of extension do you want to create?
New Extension (TypeScript)
New Extension (JavaScript)
❯ New Color Theme
New Language Support
New Code Snippets

接著需要在命令行下互動式地填寫一些問題,以下是我在執行過程中填寫的內容:
? What type of extension do you want to create? New Color Theme
URL (http, https) or file name of the tmTheme file, e.g., http://www.monokai.nl/blog/wp-content/asdev/Monokai.tmTheme.
? URL or file name: http://www.monokai.nl/blog/wp-content/asdev/Monokai.tmTheme
? What's the name of your extension? my-theme
? What's the identifier of your extension? my-theme
? What's the description of your extension?
? What's your publisher name? leizongmin
? What's the name of your theme shown to the user? my-theme
? Select a base theme: Dark

需要說明的是,第一個問題URL (http, https) or file name of the tmTheme file需要提供一個已有的tmTheme文件作為基礎,此處可直接復制示例中的URL。

稍等片刻,工具自動生成了項目之後,會提示我們執行以下命令開始編輯代該項目:
$ cd my-theme
$ code .

以下是生成的項目的文件結構:
.
├── README.md
├── package.json (擴展信息文件)
├── themes
│ └── Monokai.tmTheme (顏色主題定義文件)
└── vsc-extension-quickstart.md (幫助文件,上面詳細說明操作步驟)

首先看看package.json文件:
{
"name": "my-theme",
"displayName": "my-theme",
"description": "",
"version": "0.0.1",
"publisher": "leizongmin",
"engines": {
"vscode": "^1.5.0"
},
"categories": [
"Themes"
],
"contributes": {
"themes": [
{
"label": "my-theme",
"uiTheme": "vs-dark",
"path": "./themes/Monokai.tmTheme"
}
]
}
}

contributes中定義了此擴展項目包含的內容,其中themes表示顏色主題,是一個數組,我們可在此處放入多個顏色主題。以下是themes中每個元素的定義:

label表示顏色主題的名稱,即在Preferences: Color Theme列表中顯示的名稱
uiTheme是指編輯器 UI 的顏色,可選為vs-light和vs-dark,如果我們的顏色主題是深色系的,就選vs-dark
path是tmTheme文件的位置

為了避免混淆,我們可以將文件./themes/Monokai.tmTheme改名為./themes/my-theme.tmTheme,並修改package.json相應的位置。

現在在 Visual Studio Code 中按快捷鍵⌘Command + Shift + P打開命令面板(Windows / Linux 系統應為Ctrl + Shift + P),輸入Color Theme並按回車,再中列表中選擇my-theme按回車即可使用剛剛創建的新顏色主題

㈥ Sublime Text 2 與 TextMate 2 相比有哪些優缺點

Sublime用了2年,中間也用了一段時間TextMate。現在用ST做主力(付費用戶),原因如下:

1. ST用起來體感比Textmate快
2. ST的Layout在大顯示器上非常方便
3. 快速瀏覽文件的特性很貼心。
4. 根據Project類型來定義ST對我這種一會前端,一會後台的開發者來說很方便,也便於重用或團隊復用。

結合困逗亂上Grunt,除了沒有真正的Intelisense和Debug能力,已經很汪檔接近一個指隱全功能的IDE了,而且速度飛快。

㈦ 什麼代碼編輯器比較好用

著名的代碼編輯器:Microsoft Visual Studio Code、Github Atom、Sublime text、Adobe Brackets

最推薦的一種:Atom

推薦理由:

鏈接:如何評價 GitHub 發布的文本編輯器 Atom?

作者:韋易笑

用過不少編輯器:UltraEdit / EditPlus / (G) Vim / GEdit / NotePad++ / TextMate / ProgrammerPad / Sublime 。確實是工作上用他們寫過代碼的。而 VSC / Emacs 只是體驗了一下基本使用方法,算不上真用。用下來的結論是:Atom 比 Vim 更 Vim,比 Emacs 更 Emacs,同樣,比 Sublime 更 Sublime。


Atom 唯一的槽點就是「卡」,不過那是去年的情況了,1.0後性能數次大提升,比起sublime/vsc之類雖不算流暢,但同時編輯20個數千行的文件沒有壓力。如今讓人感覺慢的地方主要是啟動loading(也大大短於eclipse, idea),使用時並沒察覺它比其他編輯器慢再哪。而文本編輯器的快慢,更重要的是「讓你工作更快更有效率」。下面說說為何 Atom比其他更有效率:


兼容VIM模式


這無疑團結了一大班 Vim過來的用戶,Sublime雖然也有VIM模式,但是Sublime在 mac下面的vim模式有bug,我習慣用 hjkl來移動游標,sublime再mac下hjkl移動有問題,且我習慣CTRL_[來返回NORMAL,手指不離開主鍵盤區,而sublime的vim模式只支持ESC返回,加上其作者經常神秘消失,最穩定的2.x版本已三年沒有更新,這些問題一直得不到修正。


由於Atom的定製程度直追 Vim/Emacs,它的vim模式能夠使用插件來實現,而不像sublime必須builtin,Atom的VIM模式除了官方實現外還有很多用戶實現,各有所長,你不喜歡可以換,Sublime就傻逼了,覺得builtin的不行,你就沒辦法了,而且作者不更新你也沒辦法。


Atom里的Vim模式並不是強制的,你可以用也可以不用,這樣入門用戶也不會覺得困難,但是如果你用慣Vim的話,使用Vim模式可以取得更好的效率,我覺得Vim/Atom-VimMode能夠提升效率的地方有以下三方面:


1. 手指不離開主鍵盤區:

所有功能皆能在主鍵盤區完成,不用去按方向鍵,不用把手挪去按Home/End,更不用動滑鼠。就像詠春中強調中線理論,認為一切動作圍繞中軸線開展,守護自己中軸線的同時攻擊別人的中軸線。Vim/Atom-VimMode中,雙手不但從不離開主鍵盤,並且八根手指隨時守護再HOME位(ASDF, JKL;)有動作就移動,然後馬上歸位。


2. 細粒度微操作:

星際/dota玩的好,微操基本功,微操又快又精確,Vim/Atom-VimMode一樣,比如:

if (xxxx) {}

很多人編碼時習慣「成對編碼」,寫了申請資源的代碼,先把釋放資源寫了,寫了左括弧,先把右括弧給補充完,當你寫完第二行代碼時,需要用到「再1-2行中間插入一行」,此時你的游標停留在第二行,傳統編輯器你需要:按上箭頭移動游標到第一行 -> 按END鍵去到第一行末尾 -> 按回車插入一行,mac下的END鍵還需要用CMD+右來組合出來,而Vim/Atom-VimMode中,你只需要shift+o即可,手指完全不離開主鍵盤區,不用像傳統編輯器那樣,右手先移動到箭頭區又移動到HOME的小鍵盤區,再移動回主鍵盤區這么麻煩,類似還有:

使用o直接再下一行插入,避免 END/回車

使用I再行首插入,避免移動半天游標。

向前/後移動一個單詞到單詞頭、尾。

快速更改當前單詞,用/來快速搜索移動游標。

dd+p來快速移動代碼塊,取代shift+方向鍵半天。

shift-j 來兩行合並成一行,代替 HOME, back 若干次。

。。。

你再編輯代碼的時候,90%的情況可以直接一步完成,這就叫細粒度微操,而且整個過程手都不需要離開主鍵盤,不像傳統編輯器那樣,若干笨重的操作組合再一起,操作不夠細步驟多的同時手還要再:主鍵盤區,方向鍵區,擴展鍵區 來回移動,效率奇低。而Vim/Atom-VimMode下,手指隨時守護在home區(ASDF JKL;),所有微操都是圍繞HOME區進行,不會移動到任何主鍵盤以外的區域,更別說用滑鼠、觸摸板。


3. 批量操作:

比如要給下面代碼每行後面加一個分號:

var x = 1var y = 2var z = 3console.log('result is ' + (x + y + z).toString())

一般做法是:移動游標到行末->END->分號->移動游標到下一行,Vim裡面不需要移動游標到行末,只需循環敲入:「A;<ESC>j」 即可,本來操作就少很多。這還不是最少操作,更少操作是利用Vim裡面的句號「.」功能重復上一次操作,即第一行「A;」補充了一個分號後,第二行只需要按一下"."即可重復,於是最後操作變為:

第一行:A;<ESC>

後面所有行:J.


超級爽快的操作,這樣的操作還很多,你還可以單條命令對一萬行代碼重復上述步驟,或者把c代碼拷貝到go裡面先一句話把所有分號給刪除了。Vim下面的名言:絕不重復。


總之如果你熟悉 VIM模式,用 Atom能感到完全自由的方式,隨心所欲的書寫代碼,而不是被書寫這件事情費腦筋,解放大腦完全用於思考而不用於打字。但是同時對不習慣VIM的人照樣友好,或者對想使用VIM的便利卻又痛恨VIM這個軟體的簡陋的人帶來了福音。


脊椎記憶


「同樣動作重復300次,肌肉就會有記憶,而一個動作重復600次,脊椎就會有記憶」
-- 李小龍


編輯器就是關於脊柱記憶的東西,所以多投入一些時間去了解你使用的編輯器,掌握他們的各種快捷操作和高級功能是一個能讓你事半功倍的好主意。


格鬥游戲玩的好的人有很多,下等高手靠熟練,中等高手靠反應,上等高手靠意識。更熟練的掌握你的編輯器,讓更多日常工作固化成記憶記錄再你的脊椎上,使用的時候,脊椎這枚協處理器就能完成代碼編寫,一個操作,剛一想到,脊椎就自動執行出來了,小腦騰出空間來組織判斷,大腦騰出空間來思考更重要的東西,就像你走路,你不用思考邁腿那麼自然,別人一拳過來,你潛意識一動,一連串動作就出去了,一隻飛蛾飛過來,你潛意識的閉上眼睛保護眼部,這就是脊椎記憶,如果還要經過大腦繞一圈,反應慢不說,大腦這顆cpu都用在這些瑣事上了,思考的時間自然少了不少。


所以從內到外的了解你的編輯器,並且熟練掌握他們,是對你提高工作效率的最佳投資,Atom的全平台支持,開放源代碼,深度可定製等三個特點,比起其他閉源的,平台支持不全的,擴展少的編輯器來說能讓你有不同層面的了解機會,同時為你提供足夠的空間。


深度可定製系統


Vim/Emacs的精髓在於:「可以調教」,本來不順手的東西,只要容易調教,假以時日,都會慢慢變得越來越順手,越來越「懂你」,越來越「貼心」,以至於後面大家都離不開它了。而 Atom 也同樣是一款容易被你調教的編輯器。先前給vim寫過插件,給sublime寫過插件,如今給Atom寫過插件,橫向對比下來,幾個結論:


插件能做事情多少:Atom > Vim >> sublime

插件開發學習門檻:Vim > Atom > sublime

插件開發文檔豐富:Atom > sublime >> Vim


Atom 的定製化程度遠遠高過sublime之類(不用實際看法,看看雙方開發文檔即可),直追 Vim / Emacs,sublime的大部分定製無外乎改改json,插件能做的事情相當有限。


Atom 的定製化系統主要有三方面:


1. 細致:

設計之初就考慮的事情,方方面面都能定製,見官方文檔,以及插件:vim-mode,minimap (稍微了解下這兩個類似的功能再 Atom 和 sublime的實現就能知道 sublime被甩了多少條街了)。可以細粒度的控制編輯器內所有行為,小到移動一下游標,刪除當前一個字元,大到打開一個面板,比如 「core:more-up」 可以向上移動一行游標,「window:focus-pane-on-left」 可以把焦點設置到左邊的面板,atom內核和大量第一方第三方packages 都是以命令的方式把基礎功能提供出來,你可以隨意互相調用或者設置熱鍵。

除去命令外的API層面,幾乎每個部件每個像素點都可控,比如這樣的插件你永遠無法再 Vim / Emacs / Sublime 下面見得到:activate-power-mode。


2. 直觀:

由於使用 javascript/coffee進行開發,但 javascript/coffee是屬於即便你沒寫過他們,讀都能讀得懂,VimScript就不一樣了,雖然也能做相同的事情,但實話實說,晦澀難寫,比如我要取得當前文件的路徑和文件名,在 VimScript裡面需要這么寫:

let l:path = expand('%:p:h')let l:name = expand('%:t:r') 或者 let l:name = expand('%<')

而在 Atom 里我們用atom自己的功能直接取出路徑來,然後進行切割:

var fullpath =atom.workspace.getActiveTextEditor().getPath();var filename = path.basename(fullpath);var filepath = path.dirname(fullpath);

就問大家一下?哪段代碼更友好直觀?你一眼就知道在做什麼?你更願意用按照哪段代碼進行插件開發?是上面的VimScript?還是下面的 javascript ?


結論是很清晰的,Atom的 javascript開發插件更簡單直觀,即便沒文檔,看別人怎麼寫的自己也會了,同時靈活性大大高於VmScript,各種事件處理回調,javascript天生擅長做這些事情,還有第二行,第三行,我們用到了 node.js 的 path模塊,進行文件路徑切割。這樣的寫法,再VimScript 裡面基本是無法想像的。


Vim是強大,但是畢竟是30年前的東西了,即便最熟練的 Vimer 也都承認 VimScript 的晦澀難懂,阻礙了很多人為其開發插件。而給Atom開發插件,只需要掌握javascript,掌握 javascript的人很多,學習了javascript你也可以用在很多地方。不像VimScript那樣只能用在Vim裡面,而正因為其晦澀,Vim新版本開始支持內嵌 python的寫法:

python << EOF
import random
print random.randint(0,10)EOF


VimScript中 Python等動態的支持正是說明其開發維護者也承認 VimScript本身的古老,對比現代編程語言已經有些格格不入了,缺乏強大的描述能力,難以構建復雜的功能模塊,才會去支持Python內嵌這樣的寫法。可大量的工作還是需要再Python之外完成,同時,並非所有平台自帶的Vim都支持python,除了mac外,所有debian / ubuntu 發行版自帶的Vim都不支持 Python。導致你想寫一個通用的擴展還得判斷下是否 has('python') 沒有的話老老實實用 VimScript 去實現它,這不是折磨人么?


Sublime裡面可以用原生 Python 寫擴展,比 VimScript爽,但是 sublime 的插件能做的事情還不及VimScript的一半,所以怎麼能指望他們能寫出高端的功能來呢?


3. 強大:

Atom的內核 Electron (原來的 Atom-shell)可以理解成:Chromium + Node.JS,而整個Atom的界面,你可以理解成就是一顆 HTML 的 DOM 樹結構,這意味著你可以這樣:

var div = document.createElement("div"); div.innerText = "abc"; atom.workspace.addBottomPanel(div);

就可以簡單的在 atom 裡面增加一個顯示對象,這意味著再給div加個 html的 onclick就可以實現GUI交互,界面上的對象隨便寫點html代碼就可以控制效果,意味著你可以使用 jQuery 來為atom增加新面板,意味著你只需要寫一個簡單的 .css 文件就可以把 Atom 整個編輯器的外觀給修改了。這在 Vim/Emacs 中是幾乎不可想像的事情,sublime基本就別提了。


大量的前端開發技術和 Node.JS 基礎模塊供你任意使用,正是由於近年 Chromium / node.js 系列技術的成熟,和 Atom / Visual Studio Code 這類基於前端技術的客戶端軟體的成功,讓我看到了客戶端(桌面+移動)軟體開發的新方向。


做VIM/Emacs不能做的事情


Vim/Emacs過去給人的映像是:幾乎能做任何事情,確實如此,但畢竟是二三十年前的東西了,而他們一直堅挺到現在一方面是操作便利,更重要的是這么長時間還沒有出現一款又開源又具備同樣操作便利性和可擴展性的編輯器,所以Vimer, Emacser 們最樂意展示給別人看的就是他們又安裝了什麼插件,急於展示可以把 Vim / Emacs 裝扮成了一個多像 IDE 的東西,而今天這個「可以做任何事情」的高度可定製特性已經被Atom所吸收並完全超越,就像 Atom 的開發blog:「 Introcing Atom」 上說的一樣,對易用性和可展性 「決不妥協」 :

We think we can do better. Our goal is a zero-compromise combination of hackability and usability: an editor that will be welcoming to an elementary school student on their first day learning to code, but also a tool they won't outgrow as they develop into seasoned hackers.


拋開易用性的這個 Atom 的明顯優勢不說,前面其實已說了不少 Atom 比 Vim/Emacs 更靈活強大的地方,可能有些人還有疑惑,不是說 Emacs 「沒有不能做的事情」 么?你看 Atom的面板裡面可以嵌入一個 Terminal,Vim/Emacs一樣可以嵌入啊,為何還說 Atom 比它強啊?


沒錯,Vim用久了會產生心理舒適區,多模式編輯使人神清氣爽,命令化文本處理讓你賞心悅目,但是受限於本身機制用久了會容易痛苦掙扎:雖然vim的各種擴展似乎什麼事情都能做,但每個擴展卻只能做到70分,總有那麼30%的地方做不到位。所以用的時間長了,上半身爽的要死,下半身痛不欲生。。。。


Vim/Emacs即便大部分擴展功能也都可以稱為「能用」,可幾十年的歷史包袱太沉,很多事情對他們來講就是禁區,比如詭異的標簽功能,容易誤操作的buffer/窗口切換,缺乏非同步機制,編譯時間長只有傻等著,無法跟Atom一樣邊讀代碼,邊運行程序看結果,對照輸出結果和源代碼找問題,連實現個內嵌終端都用了若干年,還實現的那麼別扭。。。。。。。。。


這類硬傷有許多,再舉個最簡單的例子,minimap,就是 sublime那種大家喜歡的文檔縮略圖,這個現代編輯器必備的功能,誰能用 Vim/Emacs 實現一下看看?Atom 可以衍生出 Visual Studio Code 這樣漂亮的編輯器,Vim/Emacs能衍生么?Atom可以隨便用各種先進的前端技術,不當可以嵌 Terminal我甚至可以再 Atom 嵌入一個 js版本的 DOSBOX 玩老游戲《命令與征服》:

https://archive.org/details/softwarelibrary_msdos_games

Play DOS games online


當然這樣並沒有任何卯用,但是如果在 Atom裡面內嵌一個瀏覽器,方便的實時預覽html/css的效果呢?或者 Atom 裡面內嵌一個 Markdown Previewer ,實時查看 Markdown 的效果呢?請問 Vim/Emacs 里怎麼實現法?


Atom插件演示:markdown實時預覽,左邊寫右邊即時更新,100%兼容github的markdown語法


短短兩年的時間,這么多優秀的插件,只想說,如今 Atom 作為 Vim/Emacs 的繼承者和超越者出現了,所以社區對 Atom 的反應也是熱烈的,看看下面一組數據,截止今天(2016年3月15日),Atom共有擴展插件 3500+ 個,發布不到兩年的時間,這是什麼概念呢?

㈧ sublime text 怎麼添加python

Sublime Text 3 (ST3) 是一個輕量級的跨平台文字編輯器,尤以其輕快的速度,易用性和強大的社區支持而著稱。它一經面世便被認為是一個傑出的編輯器,而它真正的強大之處在於你可以使用 Package Control 來增加它的功能以及可以進行各種自定義設置。
在本文章中,我們將會看到如何將 Sublime Text 打造成為 Python 的全棧開發環境(從前端到後端),如何通過自定義主題和插件來增強它的基本功能,並且還將會涉及到很多使 ST3 變得更加強大的常用的命令,特性以及快捷鍵。

本教程將假定你使用的是 Mac 電腦並且習慣於使用終端。如果你使用的是 Windows 或者 Linux 操作系統,本文涉及到的一些命令將有可能會有所不同,但是你應該仍然可以很容易地通過 Google 來獲取到與本教程相關的解答。
在我們開始之前,讓我們先討論一下我所謂的」全棧」具體指的是什麼。
在現在的 HTML5 以及移動設備開發中,Javascript 簡直無處不在。是的,無處不在!僅僅使用 Python 基於某個框架比如 Django 或者 Flask 進行開發是不夠的。如果你想從始至終真正的自己開發一個網站的話,你必須熟悉 Javascript(以及 Javascript 的一大堆的框架),REST API(含狀態傳輸 API),響應式設計,當然還有 HTML 和 CSS,以及其他許多東西。現在讓我們來面對一個問題:就像其他任何一個手藝人一樣,為了成為一個最厲害的程序員,你的工具必須犀利,你的開發環境必須被打造成全棧開發——那就是我們馬上將要開始的工作…
特性
讓我們從 ST3 的一些默認特性開始著手吧…
Split Layouts 允許你將你的許多文件放到很多分割開來的視窗中。如果你正在進行以測試為目的的開發(將 Python 代碼放在一個視窗中,而測試腳本放在另一個視窗中)或者正在進行前端開發(將 HTML 代碼放在一個視窗里,CSS/Javascript 代碼放在另一個視窗里)的時候將會非常有用。
Vintage Mode 讓你能夠在 ST3 中使用 vi 模式。
Chrome-like Tabs 讓你在多個文件中切換變得更加方便。
Automatic loading of the last session 幫你自動打開你上次關閉的時候編輯器中所有打開的文件。我總是一直開著 ST3,而且其中打開著一大堆項目——當我重啟電腦以後, 它能夠自動幫我打開所有的這些文件和文件夾。
Code Snippets 允許你通過一兩個簡單的關鍵字就能寫出一段常用的代碼片(Snippets),從而增加你的生產效率。比如,你只需要打開一個文件,輸入 「lorem」 然後敲擊 tab 鍵,就會自動生成一段亂數假文(譯者註: 一種用於測試文章或文字在不同字型、版型下看起來的效果等的文字)。又比如在 Python 代碼中,你可以輸入 「defs」 然後敲擊 tab 鍵,你就能得到一段通用的函數定義。
同時,你還可以點擊 Tools > New Snippet 來創建屬於你自己的代碼片。請參照這個 文檔來獲取幫助,也可以在 這里 查看我個人用到的一些 snippets。
自定義 Sublime Text 3
在你下載完 ST3 以後…
在命令行中添加 subl 命令
就像 TextMate 的 mate 命令一樣,Sublime Text 擁有一個叫做 subl 的命令行工具,可以用來通過終端打開一個文件或者一整個文件夾。
你需要建立一個指向 subl 二進制文件的符號鏈接來使 subl 命令有效:

Python

1

$ ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" ~/bin/subl

嘗試使用以下命令來打開 Sublime 來確保鏈接生效了:

Python

1

$ subl

如果以上命令沒有效果,你可能需要將 /bin 添加到你的環境變數中:

Python

1

$ echo "export PATH=~/bin:$PATH" &gt;&gt; ~/.profile

然後重新嘗試第一步。
如果你仍然遇到問題,嘗試查看 這篇 文章來獲取幫助。 或者你可以看看如何在 Windows和 Linux 中建立符號鏈接。
現在你就可以通過下述命令來打開文件或者文件夾了:

Python

1
2
3
4
5
6
7
8

# open the current directory
$ subl .

# open a directory called tests
$ subl ~/Documents/test

# open a file called text.txt
$ subl test.txt

如果路徑中含有空格,你必須使用雙引號將路徑括起來:

Python

1

$ subl "~/Documents/test/my test file.txt"

想要查詢所有可用的命令,請打開幫助文件:

Python

1

$ subl --help

安裝 Package Control
為了使用眾多的 插件 來擴展 Sublime 的功能,你需要安裝一個叫做 Package Control 的插件管理器——這個東西你必須要手動安裝。但是一旦你安裝好了以後,你就可以使用 Package Control 來安裝,移除或者升級所有的 ST3 插件了。
點擊 這里 從 Sublime Text 3 官方獲取用於安裝的代碼。依次點擊 View > Show Console 打開 ST3 的控制台。在控制台中粘貼剛才的代碼,然後點擊回車。最後重啟 ST3。
現在你可以通過快捷鍵 cmd+shift+P 打開 Package Control 來安裝其他的插件了。輸入 install 然後你就能看見屏幕上出現了 Package Control: Install Package,點擊回車然後搜索你想要的插件。
其他一些相關命令如下:
List Packages 顯示所有已安裝的插件
Remove Packages 移除一個指定的插件
Upgrade Package 更新一個指定的插件
Upgrade/Overwrite All Packages 更新所有已安裝的插件
請查閱官方 文檔 獲取更多的命令。

創建自定義配置文件
你可以通過一個基於 JSON 的配置文件來充分的自定義 Sublime Text,這使得轉移或者同步你的自定義文件到另一個系統變得非常容易。首先,我們需要新建我們自己的配置文件。我們最好是為不同的系統環境和編程語言各自創建一個配置文件。
依次點擊 Sublime Text > Preferences > Settings – User 來創建一個配置文件。在該文件中添加一個空的 JSON 類然後就可以在其中寫入你的配置內容了。如下所示:

Python

1
2
3
4
5
6
7

{
// base settings
"auto_complete": false,
"sublimelinter": false,
"tab_size": 2,
"word_wrap": true
}

如果想為特定的編程語言新建配置文件的話,請點擊 Sublime Text > Preferences > Settings – More > Syntax Specific – User。然後按照 LANGUAGE.sublime-settings 的格式保存該配置文件。例如想新建一個 Python 專用的配置文件,請將該文件保存為 Python.sublime-settings。
你完全可以按照你自己的喜好來進行各項配置;不過我強烈推薦以我的這份 配置文件 以及 Python 配置 作為基礎,然後修改成你所需要的內容。
一個可選項: 你可以使用 Dropbox 來同步你的所有配置。你只需要將你的配置文件上傳到 Dropbox 然後就可以將你的配置同步到你的任意一台設備上了。
你可以在 Sublime Text Unofficial Documentation 找到一些非常好的參考配置。
主題
ST3 為你提供了完全自定義化一個適合自己主題的能力。當然,你如果不是那麼的挑剔的話,你可以通過 Package Control 從許許多多的由 Sublime 社區設計的 主題 中下載一個。 在下載之前你可以通過 ColorSublime 來預覽這些主題。
廣受歡迎的的 Soda Dark 和極簡風格的 Flatland 是我個人最喜歡的兩個主題。
在安裝完了主題以後, 請務必更新你的配置文件. Sublime Text > Preferences > Settings – User:

Python

1
2
3
4

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

插件
除了那些主題以外,我還會使用以下這一些插件來提升我的工作效率。
SideBarEnhancements
SideBarEnhancements 擴展了側邊欄中菜單選項的數量,從而提升你的工作效率。諸如」New file」 和 「Duplicate」 這樣的選項對於 ST3 來說實在是太重要了, 我甚至覺得 ST3 本來就應該提供這些功能。而且僅憑 「Delete」 這一個功能就讓這個插件值得下載。這個功能將你會在你刪除文件的時候把它放入回收站。雖然這個功能乍一看沒什麼用,但是當你沒有使用這樣的功能而徹底刪除了一個文件的時候,除非你用了版本管理軟體,否則你將很難恢復這個文件。

現在就下載吧!
Anaconda
Anaconda 是一個終極 Python 插件。它為 ST3 增添了多項 IDE 類似的功能,例如:
Autocompletion 自動完成,該選項默認開啟,同時提供多種配置選項。
Code linting 使用支持 pep8 標準的 PyLint 或者 PyFlakes。因為我個人使用的是另外的 linting 工具,所以我會在 Anaconda 的配置文件 Anaconda.sublime-settings中將 linting 完全禁用。操作如下: Sublime > Preferences > Package Settings > Anaconda > Settings – User: {"anaconda_linting": false}
McCabe code complexity checker 讓你可以在特定的文件中使用 McCabe complexity checker. 如果你對軟體復雜度檢查工具不太熟悉的話,請務必先瀏覽上邊的鏈接。
Goto Definitions 能夠在你的整個工程中查找並且顯示任意一個變數,函數,或者類的定義。
Find Usage 能夠快速的查找某個變數,函數或者類在某個特定文件中的什麼地方被使用了。
Show Documentation: 能夠顯示一個函數或者類的說明性字元串(當然,是在定義了字元串的情況下)

你可以在這里,或者通過 ST3 的 Package Settings: Sublime Text > Preferences > Package Settings > Anaconda > README 來查看所有這些特性。
SublimeCodeIntel 是另外一個非常流行的插件,它的許多特性與 Anaconda 類似。我建議同時也試試它。
Djaneiro
Djaneiro 支持 Django 模版和關鍵字高亮以及許多實用的代碼片(snippets)功能。其中的 snippets 絕對是省時神器。你可以通過很少幾個關鍵字就能創建許多常見的 Django 代碼塊比如 templates,models,forms,以及 views。請查看官方文檔獲取 snippets 列表。
我個人非常喜歡的以下兩個用於創建 template 的代碼片:輸入 var 就可以新建 {{ }},而輸入 tag 就能新建 {% %}。
requirementstxt
Requirementstxt 可以為你的 requirements.txt 文件提供自動補全,語法高亮以及版本管理功能。
SublimeLinter
SublimeLinter 是 ST3 的一個代碼靜態檢查工具框架(linter)。這個插件本身來說並不包含任何的一個 linter,但是你可以通過在 Package Control 中輸入 SublimeLinter-[linter_name] 的方式來安裝一個 linter。你可以點擊這里查看官方的 linter。同時你還可以在 Package Control 中查看到許多的第三方 linter。請點擊這里查看安裝說明。
對於 Python 的代碼靜態檢查器,我建議使用 SublimeLinter-pyflakes 和 SublimeLinter-pep8。
與此同時,我也會使用 SublimeLinter-jshint, SublimeLinter-pyyaml, SublimeLinter-csslint,SublimeLinter-html-tidy,以及 SublimeLinter-json。
以上大多數的 linter 都需要先安裝一些依賴庫才能使用,所以在安裝前請務必閱讀他們的安裝說明。
你可以通過修改用戶自定義的 SublimeLinter.sublime-settings 文件來對你的每個 linter 個性化:Sublime Text > Preferences > Package Settings > SublimeLinter > Settings – User. 例如我通過以下代碼來忽略 pep8 中的錯誤和警告:

Python

1
2
3
4
5
6
7
8

"pep8": {
"@disable": false,
"args": [],
"excludes": [],
"ignore": "E501,C0301,W0142,W0402,R0201,E1101,E1102,C0103,R0901,R0903,R0904,C1001,W0223,W0232,W0201,E1103,R0801,C0111",
"max-line-length": 100,
"select": ""
},

GitGutter
GitGutter 讓 ST3 能在左邊欄的位置顯示一個小圖標,用以表示在最後一次提交以後,代碼是否有追加,修改或者刪除。

如果你想讓該插件支持分布式的版本管理軟體(Git,SVN,Bazaar 和 Mercurial)。請查看 Modific。
FTPSync
FTPSync 能夠將你的項目和遠程文件進行同步。你只需要打開文件便可以下載更新(如果你的遠端文件比本地更加新的話),而且如果你對本地文件做出了修改可以立即同步到遠程伺服器。這是非常棒的同步本地文件和遠程文件的方法。你可以通過以下的方法來添加你的遠程伺服器:Sublime Text > Preferences > Package Settings > FTPSync > Setup FTPSync.
Sample settings:

Python

1
2
3
4
5
6
7
8
9
10
11

{
'primary': {
host: 'ftp.mywebsite.com',
username: 'johnsmith',
password: 'secretpassword',
path: '/www/',

upload_on_save: true,
tls: true
}
}

我個人喜歡把密碼設為 null 因為我不想讓我的密碼出現在配置文件中。這樣 FTPSync 會在我每次保存完文件後要求我輸入密碼。
AdvancedNewFile
AdvancedNewFile 可以讓你在 ST3 中使用簡單的幾個快捷鍵便創建一個新的文件夾或者一個新的文件:
你只需要通過幾個快捷鍵便可以打開 AdvancedNewFile 的輸入框。然後輸入路徑和文件名。當你按下回車鍵後,文件便被創建了。除此之外,如果目標文件夾並不存在的話,該文件夾將會被自動建立。在默認情況下,你創建的文件的路徑將會顯示在狀態欄中。
請查看 Github 上的這篇文檔來獲取更為詳細的使用說明。特別建議請詳細閱讀TAB自動補全(Tab Completion)以及預定義別名(Predefined Aliases)部分。
我把「cmd+n」設置為了通過 AdvancedNewFile 創建新文件的快捷方式。該快捷鍵可以通過修改 Key Bindings – User file 來實現 Sublime Text > Preferences > Package Settings > AdvancedNewFile > Key Bindings – User:

Python

1
2
3

[
{ "keys": ["cmd+n"], "command": "advanced_new_file_new"}
]

你也可以更改默認打開的文件夾路徑:Sublime Text > Preferences > Package Settings > AdvancedNewFile > Settings – User

Python

1

{"default_initial": "/Users/michaelherman/Documents/repos"}

這樣我創建新文件的時候,/Users/michaelherman/Documents/repos將會自動被添加到路徑最前方,因為99%的情況下我都會把我的腳本放在這個路徑下。
Emmet
Emmet,以前叫做 Zen Coding,讓你可以通過簡單的縮寫來創建 HTML 或者 CSS 的代碼塊。
例如,你只需要輸入感嘆號!,然後按下 tab 鍵,便可以在一個 HTML 文件中創建一段帶有幾個基本標簽的 HTML5 文檔類型的代碼:

Python

1
2
3
4
5
6
7
8
9
10

&lt;!doctype html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;

請查看官方文檔或者速查手冊獲取更多信息。
Markdown Preview
Markdown Preview 可以用來預覽和編譯 markdown 文件。
你可以打開 Package Manager 然後輸入 Markdown Preview 來查看可用的命令:
Markdown Preview: Python Mrakdown: 在瀏覽器中預覽
Markdown Preview: Python Mrakdown: 導出 HTML 文件
Markdown Preview: Python Mrakdown: 拷貝到剪貼板
Markdown Preview: Github風格Markdown: 在瀏覽器中預覽
Markdown Preview: Github風格Markdown: 導出 HTML 文件
Markdown Preview: Github風格Markdown: 拷貝到剪貼板
Markdown Preview: 打開Markdown速查手冊
一旦你完成轉換,你之後的所有保存都會立即反映到轉換的文件中。
快捷鍵
跳轉到任意內容 (「cmd+p」) 用來快速查找和打開文件。你僅僅只需要工程中文件的一部分路徑或者文件名你就可以很容易的打開這個文件。這在一個大型的 Django 工程中顯得非常方便。
跳轉到指定行 (「ctrl+g」) 讓你在當前文件中跳轉到指定行數。
跳轉到標志 (「cmd+r」) 可以列出當前文件中所有的函數或者類,讓你更方便查找。你可以通過輸入關鍵字來查找你所需要的函數或者類。
跳轉到行首 (cmd+left-arrow-key) 與 跳轉到行尾 (cmd+right-arrow-key)
刪除當前行(ctrl+shift+k)
多重編輯 是我迄今為止最喜歡的快捷鍵

Python

1
2

1.選定一個單詞,點擊 **「cmd+d」** 來選擇同樣的單詞,再次點擊 **「cmd+d」** 繼續選擇下一個單詞…
2.或者 **「cmd+單擊」** 來指定多個你想要同時修改的地方。

塊編輯 (option+left-mouse-click) 用於選擇一整塊的內容。通常在整理 CSV 文件的時候用於刪除空白內容。
如果想了解更多關於快捷鍵的內容,請看一下這篇文章。
自定義命令
你可以很容易地使用 Python 來編輯你自己的自定義命令和快捷鍵組合。目前我個人使用的有以下這些:
拷貝當前文件路徑到剪貼板 – 鏈接
關閉除當前活動標簽頁以外的所有其他標簽頁 – 鏈接
通過文件選項打開你的 Package 文件夾(Sublime > Preferences > Browse Packages),然後打開 User 文件夾,接下來將上述的 Python 文件添加到 「/Sublime Text 3/Packages/User」 文件夾中。最後請在 Key Bindings – User file (Sublime Text > Preferences > Package Settings > AdvancedNewFile > Key Bindings – User) 文件中完成快捷鍵綁定。

Python

1
2
3
4
5
6
7
8
9
10
11
12

[
// Copy file name
{
"keys": ["cmd+shift+c"],
"command": "_path_to_clipboard"
},
// Close all other tabs
{
"keys": ["cmd+alt+w"],
"command": "close_tabs"
}
]

㈨ vscode使用教程是

vscode使用教程:

安裝:

安裝的東西沒什麼好說的,自行下載安裝吧,伙計。

配置:

用戶配置:

vscode的用戶配置分3個級別,分別是默認配置、全局配置和工作區配置,優先順序也依次遞增。對於團隊項目,一些規范可以通過項目目錄下建一個.vscode/setting.json文件進行配置。

快捷鍵綁定:

參考官方文檔,文檔中列出了所有指令對應的快捷鍵。快捷鍵我只修改了兩個與系統軟體沖突的。

代碼片段:

這個功能很像webstorm的live template的功能,雖然提示的時候沒有webstorm那麼精準和順手,不過總的來說,夠用。

設置語法遵循TextMate代碼片段語法,你可以通過安裝別人寫好的snippet插件,如果別人寫的snippet你用得不爽,那麼自己寫也簡單。

之前使用這個代碼片段有個痛點就是只能用方向鍵上下選擇提示,如果能使用ctrl+n/p上下選擇的話就更舒服了,沒想到現在已經支持了。

另外,有沒有人知道怎麼設置代碼提示內容,比如輸入result提示了XPathResult是什麼鬼。

插件:

4個月前剛知道vscode的時候,那時感覺插件還沒有那麼多,現在重新看了一下,真是應有盡有。牛逼啊!

這里介紹幾個我用過覺得不錯的插件

用戶配置同步 Visual Studio Code Settings Sync。Git 歷史 Git History。

文件圖標 vscode-icons。縮進輔助線 Guides。

Visual Studio Code(以下簡稱vscode)是一個輕量且強大的代碼編輯器,支持Windows,OS X和Linux。

內置JavaScript、TypeScript和Node.js支持,而且擁有豐富的插件生態系統,可通過安裝插件來支持C++、C#、Python、PHP等其他語言。

閱讀全文

與textmate2安裝json相關的資料

熱點內容
cad新文件能找回來嗎 瀏覽:951
導出手機qq文件到u盤 瀏覽:456
電腦如何打開ppt文件怎麼打開方式 瀏覽:782
魅族鎖定區文件夾 瀏覽:357
刻字cnc怎麼編程 瀏覽:182
學校的網路拓撲結構圖 瀏覽:784
收集100個pdf文件里關鍵詞 瀏覽:594
蘋果關閉4g網路設置 瀏覽:289
如何監測資料庫 瀏覽:967
拷貝過來的pdf文件 瀏覽:751
抖音小店的訪客數據怎麼看 瀏覽:670
怎麼把c語言編程的字元向下移動 瀏覽:786
sql刪除文件組代碼 瀏覽:978
安卓post請求多重json 瀏覽:776
微信消除數據怎麼恢復 瀏覽:918
小米刷機顯示系統找不到指定文件 瀏覽:528
蘋果手機小風扇圖app叫什麼 瀏覽:292
繁體中文輸入工具 瀏覽:916
pc桌面壁紙文件夾 瀏覽:473
微信怎麼添加群 瀏覽:781

友情鏈接