本文即為在 Atom 下編寫完成,在寫作過(guò)程中讓我對(duì)這個(gè)嶄新的 1.0 版本文本編輯器 有了更多的了解。 在閱讀本文時(shí)注意快捷鍵于后面英文單詞的對(duì)應(yīng)可幫助記憶,在使用中忘記的快捷鍵以可以通過(guò)使用 查詢面板(后面會(huì)提到)進(jìn)行查詢。 如果你在使用過(guò)程中發(fā)現(xiàn)了異常和錯(cuò)誤可以到 Atom 所在的 GitHub 倉(cāng)庫(kù)提交問(wèn)題報(bào)告。同一款編輯器一同成長(zhǎng),愿力量與你同在! 下面的快捷鍵均為 Mac OS X 默認(rèn)設(shè)置。如你用的是 Windows 或者是 Linux,可能需要嘗試將 所有提到的 cmd 改為 ctrl。
開(kāi)始之前先把下面這條快捷鍵記住。cmd+shift+P 它會(huì)打開(kāi)類似 Alfred 的快捷功能選擇窗口, 如果你從來(lái)沒(méi)有聽(tīng)過(guò) Alfred(此為 Mac OS X 特有應(yīng)用) 那你應(yīng)該趕緊去所搜引擎中找找了。
保存時(shí)間
快捷鍵 | 描述 |
---|---|
cmd-shift-S |
可以另存為 "Save As" |
cmd-alt-S |
可以保存全部的 "Save All". |
打開(kāi)文件與目錄
如果在命令行環(huán)境中可以使用下面的方法一次打開(kāi)多個(gè)目錄。
# 打開(kāi)目錄
atom ./hopes ./dreams
# 獲得幫助
atom -h
快捷鍵 | 描述 |
---|---|
cmd-O |
打開(kāi)文件 |
cmd-shift-O |
添加目錄至當(dāng)前編輯器窗口 |
cmd-P
可以打開(kāi) Fuzzy Finder 進(jìn)行模糊搜索,默認(rèn)可所搜區(qū)域?yàn)轫?xiàng)目?jī)?nèi)所有文件。
下面的命令可以對(duì)模糊所搜做一些限制,cmd-B
只所搜已打開(kāi)的文件(存在與 Buffer 中的文件)。
cmd-shift-B
1.0 版本中在編輯器中添加的新文件無(wú)法使用 Fuzzy Finder(模糊尋找) 找到,重啟后則可以解決。
邊欄(樹(shù)目錄)
快捷鍵 | 描述 |
---|---|
cmd-\ |
顯示或隱藏邊欄 |
ctrl-0 |
聚焦邊欄,聚焦后可以操作樹(shù)目錄中的文件 |
在聚焦后可以通過(guò) a
來(lái)增加(add),m
來(lái)移動(dòng)(move),d
來(lái)復(fù)制(duplicate)或者
delete
來(lái)刪除(此處為鍵盤刪除鍵)。
這里的操作并沒(méi)有自動(dòng)路徑補(bǔ)全功能,之后可能需要插件支持。
Atom 中幾乎所有的功能都是以插件的形式存在的。所有如何安裝插件則就是我們第一件要做的事。
除了圖形界面安裝的方法外,隨 Atom 還安裝了插件管理器叫做 apm
。通過(guò)它也可以直接安裝
和更新插件。簡(jiǎn)單說(shuō)主題也是插件,所以安裝主題與安裝插件的步驟類似。
下面的操作均需要聯(lián)網(wǎng)
# 安裝插件
apm install <package_name>
# 安裝指定版本的插件
apm install <package_name>@<package_version>
# 查詢插件
apm search <package_name>
# 查詢插件詳情
apm view <package_name>
Atom 的移動(dòng)快方法同 Emacs 一致。在熟悉使用 Atom 后也很容易的轉(zhuǎn)移至 Emacs 的環(huán)境下熟練工作。
單個(gè)字符的移動(dòng),效果于方向鍵一致。
快捷鍵 | 描述 |
---|---|
ctrl-P |
上移(Previous) |
ctrl-N |
下移(Next) |
ctrl-B |
后移(Back) |
ctrl-F |
前移(Forward) |
在單個(gè)字符移動(dòng)基礎(chǔ)上,可以延展至更大范圍的移動(dòng)。例如,單詞,整行。
快捷鍵 | 描述 |
---|---|
alt-B |
向后以詞為單位移動(dòng)(英文),中文則以英文標(biāo)點(diǎn)為間隔 |
alt-F |
向前以詞為單位移動(dòng)(英文),中文則以英文標(biāo)點(diǎn)為間隔 |
ctrl-E |
移動(dòng)至行末(End) |
ctrl-A |
移動(dòng)至此行首字符(Ahead) |
ctrl-A (敲擊兩次) |
移動(dòng)至此行行首(包括空格) |
cmd-up |
移動(dòng)至文件最頂 |
cmd-down |
移動(dòng)至文件最低 |
ctrl-G
加數(shù)字可移動(dòng)至目標(biāo)行,使用 row:column
可以定位行數(shù)和列數(shù),
使用這個(gè)方法在查找錯(cuò)誤時(shí)變得十分方便。
cmd-R
可以在當(dāng)前文件中(Buffer)按照符號(hào)來(lái)搜索,符號(hào)關(guān)鍵字指的是函數(shù)名(代碼中)
或標(biāo)題(文檔中)。
選擇是在移動(dòng)的基礎(chǔ)上加入 shift
既可完成。特別的幾種選擇方法如下。
快捷鍵 | 描述 |
---|---|
cmd-L |
選取整行 |
ctrl-shift-W |
選取當(dāng)前單詞(英文),中文則為整行 |
Atom 如同其他的常用的文本編輯器一樣可以直接編輯文字,并不存在特殊的模式。但了解下面的 編輯技巧可以讓你使用 Atom 更得心應(yīng)手。
編輯操作
快捷鍵 | 描述 |
---|---|
ctrl-T |
交換光標(biāo)兩邊的字符(Transpose) |
ctrl-J |
將下一行同當(dāng)前行合并(Join) |
ctrl-cmd-up |
向上冒泡當(dāng)前行 |
ctrl-cmd-down |
向下冒泡當(dāng)前行 |
cmd-shift-D |
復(fù)制當(dāng)前行(Duplicate) |
cmd-K, cmd-U |
轉(zhuǎn)換選中字符至全大寫 |
cmd-K, cmd-L |
轉(zhuǎn)換選中字符至全小 |
刪除操作
快捷鍵 | 描述 |
---|---|
ctrl-shift-K |
刪除當(dāng)前(Cut) |
cmd-delete |
刪除此行光標(biāo)后全部字符 |
cmd-backspace |
刪除至當(dāng)前行首 |
ctrl-K |
切帖至行末(Cut) |
alt-H |
刪除前一個(gè)字符 |
alt-D |
刪除后一個(gè)字符 |
多個(gè)光標(biāo)及選擇
同 Sublime Text 相同,Atom 也同樣有多光標(biāo)的實(shí)現(xiàn)。 按住cmd可以在文本中使用進(jìn)行區(qū)域性選擇。
快捷鍵 | 描述 |
---|---|
cmd-click |
在點(diǎn)擊處增加新光標(biāo) |
cmd-shift-L |
將選擇區(qū)域轉(zhuǎn)換為多光標(biāo) |
ctrl-shift-up |
在上一行增加新光標(biāo) |
ctrl-shift-down |
在下一行增加新光標(biāo) |
cmd-D |
選擇下一個(gè)于當(dāng)前被選字符相同的字符并添加新光標(biāo) |
cmd-ctrl-G |
選擇全部于當(dāng)前選中字符相同的字符并添加光標(biāo) |
編程中最常打交道和需要跳出的莫屬于括號(hào)和引號(hào)了。Atom 對(duì)于括號(hào)有很好的處理辦法, 各種括號(hào)在光標(biāo)內(nèi)移動(dòng)都會(huì)被自動(dòng)高亮(引號(hào)和 HTML 中的標(biāo)簽也會(huì)被高亮和自動(dòng)補(bǔ)全)。 選中內(nèi)容后使用括號(hào)可以自動(dòng)將選中內(nèi)容包含在括號(hào)或引號(hào)內(nèi)。
快捷鍵 | 描述 |
---|---|
ctrl-M |
跳至最近的一個(gè)括號(hào)的起始位置 |
ctrl-cmd-M |
選中括號(hào)內(nèi)的所有內(nèi)容 |
alt-cmd-. |
關(guān)閉最近的一個(gè) XML/HTML 標(biāo)簽 |
快捷鍵 | 描述 |
---|---|
cmd-F |
當(dāng)前文本中搜索 |
cmd-shift-F |
搜索整個(gè)項(xiàng)目 |
cmd-G |
找到下一個(gè)匹配的搜索結(jié)果 |
cmd-G-shift |
找到上一個(gè)匹配的搜索結(jié)果 |
在項(xiàng)目搜索中可以使用 wildcard 和指定目標(biāo)的搜索路徑。
代碼片段讓你在寫代碼時(shí)有飛一般的感覺(jué),代碼片段會(huì)將預(yù)先設(shè)置好的代碼片段替換在當(dāng)前文本中, 并且設(shè)置焦點(diǎn)并用 tab 聚焦下一個(gè)焦點(diǎn), 或 shift + tab 聚焦上一個(gè)焦點(diǎn)。
所有的代碼片都存儲(chǔ)在下面的目錄中 ~/.atom/snippets.cson
,
你可以通過(guò) Open Your Snippets Menu 打開(kāi)此文件。
快捷鍵 | 描述 |
---|---|
alt-shift-S |
顯示當(dāng)前文件類型下的全部代碼片段 |
當(dāng)然制作代碼片也有一個(gè)代碼片,它就是 snip
。
下面是一個(gè)簡(jiǎn)單的代碼片樣例。
'.source.js':
'console.log':
'prefix': 'log'
'body': 'console.log(${1: "crash"});$2'
.source.js
為代碼片可用的文件類型范圍console.log
為代碼片內(nèi)容描述prefix
為代碼片調(diào)用字符body
代碼片主體內(nèi)容${1:'crash'}
用于定義焦點(diǎn),順序及其默認(rèn)值多行代碼代碼片
'.source.js':
'if, else if, else':
'prefix': 'ieie'
'body': """
if (${1:true}) {
$2
} else if (${3:false}) {
$4
} else {
$5
}
"""
可以點(diǎn)擊代碼行號(hào)邊的箭頭折疊當(dāng)前層級(jí)的代碼。
快捷鍵 | 描述 |
---|---|
alt-cmd-[ |
折疊當(dāng)前層級(jí) |
alt-cmd-] |
展開(kāi)當(dāng)前層級(jí) |
alt-cmd-shift-{ |
折疊全部層級(jí) |
alt-cmd-shift-} |
展開(kāi)全部層級(jí) |
cmd-K, cmd-N (層級(jí)數(shù)) |
根據(jù)層級(jí)級(jí)別折疊 |
任意一個(gè)窗口都可以無(wú)需的四面分割,分割的部分則依然使用標(biāo)簽來(lái)表示。
快捷鍵 | 描述 |
---|---|
cmd-k arrow |
根據(jù)方向指定分割窗口 |
cmd-K, cmd-arrow |
聚焦指定方向的窗口 |
Atom 支持多種解碼格式(包括中文 GBK 的支持),也可自動(dòng)識(shí)別解碼方式 (不能識(shí)別時(shí)則默認(rèn)為 UTF-8)。當(dāng)然你也可以使用這種方法將多種文本在多種解碼格式直接轉(zhuǎn)換。
快捷鍵 | 描述 |
---|---|
ctrl-shift-U |
切換解碼方式 |
在 Atom 添加書簽就如同你看書的時(shí)添加書簽一樣,它使你在書寫代碼時(shí)可以自如的跳轉(zhuǎn)到你需要的 位置。
快捷鍵 | 描述 |
---|---|
F2-cmd |
可以在當(dāng)前行切換標(biāo)記書簽 |
F2 |
跳轉(zhuǎn)至下一個(gè)書簽 |
F2-shift |
跳轉(zhuǎn)至上一個(gè)書簽 |
F2-ctrl |
查看全部的書簽 |
F2-cmd-shift |
清除全部標(biāo)簽 |
下面列出了筆者在日常 Web 開(kāi)發(fā)中所易用的插件,這些插件滿足了超過(guò)百分之九十筆者的開(kāi)發(fā)需求。下面的這些插件均可以在官方插件管理器中進(jìn)行下載和安裝。
[
{
"name": "advanced-new-file",
"version": "0.4.3"
},
{
"name": "advanced-open-file",
"version": "0.8.2"
},
{
"name": "atom-beautify",
"version": "0.28.8"
},
{
"name": "AtomicChar",
"version": "0.3.8"
},
{
"name": "autocomplete-paths",
"version": "1.0.2"
},
{
"name": "docblockr",
"version": "0.7.3"
},
{
"name": "ex-mode",
"version": "0.7.0"
},
{
"name": "file-icons",
"version": "1.6.2"
},
{
"name": "language-jade",
"version": "0.6.2"
},
{
"name": "linter",
"version": "1.3.0"
},
{
"name": "linter-jshint",
"version": "1.1.4"
},
{
"name": "markdown-toc",
"version": "0.3.0"
},
{
"name": "merge-conflicts",
"version": "1.3.5"
},
{
"name": "minimap",
"version": "4.12.2"
},
{
"name": "minimap-linter",
"version": "1.0.0"
},
{
"name": "open-in-browser",
"version": "0.4.6"
},
{
"name": "pigments",
"version": "0.9.3"
},
{
"name": "sort-lines",
"version": "0.11.0"
},
{
"name": "sync-settings",
"version": "0.6.0"
},
{
"name": "tab-switcher",
"version": "1.2.1"
},
{
"name": "theme-switcher",
"version": "1.1.0"
},
{
"name": "vim-mode",
"version": "0.57.0"
},
{
"name": "atom-dark-syntax",
"version": "0.27.0",
"theme": "syntax"
},
{
"name": "atom-dark-ui",
"version": "0.49.0",
"theme": "ui"
},
{
"name": "atom-light-syntax",
"version": "0.28.0",
"theme": "syntax"
},
{
"name": "atom-light-ui",
"version": "0.41.0",
"theme": "ui"
},
{
"name": "base16-tomorrow-dark-theme",
"version": "0.26.0",
"theme": "syntax"
},
{
"name": "base16-tomorrow-light-theme",
"version": "0.9.0",
"theme": "syntax"
},
{
"name": "one-dark-ui",
"version": "1.0.2",
"theme": "ui"
},
{
"name": "one-dark-syntax",
"version": "1.1.0",
"theme": "syntax"
},
{
"name": "one-light-syntax",
"version": "1.1.0",
"theme": "syntax"
},
{
"name": "one-light-ui",
"version": "1.0.2",
"theme": "ui"
},
{
"name": "solarized-dark-syntax",
"version": "0.38.1",
"theme": "syntax"
},
{
"name": "solarized-light-syntax",
"version": "0.22.1",
"theme": "syntax"
},
{
"name": "about",
"version": "1.0.1"
},
{
"name": "archive-view",
"version": "0.58.0"
},
{
"name": "autocomplete-atom-api",
"version": "0.9.2"
},
{
"name": "autocomplete-css",
"version": "0.9.0"
},
{
"name": "autocomplete-html",
"version": "0.7.2"
},
{
"name": "autocomplete-plus",
"version": "2.19.0"
},
{
"name": "autocomplete-snippets",
"version": "1.7.1"
},
{
"name": "autoflow",
"version": "0.25.0"
},
{
"name": "autosave",
"version": "0.22.0"
},
{
"name": "background-tips",
"version": "0.25.0"
},
{
"name": "bookmarks",
"version": "0.35.0"
},
{
"name": "bracket-matcher",
"version": "0.76.0"
},
{
"name": "command-palette",
"version": "0.36.0"
},
{
"name": "deprecation-cop",
"version": "0.53.1"
},
{
"name": "dev-live-reload",
"version": "0.46.0"
},
{
"name": "encoding-selector",
"version": "0.21.0"
},
{
"name": "exception-reporting",
"version": "0.36.0"
},
{
"name": "find-and-replace",
"version": "0.175.0"
},
{
"name": "fuzzy-finder",
"version": "0.87.0"
},
{
"name": "git-diff",
"version": "0.55.0"
},
{
"name": "go-to-line",
"version": "0.30.0"
},
{
"name": "grammar-selector",
"version": "0.47.0"
},
{
"name": "image-view",
"version": "0.54.0"
},
{
"name": "incompatible-packages",
"version": "0.24.1"
},
{
"name": "keybinding-resolver",
"version": "0.33.0"
},
{
"name": "link",
"version": "0.30.0"
},
{
"name": "markdown-preview",
"version": "0.150.0"
},
{
"name": "metrics",
"version": "0.51.0"
},
{
"name": "notifications",
"version": "0.57.0"
},
{
"name": "open-on-github",
"version": "0.37.0"
},
{
"name": "package-generator",
"version": "0.40.0"
},
{
"name": "release-notes",
"version": "0.53.0"
},
{
"name": "settings-view",
"version": "0.211.2"
},
{
"name": "snippets",
"version": "0.95.0"
},
{
"name": "spell-check",
"version": "0.59.0"
},
{
"name": "status-bar",
"version": "0.75.1"
},
{
"name": "styleguide",
"version": "0.44.0"
},
{
"name": "symbols-view",
"version": "0.100.0"
},
{
"name": "tabs",
"version": "0.82.0"
},
{
"name": "timecop",
"version": "0.31.0"
},
{
"name": "tree-view",
"version": "0.180.0"
},
{
"name": "update-package-dependencies",
"version": "0.10.0"
},
{
"name": "whitespace",
"version": "0.30.0"
},
{
"name": "wrap-guide",
"version": "0.35.0"
},
{
"name": "language-c",
"version": "0.45.0"
},
{
"name": "language-clojure",
"version": "0.16.0"
},
{
"name": "language-coffee-script",
"version": "0.41.0"
},
{
"name": "language-csharp",
"version": "0.6.0"
},
{
"name": "language-css",
"version": "0.32.1"
},
{
"name": "language-gfm",
"version": "0.80.0"
},
{
"name": "language-git",
"version": "0.10.0"
},
{
"name": "language-go",
"version": "0.31.0"
},
{
"name": "language-html",
"version": "0.40.0"
},
{
"name": "language-hyperlink",
"version": "0.14.0"
},
{
"name": "language-java",
"version": "0.15.0"
},
{
"name": "language-javascript",
"version": "0.85.0"
},
{
"name": "language-json",
"version": "0.15.0"
},
{
"name": "language-less",
"version": "0.28.1"
},
{
"name": "language-make",
"version": "0.14.0"
},
{
"name": "language-mustache",
"version": "0.12.0"
},
{
"name": "language-objective-c",
"version": "0.15.0"
},
{
"name": "language-perl",
"version": "0.28.0"
},
{
"name": "language-php",
"version": "0.27.0"
},
{
"name": "language-property-list",
"version": "0.8.0"
},
{
"name": "language-python",
"version": "0.38.0"
},
{
"name": "language-ruby",
"version": "0.57.0"
},
{
"name": "language-ruby-on-rails",
"version": "0.22.0"
},
{
"name": "language-sass",
"version": "0.40.0"
},
{
"name": "language-shellscript",
"version": "0.15.0"
},
{
"name": "language-source",
"version": "0.9.0"
},
{
"name": "language-sql",
"version": "0.17.0"
},
{
"name": "language-text",
"version": "0.7.0"
},
{
"name": "language-todo",
"version": "0.25.0"
},
{
"name": "language-toml",
"version": "0.16.0"
},
{
"name": "language-xml",
"version": "0.30.0"
},
{
"name": "language-yaml",
"version": "0.22.0"
}
]