Atom 文本編輯器

2018-07-07 10:37 更新

本文即為在 Atom 下編寫完成,在寫作過程中讓我對這個嶄新的 1.0 版本文本編輯器 有了更多的了解。 在閱讀本文時注意快捷鍵于后面英文單詞的對應可幫助記憶,在使用中忘記的快捷鍵以可以通過使用 查詢面板(后面會提到)進行查詢。 如果你在使用過程中發(fā)現(xiàn)了異常和錯誤可以到 Atom 所在的 GitHub 倉庫提交問題報告。同一款編輯器一同成長,愿力量與你同在! 下面的快捷鍵均為 Mac OS X 默認設置。如你用的是 Windows 或者是 Linux,可能需要嘗試將 所有提到的 cmd 改為 ctrl。

基礎中的基礎

開始之前先把下面這條快捷鍵記住。cmd+shift+P 它會打開類似 Alfred 的快捷功能選擇窗口, 如果你從來沒有聽過 Alfred(此為 Mac OS X 特有應用) 那你應該趕緊去所搜引擎中找找了。

保存時間

快捷鍵描述
cmd-shift-S可以另存為 "Save As"
cmd-alt-S可以保存全部的 "Save All".

打開文件與目錄

如果在命令行環(huán)境中可以使用下面的方法一次打開多個目錄。

# 打開目錄
atom ./hopes ./dreams

# 獲得幫助
atom -h
快捷鍵描述
cmd-O打開文件
cmd-shift-O添加目錄至當前編輯器窗口

cmd-P 可以打開 Fuzzy Finder 進行模糊搜索,默認可所搜區(qū)域為項目內所有文件。 下面的命令可以對模糊所搜做一些限制,cmd-B 只所搜已打開的文件(存在與 Buffer 中的文件)。 cmd-shift-B

1.0 版本中在編輯器中添加的新文件無法使用 Fuzzy Finder(模糊尋找) 找到,重啟后則可以解決。

邊欄(樹目錄)

快捷鍵描述
cmd-\顯示或隱藏邊欄
ctrl-0聚焦邊欄,聚焦后可以操作樹目錄中的文件

在聚焦后可以通過 a 來增加(add),m 來移動(move),d 來復制(duplicate)或者 delete 來刪除(此處為鍵盤刪除鍵)。 這里的操作并沒有自動路徑補全功能,之后可能需要插件支持。

開始使用

Atom 中幾乎所有的功能都是以插件的形式存在的。所有如何安裝插件則就是我們第一件要做的事。 除了圖形界面安裝的方法外,隨 Atom 還安裝了插件管理器叫做 apm 。通過它也可以直接安裝 和更新插件。簡單說主題也是插件,所以安裝主題與安裝插件的步驟類似。

下面的操作均需要聯(lián)網

# 安裝插件
apm install <package_name>

# 安裝指定版本的插件
apm install <package_name>@<package_version>

# 查詢插件
apm search <package_name>

# 查詢插件詳情
apm view <package_name>

移動光標

Atom 的移動快方法同 Emacs 一致。在熟悉使用 Atom 后也很容易的轉移至 Emacs 的環(huán)境下熟練工作。

單個字符的移動,效果于方向鍵一致。

快捷鍵描述
ctrl-P上移(Previous)
ctrl-N下移(Next)
ctrl-B后移(Back)
ctrl-F前移(Forward)

在單個字符移動基礎上,可以延展至更大范圍的移動。例如,單詞,整行。

快捷鍵描述
alt-B向后以詞為單位移動(英文),中文則以英文標點為間隔
alt-F向前以詞為單位移動(英文),中文則以英文標點為間隔
ctrl-E移動至行末(End)
ctrl-A移動至此行首字符(Ahead)
ctrl-A(敲擊兩次)移動至此行行首(包括空格)
cmd-up移動至文件最頂
cmd-down移動至文件最低

ctrl-G 加數(shù)字可移動至目標行,使用 row:column 可以定位行數(shù)和列數(shù), 使用這個方法在查找錯誤時變得十分方便。

cmd-R 可以在當前文件中(Buffer)按照符號來搜索,符號關鍵字指的是函數(shù)名(代碼中) 或標題(文檔中)。

選擇

選擇是在移動的基礎上加入 shift 既可完成。特別的幾種選擇方法如下。

快捷鍵描述
cmd-L選取整行
ctrl-shift-W選取當前單詞(英文),中文則為整行

編輯與刪除

Atom 如同其他的常用的文本編輯器一樣可以直接編輯文字,并不存在特殊的模式。但了解下面的 編輯技巧可以讓你使用 Atom 更得心應手。

編輯操作

快捷鍵描述
ctrl-T交換光標兩邊的字符(Transpose)
ctrl-J將下一行同當前行合并(Join)
ctrl-cmd-up向上冒泡當前行
ctrl-cmd-down向下冒泡當前行
cmd-shift-D復制當前行(Duplicate)
cmd-K, cmd-U轉換選中字符至全大寫
cmd-K, cmd-L轉換選中字符至全小

刪除操作

快捷鍵描述
ctrl-shift-K刪除當前(Cut)
cmd-delete刪除此行光標后全部字符
cmd-backspace刪除至當前行首
ctrl-K切帖至行末(Cut)
alt-H刪除前一個字符
alt-D刪除后一個字符

多個光標及選擇

同 Sublime Text 相同,Atom 也同樣有多光標的實現(xiàn)。 按住cmd可以在文本中使用進行區(qū)域性選擇。

快捷鍵描述
cmd-click在點擊處增加新光標
cmd-shift-L將選擇區(qū)域轉換為多光標
ctrl-shift-up在上一行增加新光標
ctrl-shift-down在下一行增加新光標
cmd-D選擇下一個于當前被選字符相同的字符并添加新光標
cmd-ctrl-G選擇全部于當前選中字符相同的字符并添加光標

括號

編程中最常打交道和需要跳出的莫屬于括號和引號了。Atom 對于括號有很好的處理辦法, 各種括號在光標內移動都會被自動高亮(引號和 HTML 中的標簽也會被高亮和自動補全)。 選中內容后使用括號可以自動將選中內容包含在括號或引號內。

快捷鍵描述
ctrl-M跳至最近的一個括號的起始位置
ctrl-cmd-M選中括號內的所有內容
alt-cmd-.關閉最近的一個 XML/HTML 標簽

搜索與替換

快捷鍵描述
cmd-F當前文本中搜索
cmd-shift-F搜索整個項目
cmd-G找到下一個匹配的搜索結果
cmd-G-shift找到上一個匹配的搜索結果

在項目搜索中可以使用 wildcard 和指定目標的搜索路徑。

代碼片段(Snippets)

代碼片段讓你在寫代碼時有飛一般的感覺,代碼片段會將預先設置好的代碼片段替換在當前文本中, 并且設置焦點并用 tab 聚焦下一個焦點, 或 shift + tab 聚焦上一個焦點。

所有的代碼片都存儲在下面的目錄中 ~/.atom/snippets.cson, 你可以通過 Open Your Snippets Menu 打開此文件。

快捷鍵描述
alt-shift-S顯示當前文件類型下的全部代碼片段

當然制作代碼片也有一個代碼片,它就是 snip 。

制作代碼片段

下面是一個簡單的代碼片樣例。

'.source.js':
  'console.log':
    'prefix': 'log'
    'body': 'console.log(${1: "crash"});$2'
  • .source.js 為代碼片可用的文件類型范圍
  • console.log 為代碼片內容描述
  • prefix 為代碼片調用字符
  • body 代碼片主體內容
  • ${1:'crash'} 用于定義焦點,順序及其默認值

多行代碼代碼片

'.source.js':
  'if, else if, else':
    'prefix': 'ieie'
    'body': """
      if (${1:true}) {
        $2
      } else if (${3:false}) {
        $4
      } else {
        $5
      }
    """

代碼折疊

可以點擊代碼行號邊的箭頭折疊當前層級的代碼。

快捷鍵描述
alt-cmd-[折疊當前層級
alt-cmd-]展開當前層級
alt-cmd-shift-{折疊全部層級
alt-cmd-shift-}展開全部層級
cmd-K, cmd-N(層級數(shù))根據層級級別折疊

多窗口模式

任意一個窗口都可以無需的四面分割,分割的部分則依然使用標簽來表示。

快捷鍵描述
cmd-k arrow根據方向指定分割窗口
cmd-K, cmd-arrow聚焦指定方向的窗口

解碼(Encoding)

Atom 支持多種解碼格式(包括中文 GBK 的支持),也可自動識別解碼方式 (不能識別時則默認為 UTF-8)。當然你也可以使用這種方法將多種文本在多種解碼格式直接轉換。

快捷鍵描述
ctrl-shift-U切換解碼方式

書簽

在 Atom 添加書簽就如同你看書的時添加書簽一樣,它使你在書寫代碼時可以自如的跳轉到你需要的 位置。

快捷鍵描述
F2-cmd可以在當前行切換標記書簽
F2跳轉至下一個書簽
F2-shift跳轉至上一個書簽
F2-ctrl查看全部的書簽
F2-cmd-shift清除全部標簽

擴展插件

下面列出了筆者在日常 Web 開發(fā)中所易用的插件,這些插件滿足了超過百分之九十筆者的開發(fā)需求。下面的這些插件均可以在官方插件管理器中進行下載和安裝。

[
    {
        "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"
    }
]


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號