├── .gitignore ├── LICENSE ├── README.md ├── appendix-c-upgrading-to-1.0-apis └── upgrading-your-syntax-theme.md ├── chapter-1-getting-started ├── README.md ├── atom-basics.md ├── images │ ├── advanced-settings.png │ ├── command-palette.png │ ├── finder.png │ ├── first-launch.png │ ├── linux-downloads.png │ ├── open-file.png │ ├── project-view.png │ ├── settings-wrap.png │ ├── settings.png │ ├── theme.png │ └── windows.gif ├── installing-atom.md ├── summary.md └── why-atom.md └── chapter-2-using-atom ├── README.md ├── atom-packages.md ├── atom-selections.md ├── autocomplete.md ├── editing-and-deleting-text.md ├── find-and-replace.md ├── folding.md ├── grammar.md ├── images ├── autocomplete.png ├── bookmarks.png ├── encodings.png ├── find-replace-file.png ├── find-replace-project.png ├── folding.png ├── goto.png ├── grammar.png ├── multiple-cursors.gif ├── package-specific-settings.png ├── packages-install.png ├── panes.png ├── preview.png ├── snippet-scope.png ├── snippets-see-snippets.png ├── spellcheck.png ├── symbol.png ├── themes.png ├── unity-theme.png └── whitespace.png ├── moving-in-atom.md ├── panes.md ├── snippets.md └── writing-in-atom.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | .DS_Store 3 | _book/ 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The Creative Commons Attribution-ShareAlike 3.0 (CC BY-SA) 2 | 3 | Copyright (c) 2015 Atom China Community 4 | 5 | This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. 6 | 7 | To view a copy of this license, visit . 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Atom Flight Manual 2 | 3 | 翻译自 4 | 5 | ## 已翻译内容索引 6 | 7 | * [第一章:新手入门](./chapter-1-getting-started/) 8 | * [为什么选择 Atom?](./chapter-1-getting-started/why-atom.md) 9 | * [Atom 基础](./chapter-1-getting-started/atom-basics.md) 10 | * [安装 Atom](./chapter-1-getting-started/installing-atom.md) 11 | * [小结](./chapter-1-getting-started/summary.md) 12 | * [第二章:使用 Atom](./chapter-2-using-atom/) 13 | * [Atom 中的包](./chapter-2-using-atom/atom-packages.md) 14 | * [在 Atom 里移动](./chapter-2-using-atom/moving-in-atom.md) 15 | * [Atom 文本选择](./chapter-2-using-atom/atom-selections.md) 16 | * [编辑和删除文本](./chapter-2-using-atom/editing-and-deleting-text.md) 17 | * [查找和替换](./chapter-2-using-atom/find-and-replace.md) 18 | * [代码段](./chapter-2-using-atom/snippets.md) 19 | * [自动补全](./chapter-2-using-atom/autocomplete.md) 20 | * [折叠](./chapter-2-using-atom/folding.md) 21 | * [面板](./chapter-2-using-atom/panes.md) 22 | * [语法](./chapter-2-using-atom/grammar.md) 23 | * [在 Atom 中写作](./chapter-2-using-atom/writing-in-atom.md) 24 | * [附录 C:升级至 1.0 APIs](./appendix-c-upgrading-to-1.0-apis/) 25 | * [升级语法主题](./appendix-c-upgrading-to-1.0-apis/upgrading-your-syntax-theme.md) 26 | 27 | ## 如何参与翻译 28 | 29 | 1. 在 [翻译认领](https://github.com/atom-china/manual/issues?q=is%3Aissue+is%3Aopen+label%3A翻译认领) 列表中认领翻译章节,在 Issue 下添加评论认领。 30 | 2. 为了避免重复工作,请在仓库维护者确认之后,Fork 此仓库开始翻译,翻译请遵循 [排版约定][]。 31 | 3. 翻译完成后,发送 Pull Request,并在原 Issue 添加链接。 32 | 4. 处理校对者的校对建议。 33 | 34 | > 建议:Fork 此仓库后,请先从 master 分支上 `git checkout -b translate` 一个新的 translate 分支来翻译文章,翻译完成后再把 translate 分支发 PR。 35 | 36 | ## 如何参与校对 37 | 38 | 1. 在 [校对认领](https://github.com/atom-china/manual/issues?q=is%3Aissue+is%3Aopen+label%3A校对认领) 列表中认领校对章节。 39 | 2. 直接在翻译章节对应的 Pull Request 里添加 note 校对,校对时可参考 [排版约定][]。 40 | 41 | > 在文章被认领之后也欢迎小伙伴继续添加 note,共同目的都是提高翻译质量。 42 | 43 | ## 如何参与排版 44 | 45 | 经 [wizardforcel][] 授权,我们可以使用 [atom-flight-manual-zh-cn][] 里已经翻译的章节,只是两个项目的排版风格有所不同,所以需要将相关内容按本项目的 [排版约定][] 进行调整和校对之后再合并进来。 46 | 47 | 1. 在 [排版认领](https://github.com/atom-china/manual/issues?q=is%3Aissue+is%3Aopen+label%3A排版认领) 列表中认领待排版章节,在 Issue 下添加评论认领。 48 | 2. 为了避免重复工作,请在仓库维护者确认之后,Fork 此仓库开始工作。 49 | 3. 将 [atom-flight-manual-zh-cn][] 里对应章节内容排版并校对完之后,发送 Pull Request。 50 | 51 | 常见需要处理的问题: 52 | 53 | * 行内代码块与前后内容之间添加空格。 54 | * 将图片放置在章文件夹内的 images 子文件夹内,并修改链接。 55 | * 添加图片说明。 56 | * 将 `“”` 替换成代码块符号。 57 | * 不符合 [排版约定][] 的其它问题。 58 | 59 | ## 其它参与方式 60 | 61 | 如果你在阅读过程中发现翻译错误,或与 master 分支内容与官方手册不同步,你可以发一个 Issue 提醒该仓库的维护者关注这个问题,或者你也可以直接发起 Pull Request 来修正这个错误。 62 | 63 | ## 排版约定 64 | 65 | * 中英文之间需要使用空格。 66 | 67 | 例如: 68 | 69 | ``` 70 | 这个仓库托管在 GitHub 上。 71 | 72 | 图 1. 使用多光标 73 | ``` 74 | 75 | * 嵌套在内容里的超链接前后使用空格。 76 | 77 | 例如: 78 | 79 | ``` 80 | 可以从 获取 Windows Installer 81 | ``` 82 | 83 | * code 标记原则上尽量忠实原文,但额外给所有包含符号的命令、路径都添加 code 标记。 84 | 85 | 例如: 86 | 87 | ``` 88 | 当 Atom 启动后它会在 `%USERPROFILE%` 下创建 `.atom` 文件夹 89 | ``` 90 | 91 | * 若章节里包含图片,将图片保存到该章节所在文件夹里的 images 子文件夹里。 92 | 93 | 例如: 94 | 95 | ``` 96 | ![The Command Palette](./images/command-palette.png) 97 | ``` 98 | 99 | ## 主要贡献者名单 100 | 101 | (按参与时间排序) 102 | 103 | * [jysperm](https://github.com/jysperm) 104 | * [mzlogin](https://github.com/mzlogin) 105 | * [hypogaea](https://github.com/hypogaea) 106 | * [wizardforcel][] 107 | * [chenxiaoyoyo](https://github.com/chenxiaoyoyo) 108 | * [zxning](https://github.com/zxning) 109 | 110 | ## 鸣谢 111 | 112 | 本项目较多内容源自 [atom-flight-manual-zh-cn][] ,感谢 [wizardforcel][] 的贡献。 113 | 114 | ## 参考链接 115 | 116 | 在 GitHub 上有一些前人针对这个手册进行了一些翻译工作,翻译者可以参考: 117 | 118 | * 119 | * 120 | 121 | 感谢他们和所有参与者的工作! 122 | 123 | ## License 124 | 125 | [Creative Commons BY-SA license 3.0](./LICENSE) 126 | 127 | [排版约定]: #排版约定 128 | [wizardforcel]: https://github.com/wizardforcel 129 | [atom-flight-manual-zh-cn]: https://github.com/wizardforcel/atom-flight-manual-zh-cn 130 | -------------------------------------------------------------------------------- /appendix-c-upgrading-to-1.0-apis/upgrading-your-syntax-theme.md: -------------------------------------------------------------------------------- 1 | ```sh 2 | 注意:在 Atom 1.13 中删除了 Shadow DOM 。下面介绍的 `:host` 选择器将不起作用,不应该再使用。 3 | ``` 4 | 5 | # 升级语法主题 6 | 7 | 文本编辑器的内容是在 shadow DOM 中渲染,shadow DOM 用于保护内容的样式不被全局样式表所污染。有关 shadow DOM 的更多背景信息,请查看 HTML 5 Rocks 上的 [shadow DOM 101](https://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/) 。 8 | 9 | 语法主题是专门用于设置文本编辑器内容的样式,因此在启用文本编辑器的 shadow DOM 时,它们会自动直接加载到文本编辑器的 shadow DOM 中。当主题的 `package.json` 包含 `theme:"syntax"` 声明语句时将会自动渲染内容,因此不需要改变任何内容来适应目标的上下文。 10 | 11 | 当主题样式表加载到文本编辑器的 shadow DOM 中时,想要从外部以编辑器为目标的选择器将不起作用。以 `.editor` 和 `.editor-color` 类为目标的样式需要以 `:host` 伪元素为目标,该伪元素与包含的 `atom-text-editor` 节点相匹配。有关 `:host` 伪元素的更多信息,请参阅 [shadow DOM 201](https://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/#toc-style-host) 上的文章。 12 | 13 | 这里有一个来自 Atom 的 light 语法主题的例子。请注意,从外部以编辑器为目标的 `atom-text-editor` 选择器已被保留下来,用于当禁用 shadow DOM 时允许主题在过渡阶段保持工作状态。 14 | 15 | ```sh 16 | atom-text-editor, :host { /* :host added */ 17 | background-color: @syntax-background-color; 18 | color: @syntax-text-color; 19 | 20 | .invisible-character { 21 | color: @syntax-invisible-character-color; 22 | } 23 | /* more nested selectors... */ 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /chapter-1-getting-started/README.md: -------------------------------------------------------------------------------- 1 | # 新手入门 2 | 3 | * [为什么选择 Atom?](./why-atom.md) 4 | * [安装 Atom](./installing-atom.md) 5 | * [Atom 基础](./atom-basics.md) 6 | * [小结](./summary.md) 7 | -------------------------------------------------------------------------------- /chapter-1-getting-started/atom-basics.md: -------------------------------------------------------------------------------- 1 | # Atom 基础 2 | 3 | 当你安装好了 Atom 之后,让我们来认识一下它吧。 4 | 5 | 当你第一次打开 Atom 的时候,你会看到这样的一个窗口: 6 | 7 | ![Atom's welcome screen](./images/first-launch.png) 8 | 9 | 图 1. Atom 的欢迎屏幕 10 | 11 | 这是 Atom 的欢迎屏幕(welcome screen),它展示了一些不错的建议,帮助你了解 Atom. 12 | 13 | ## 基本术语 14 | 15 | 让我们先来了解一下接下来要用到的几个术语: 16 | 17 | > **缓冲区(Buffer)** 代表了 Atom 中的一个文件的文本内容,它基本上相当于一个真正的文件,但它是被 Atom 维护在内存中的,如果你修改了它,在你保存之前,缓冲区的内容都不会被写入到硬盘里。 18 | 19 | > **窗格(Pane)** 代表 Atom 中的一个可见区域。例如在欢迎屏幕上你可以看到四个窗格:用来切换文件的标签栏(tab bar),用来显示行号的边框(gutter),底部的状态栏(status bar),以及文本编辑器。 20 | 21 | ## 命令面板 22 | 23 | 当你按下 `cmd-shift-P` 并且当前焦点在一个窗格上的时候,命令面板就会弹出来。 24 | 25 | 在这个教程中我们会用类似 `cmd-shift-P` 的形式来运行命令,这是 Atom 在 Mac 上的默认快捷键,如果你在其他的平台上使用 Atom, 可能会稍有不同。如果某个快捷键无法工作,你可以通过命令面板来查找正确的快捷键。 26 | 27 | 在 Atom 中几乎所有的操作都通过这种搜索驱动的菜单来完成,你只需要按下 `cmd-shift-P` 来搜索命令,而不必在复杂的传统菜单栏间点来点去。 28 | 29 | ![The Command Palette](./images/command-palette.png) 30 | 31 | 图 2. 命令面板 32 | 33 | 除了搜索数以千计的命令之外,命令面板上会显示每个命令对应的快捷键,这意味着你可以在使用这些命令的同时学习对应的快捷键,以便之后使用。 34 | 35 | 在本书的剩余部分我们会向你介绍一些命令,你可以在命令面板中搜索,或使用对应的快捷键。 36 | 37 | ## 偏好设置 38 | 39 | Atom 有很多选项和偏好设置,你可以在设置界面修改它们。 40 | 41 | ![Atom's settings screen](./images/settings.png) 42 | 43 | 图 3. Atom 的设置界面 44 | 45 | 在设置界面中,你可以修改主题、修改文本折行的行为(wrapping)、字体大小、缩进宽度、滚动速度等选项。你也可以用这个界面安装新的插件和主题,我们在 [Atom Packages](https://atom.io/docs/latest/ch02/_atom_packages) 中介绍了这个话题。 46 | 47 | 你可以通过菜单栏中 Atom 下的 Preferences 菜单项打开设置界面。你也可以在命令面板中搜索 `settings-view:open` 或使用快捷键 `cmd-,`. 48 | 49 | ### 修改主题 50 | 51 | 你可以在设置界面中修改 Atom 的主题,Atom 内建了 4 个不同的 UI 主题,分别是亮色和暗色版本的名为 Atom 和 One 的主题。以及 8 个不同的语法着色主题。你可以通过点击左边栏的 Themes 选项卡来改变当前主题,或安装新的主题。 52 | 53 | ![Changing the theme from Settings](./images/theme.png) 54 | 55 | 图 4. 从设置里更改主题 56 | 57 | UI 主题会修改标签栏、左侧目录树(tree view)等 UI 元素的颜色;而语法着色主题修改编辑器中文字的语法高亮方案。你只需要简单地在下拉框中选择另一项,即可修改主题。 58 | 59 | 在 Atom.io 上有数十种主题供你选择,如果你想要一个独一无二的主题,我们也在 [Basic Customization](https://atom.io/docs/latest/using-atom-basic-customization#style-tweaks) 中介绍了如何自定义主题,还在 [Creating a Theme](https://atom.io/docs/latest/hacking-atom-creating-a-theme) 中介绍了如何创建一个主题。 60 | 61 | ### 文本折行 62 | 63 | 你可以通过设置界面指定 Atom 处理空白和折行的策略。 64 | 65 | ![Changing soft wrap from Settings](./images/settings-wrap.png) 66 | 67 | 图 5. 从设置里更改广本折行 68 | 69 | 当你启用了 Soft Tabs, Atom 将会在你按 `tab` 键时用空格来替代真正的制表符,Tab Length 则指定了一个制表符代表多少个空格,或者当 Soft Tabs 被禁用时多少个空格相当于一个制表符。 70 | 71 | 如果开启了 Soft Wrap 选项,Atom 会在一行中的文本超出屏幕显示范围时将其折为两行,如果禁用了这个选项,过长的行将简单地超出屏幕显示范围,你必须要横向移动滚动条才能看到剩余的部分。如果 Soft Wrap At Preferred Line Length 选项被开启,则总是会在 80 个字符处折行,你也可以设置一个自定义的长度来替换掉默认的 80 个字符。 72 | 73 | 在 [Basic Customization](https://atom.io/docs/latest/using-atom-basic-customization#style-tweaks) 中我们会介绍如何为不同的文件类型(例如你希望在 Markdown 文件中折行,但不希望在代码中也是如此)设置不同的折行配置。 74 | 75 | ### 测试功能(Beta Features) 76 | 77 | 在 Atom 的开发过程中,偶尔会有一些新功能,但没有默认启用给所有用户。如果你愿意的话,你可以在设置界面中提前体验这些功能。 78 | 79 | ![Beta features in the Settings view](./images/advanced-settings.png) 80 | 81 | 图 6. 设置界面里的测试功能 82 | 83 | 这对于插件开发者来说非常有用,开发者可以在一个功能被默认启用之前,测试他们维护的插件与新功能的兼容性。 84 | 85 | 你也可能仅仅是因为期待即将到来的新功能,所以时不时来这里看一看。 86 | 87 | ## 打开、编辑、保存文件 88 | 89 | 现在我们已经设置好了编辑器,让我们来了解一下如何打开和编辑文件吧,毕竟这才是一个文本编辑器真正的功能。 90 | 91 | ### 打开文件 92 | 93 | 在 Atom 中有几种方式可以打开一个文件。你可以在菜单栏中点击 File 菜单下的 Open, 或者用快捷键 `cmd-O`, 用操作系统的对话框选择一个文件。 94 | 95 | ![Open file by dialog](./images/open-file.png) 96 | 97 | 图 7. 从文件选择对话框打开文件 98 | 99 | 这在打开一个不属于当前项目的文件非常有用,或者更可能是你刚打开一个新的窗口。 100 | 101 | 另一种打开文件的方法是用命令行。在 Atom 的菜单栏中有一个名为 Install Shell Commands 的菜单项,他会向你的终端中安装一个新的名为 `atom` 的命令,你可以用一个或多个文件路径作为参数去运行 `atom` 命令。 102 | 103 | ``` 104 | $ atom -h 105 | Atom Editor v0.152.0 106 | 107 | Usage: atom [options] [path ...] 108 | 109 | One or more paths to files or folders may be specified. If there is an 110 | existing Atom window that contains all of the given folders, the paths 111 | will be opened in that window. Otherwise, they will be opened in a new 112 | window. 113 | 114 | ... 115 | ``` 116 | 117 | 这对于从终端中打开一个文件来说非常有用,只需运行 `atom [files]` 即可。 118 | 119 | ### 编辑和保存文件 120 | 121 | 你可以非常简单地编辑一个文件,你只需要用你的鼠标点击一个位置,然后用键盘输入内容即可,Atom 没有特殊的命令或快捷键来进入「编辑模式」。 122 | 123 | 你可以用菜单栏的 File >> Save 或快捷键 `cmd-S` 来保存文件,或者你可以用 Save As 或 `cmd-shift-S` 将文件另存为到另一个路径。最后,你可以用 `ctl-shift-S` 快捷键一次保存 Atom 中所有打开的文件。 124 | 125 | ## 打开目录 126 | 127 | Atom 不仅仅可以编辑单个文件;大多数情况下你需要编辑由若干个文件组成的项目(Project)。你可以在菜单栏 File >> Open 弹出的对话框中选择一个目录,或者你也可以通过 File >> Add Project Folder… 或快捷键 `cmd-shift-O` 在一个窗口中打开多个目录。 128 | 129 | 你也可以在命令行下,将多个路径作为参数传递给 `atom`. 例如 `atom ./hopes ./dreams` 会让 Atom 同时打开 hopes 和 dreams 这两个目录。 130 | 131 | 当你用 Atom 打开一个或多个目录时,目录树会自动地出现在窗口左侧。 132 | 133 | ![Tree view in an open project](./images/project-view.png) 134 | 135 | 图 8. 已打开项目的目录树 136 | 137 | 目录树允许你查看和修改当前项目的目录结构,你可以在目录树中打开文件、重命名文件、删除文件、创建文件。 138 | 139 | 你可以通过快捷键 cmd-\ 或 `tree-view:toggle` 命令来隐藏或重新显示目录树,用快捷键 `ctrl-0` 可以将焦点切换到目录树。当焦点位于目录树上时,你可以用快捷键 `a`、`m` 以及 `delete` 来创建、移动或删除文件和目录。你还可以简单地在目录树中用右键点击文件,你可以看到更多选项,除了前面提到的,还可以在操作系统的文件浏览器中显示文件、复制文件的路径到剪贴板。 140 | 141 | ### 打开项目中的文件 142 | 143 | 当你在 Atom 中打开了一个项目(即目录)后,你就可以简单地查找并打开来自项目中文件了。 144 | 145 | 当你按下 `cmd-T` 或 `cmd-P` 的时候,模糊查找框(Fuzzy Finder)就会弹出。它允许你通过输入文件名或路径的一部分,在整个项目中模糊查找相应的文件。 146 | 147 | ![Opening files with the Fuzzy Finder](./images/finder.png) 148 | 149 | 图 9. 使用模糊查找框打开文件 150 | 151 | 你也可以通过 `cmd-B` 来只查找已经打开的文件,而不是所有文件。你还可以用 `cmd-shift-B` 来只查找从上次 Git 提交之后修改过或新增的文件。 152 | 153 | 模糊查找框会根据 `core.ignoredNames` 和 `fuzzy-finder.ignoredNames` 这两个选项来决定不查找哪些文件。如果在你的项目里有很多你不希望它们出现在模糊查找框的文件,那么你可以在选项中添加它们的路径或使用通配符。你可以在设置界面的 Core Settings 下找到这两个选项,之后我们会在 [Basic Customization](https://atom.io/docs/latest/using-atom-basic-customization#global-configuration-settings) 一节中介绍更多的选项。 154 | 155 | 这些选项的通配符功能由名为 minimatch 的一个 Node.js 库提供,你可以在这里了解到它的语法: 156 | 157 | 在 core.excludeVcsIgnoredPaths 这个选项被开启时,模糊查找框会忽略 .gitignore 中指定的的文件,你可以在设置界面中修改这些选项。 158 | 159 | ## 模块化的 Atom 160 | 161 | 就像 Atom 的其他很多部分一样,目录树也并非直接内建在 Atom 中,它是一个独立的插件,被捆绑在 Atom 发行版中并默认启用。 162 | 163 | 你可以在这里找到目录树插件的源代码: 164 | 165 | Atom 有趣的部分之一就是,很多核心功能实际上只是一个普通的插件——你也可以用类似的方式来实现其他功能。这意味着如果你不喜欢默认的目录树,你完全可以简单地自己编写一个,然后将默认的目录树替换掉。 166 | -------------------------------------------------------------------------------- /chapter-1-getting-started/images/advanced-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/advanced-settings.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/command-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/command-palette.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/finder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/finder.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/first-launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/first-launch.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/linux-downloads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/linux-downloads.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/open-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/open-file.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/project-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/project-view.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/settings-wrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/settings-wrap.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/settings.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/theme.png -------------------------------------------------------------------------------- /chapter-1-getting-started/images/windows.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-1-getting-started/images/windows.gif -------------------------------------------------------------------------------- /chapter-1-getting-started/installing-atom.md: -------------------------------------------------------------------------------- 1 | # 安装 Atom 2 | 3 | 想要使用 Atom,我们就得先安装它。这部分将会讲到如何在 Mac,Windows 和 Linux 上安装 Atom,以及如何从源码构建它。 4 | 5 | 在这些系统下安装 Atom 都很简单。访问 后在页面顶部就能看到下载按钮。 6 | 7 | ![Download buttons on atom io](./images/linux-downloads.png) 8 | 9 | 图 1. atom.io 网站的下载按钮 10 | 11 | 这些按钮的文字和行为会自动对应你的操作系统,下载和安装都很方便。但我们还是一起详细看看吧! 12 | 13 | ## 给 Mac 安装 Atom 14 | 15 | Atom 最初就是为 Mac 环境构建的,所以安装过程非常简单。可以直接点击 atom.io 网站上的下载按钮,也可以访问 Atom 的发布页: 16 | 17 | 18 | 19 | 直接下载 `atom-mac.zip` 文件。 20 | 21 | 待文件下载完成后,点击解压,然后拖拽解压出来的 `Atom` 程序到你的 「Applications」 文件夹。 22 | 23 | 当你第一次打开 Atom 时,它会尝试安装终端下使用的 `atom` 和 `apm` 命令。在某些情况下,可能会因为需要管理员密码而安装失败。要检查 `atom` 命令是否安装成功可以在终端运行 `which atom`,如果 `atom` 命令安装好了,会看到这样的输出: 24 | 25 | ```sh 26 | $ which atom 27 | /usr/local/bin/atom 28 | $ 29 | ``` 30 | 31 | 如果 `atom` 命令没有安装,`which` 命令不会有输出: 32 | 33 | ```sh 34 | $ which atom 35 | $ 36 | ``` 37 | 38 | 想要自己安装 `atom` 和 `apm` 命令,可以在 Command Palette 运行 「Windows: Install Shell Commands」,会自动弹框询问你的管理员密码。(译注:Mac 下打开 Command Palette 的快捷键是 shift+cmd+p,Windows 下是 ctrl+shift+p 。) 39 | 40 | ## 给 Windows 安装 Atom 41 | 42 | 在 Windows 可以从 获取 Windows Installer,也可以从 [Atom Releases](https://github.com/atom/atom/releases/latest) 下载 `AtomSetup.exe`。 43 | 44 | 它们会帮你安装好 Atom,将 `atom` 和 `apm` 命令添加到 `PATH` 环境变量,在桌面和开始菜单创建快捷方式,往右键菜单添加「Open with Atom」,让 Atom 能够在用户从「打开方式」里选取关联程序时可见。 45 | 46 | ![Atom on Windows](./images/windows.gif) 47 | 48 | 图 2. Windows 下的 Atom 49 | 50 | ### 便携模式 51 | 52 | Atom 在 Windows 下有一种便携模式,允许将它自己、Settings、Packages 和缓存等都放置在可移动存储设备上,这将使你能很容易地把 Atom 拿到另一台机器使用,不用安装任何东西。 53 | 54 | 开始使用便携模式的 Atom: 55 | 56 | 1. 从 [Atom Releases](https://github.com/atom/atom/releases/latest) 下载 `atom-windows.zip` 57 | 2. 将 `atom-windows.zip` 解压到你的可移动存储设备 58 | 3. 从解压出来的 Atom 文件夹里启动 `atom.exe` 59 | 4. 当 Atom 启动后它会在 `%USERPROFILE%` 下创建 `.atom` 文件夹 60 | 5. 将 `.atom` 文件夹和可移动存储设备里的 Atom 文件夹放到一起 61 | 62 | 现在不管你何时从你的可移动存储设备启动 `Atom.exe`,就会进入便携模式,所有的 settings 和 packages 都会保存到 `.atom` 文件夹。 63 | 64 | 注意便携模式有几点限制: 65 | 66 | * 没有集成到资源管理器,没有为命令行命令设置 PATH 环境变量 67 | * `.atom` 文件夹必须放在包含 `atom.exe` 的文件夹的同级(不是里面) 68 | * `.atom` 文件夹必须是可写的 69 | * 不能有 ATOM_HOME 环境变量(这将覆盖便携模式的行为) 70 | 71 | ## 给 Linux 安装 Atom 72 | 73 | 在 Linux 下安装 Atom,你可以从 [Atom 主页](https://atom.io/) 或者 [Atom 项目发布页](https://github.com/atom/atom/releases) 按需下载 [Debian package](https://atom.io/download/deb) 或 [RPM package](https://atom.io/download/rpm)。 74 | 75 | 在 Debian 下可以使用 `dpkg -i` 安装 Debian 软件包: 76 | 77 | ```sh 78 | $ sudo dpkg -i atom-amd64.deb 79 | ``` 80 | 81 | 在 RedHat 或者其它基于 RPM 的系统,可以使用 `rpm -i` 命令: 82 | 83 | ```sh 84 | $ rpm -i atom.x86_64.rpm 85 | ``` 86 | 87 | ## 从源码构建 Atom 88 | 89 | 如果上面这些方案都不适用于你的环境,或者你只是想试一试,那么也可以从源码构建 Atom。 90 | 91 | 这个链接里有最新的详细构建教程,有 Mac、Windows、Linux 和 FreeBSD 几种版本: 92 | 93 | 94 | 95 | 一般来讲,你需要使用 Git、C++ 工具链和 Node 去构建 Atom,上面的项目的文档里有详细介绍。 96 | 97 | ## 配置代理 98 | 99 | 如果你在使用代理,那可以通过设置 `~/.atom/.apmrc` 文件里的 `https-proxy` 字段来配置 [apm](https://github.com/atom/apm)(Atom Package Manager): 100 | 101 | ``` 102 | https-proxy = https://9.0.2.1:0 103 | ``` 104 | 105 | 如果你开启了防火墙并且在安装 packages 时看到 SSL 错误,那可以在 `~/.atom/.apmrc` 里添加这样一行来禁用对 SSL 证书的检查: 106 | 107 | ``` 108 | strict-ssl = false 109 | ``` 110 | 111 | 你可以使用 `apm config get https-proxy` 来验证代理是否设置成功,使用 `apm config list` 来列出所有自定义设置。 112 | -------------------------------------------------------------------------------- /chapter-1-getting-started/summary.md: -------------------------------------------------------------------------------- 1 | # 小结 2 | 3 | 现在你应该对 Atom 是什么, 打算用它做什么有了基本的认识。你应该已经安装并且能用它来做一些最简单的文本编辑了。 4 | 5 | 你已经做好了挖掘更多有趣东西的准备。 6 | -------------------------------------------------------------------------------- /chapter-1-getting-started/why-atom.md: -------------------------------------------------------------------------------- 1 | # 为什么选择 Atom? 2 | 3 | 这个世界上有那么多种编辑器,为什么你要花时间学习和使用 Atom 呢? 4 | 5 | 虽然 Sublime 和 TextMate 之类的编辑器已经非常好用了,但它们仅提供了很有限的拓展性。而在另一个极端,Emacs 和 Vim 提供了灵活的拓展性,但它们并不是很友好,需要使用专用的编程语言来配置和拓展。 6 | 7 | 我们觉得我们可以做得更好。我们的目标是在保证易用性的同时提供充分的可拓展性(hackability):这个编辑器会受到第一天学习编程的新生欢迎,而且当他们成长为编程专家时也难以割舍。 8 | 9 | 当我们使用 Atom 来开发 Atom 的时候,随着它的逐渐完善,我们愈发觉得已经离不开它了。从表面上来看,Atom 是一个能满足你的期待的,现代化的桌面文本编辑器,而在表面之下,这是一个值得你去一同完善的系统。 10 | 11 | ## Atom 的核心 12 | 13 | Web 技术虽然有其缺陷,但经过二十年的发展,Web 已经逐渐成长为了一个强大的具有活力的平台。所以当我们计划写一个自用的可拓展的文本编辑器时,Web 技术显然是一个好的选择,但首先我们需要摆脱来自 Web 的限制。 14 | 15 | ### 混合本地代码与 Web 技术 16 | 17 | Web 浏览器很适合用来浏览网页,但写代码是一种需要可靠的工具的专业活动。更重要的是,浏览器出于安全的考虑,严格限制了对本地系统的访问,但对一个文本编辑器而言,不能向本地系统写入文件是不可接受的。 18 | 19 | 因此,我们没有把 Atom 构建为一个传统的 Web 应用,Atom 是一个专门被设计用作文本编辑器,而不是网页浏览器的 Chromium 定制版。Atom 的每一个窗口实际上都是一个本地渲染的网页。 20 | 21 | 所有来自 Node.js 可用的 API 在 Atom 窗口的 JavaScript 中同样可用,这种结合带来了一种独一无二的开发体验。 22 | 23 | 因为一切都是本地的,你不需要将静态资源打包、不需要关注脚本的异步加载,如果你希望加载一些代码。只需要在文件的最顶部 `require` 它即可,Node.js 的模块系统允许你将一个系统分割为小的、专注于某一功能的包。 24 | 25 | ### JavaScript 与 C++ 的结合 26 | 27 | 与原生代码交互也很简单。例如,你基于 Oniguruma 正则引擎开发了一个用来提供对 TextMate 语法识别的支持。在浏览器里,你可能需要使用 NaCl 或 Esprima, 而在 Node 里这个过程变得非常简单。 28 | 29 | 在 Node.js 的 API 之外,我们还提供了一些 API 例如使用系统的对话框、使用菜单栏和右键菜单、操纵窗口尺寸等等。 30 | 31 | ### Web 技术:最有趣的部分 32 | 33 | 另一个好消息就是当你为 Atom 编写代码时,这些代码一定会被运行在最新版本的 Chromium 中。这意味着你可以无视与浏览器兼容性有关的黑科技,使用全部的最新的 Web 功能。 34 | 35 | 例如,Atom 的工作区和窗格都是基于 flexbox 来进行布局的。这是一项刚刚出现的技术,从我们使用它之后也发生了很多变化,但不要紧,因为它工作得很好。 36 | 37 | 我们确信将 Atom 构建在 Web 技术之上是一个好的选择,因为整个行业都在推动着 Web 技术的发展。原生UI技术不断产生又不断淘汰,而 Web 是一个每年都变得更加强大和普及的标准。我们对于深入探索这一强大的技术感到无比兴奋。 38 | 39 | ## 一个开源的文本编辑器 40 | 41 | GitHub 的目标是帮助大家构建更好的软件,而 Atom 则是实现这一目标的重要补充。Atom 是一项长期的投资,GitHub 会持续投入开发力量来推动它的发展。但我们也意识到不能让它受限于我们的能力,就像之所以 Emacs 和 Vim 在过去的三十年间被广泛使用,是因为只有开源,才能构建一个持久的、有活力的文本编辑器社区。 42 | 43 | 整个 Atom 编辑器都是免费且开源的,你可以在 这个组织下找到它。 44 | -------------------------------------------------------------------------------- /chapter-2-using-atom/README.md: -------------------------------------------------------------------------------- 1 | # 使用 Atom 2 | 3 | * [Atom 中的包](./atom-packages.md) 4 | * [在 Atom 里移动](./moving-in-atom.md) 5 | * [Atom 文本选择](./atom-selections.md) 6 | * [编辑和删除文本](./editing-and-deleting-text.md) 7 | * [查找和替换](./find-and-replace.md) 8 | * [代码段](./snippets.md) 9 | * [自动补全](./autocomplete.md) 10 | * [折叠](./folding.md) 11 | * [面板](./panes.md) 12 | * [语法](./grammar.md) 13 | * [在 Atom 中写作](./writing-in-atom.md) 14 | -------------------------------------------------------------------------------- /chapter-2-using-atom/atom-packages.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Atom 中的包 4 | 5 | 首先,让我们从 Atom 的包系统开始讲起。像我们前面提到过的那样,Atom 自己只是一个非常基本的功能核心,它上面承载了许多有用的包,这些包添加新的功能,比如 [树视图](https://github.com/atom/tree-view) 和 [设置视图](https://github.com/atom/settings-view)。 6 | 7 | 实际上,Atom 默认自带的所有的功能由超过 90 个包提供。例如,你在首次启动 Atom 时看到的 [欢迎界面](https://github.com/atom/welcome),[拼写检查工具](https://github.com/atom/spell-check),[主题](https://github.com/atom/one-dark-ui) 和 [模糊查找工具](https://github.com/atom/fuzzy-finder) 都是独立维护的包,它们的代码里使用的 API 你也可以访问。关于这些 API 的更多细节在第三章中。 8 | 9 | 这意味着所有包都可以变得非常强大,它们可以改变任何东西,从整体界面的外观和感觉,到核心功能的底层操作。 10 | 11 | 要安装一个新的包,你可以使用已经你非常熟悉的设置视图中的 `Install` 选项卡。打开设置视图(`cmd-,`),点击 `Install` 选项卡,然后在 `Install Packages` 下面提示 `Search Packages` 的地方输入你要查找的东西。 12 | 13 | 在那个界面列出来的是已经发布到 的包,它是 Atom 包的官方登记处(registry)。在设置视图中进行搜索操作,Atom 会在包登记处搜索并返回所有匹配你搜索的内容。 14 | 15 | ![](./images/packages-install.png) 16 | 17 | 要安装一个包你要做的就是点击 `Install` 按钮。点击之后会下载并安装相应的包,然后你的编辑器就拥有那个包提供的功能了。 18 | 19 | ## 包的设置 20 | 21 | 在 Atom 安装了一个包之后,那个包会出现在设置视图的 `Packages` 选项卡里,与 Atom 预安装的所有包列在一起。如果想找到其中某个包,可以在 `Install Packages` 标题下方的搜索框里输入关键词来过滤包列表。 22 | 23 | ![](./images/package-specific-settings.png) 24 | 25 | 点击一个包的 `Settings` 按钮会弹出这个包特定的设置窗口。在这个窗口里可以查看此包所有的快捷键,可以暂时禁用它,查看它的源码,查看当前版本,报告问题以及卸载它。 26 | 27 | 如果已安装的任何包有新的版本发布,Atom 会自动检测到。你可以从包特定的设置窗口,或者设置面板里的 `Update` 选项卡来升级这个包。这能帮助你保持所有已安装的包都是最新的。 28 | 29 | ## Atom 的主题 30 | 31 | 你也可以在设置视图中,为 Atom 寻找并安装新的 UI 主题或者语法高亮主题。你可以在 `Install` 选项卡中像搜索新的包那样搜索新的主题。确保你选中了搜索框旁边的 `Themes` 开关。 32 | 33 | ![](./images/themes.png) 34 | 35 | 点击主题的标题会弹出它在 atom.io 上的简介页面,通常会有主题的截图,可以让你在安装前先看看它是什么样子。 36 | 37 | 点击 `Install` 按钮会安装该主题,并且在 `Theme` 下拉框中列出来。我们在第一章的「Atom 基础」里的更改主题一段里看到过 `Theme` 下拉框。 38 | 39 | ![](./images/unity-theme.png) 40 | 41 | ## 命令行 42 | 43 | 你也可以在命令行中通过 `apm` 安装主题包。 44 | 45 | > 可以在控制台运行如下命令来检查你是否安装了 `apm`: 46 | > 47 | > ``` 48 | > $ apm help install 49 | > ``` 50 | > 51 | > 正常应该看到 `apm install` 命令的详细信息打印出来。 52 | > 53 | > 如果没有的话,参考 [安装 Atom](../chapter-1-getting-started/installing-atom.md) 一节里给你的系统安装 `apm` 和 `atom` 命令的相关说明。 54 | 55 | 你也可以使用 `apm install` 命令安装 packages: 56 | 57 | + `apm install ` 会安装最新版本。 58 | + `apm install @` 会安装指定版本。 59 | 60 | 比如,`apm install emmet@0.1.5` 会安装 [Emmet](https://github.com/atom/emmet) 包的 0.1.5 发行版。 61 | 62 | 你也可以使用 `apm` 来搜索新的包并安装。运行 `apm search` 命令可以在包登记处(package registry)搜索想找的包。 63 | 64 | ``` 65 | $ apm search coffee 66 | Search Results For 'coffee' (5) 67 | ├── coffee-trace Add smart trace statements to coffee files with one keypress each. (77 downloads, 3 stars) 68 | ├── coffee-navigator Code navigation panel for Coffee Script (557 downloads, 8 stars) 69 | ├── atom-compile-coffee This Atom.io Package compiles .coffee Files on save to .js files. (myJavascript.coffee -> myJavascript.js) (349 downloads, 4 stars) 70 | ├── coffee-lint CoffeeScript linter (3336 downloads, 18 stars) 71 | └── git-grep `git grep` in atom editor (1224 downloads, 9 stars) 72 | ``` 73 | 74 | 使用 `apm view` 可以查看指定包的详细信息。 75 | 76 | ``` 77 | $ apm view git-grep 78 | git-grep 79 | ├── 0.7.0 80 | ├── git://github.com/mizchi/atom-git-grep 81 | ├── `git grep` in atom editor 82 | ├── 1224 downloads 83 | └── 9 stars 84 | 85 | Run `apm install git-grep` to install this package. 86 | ``` 87 | -------------------------------------------------------------------------------- /chapter-2-using-atom/atom-selections.md: -------------------------------------------------------------------------------- 1 | # Atom 文本选择 2 | 3 | Atom 支持了很多文本选择操作,比如区域删除、缩进和一些查找操作,以及用引号或者括号把文字括起来之类的标记操作。 4 | 5 | 选择命令借鉴了很多移动命令。它们实际上与移动命令具有相同的快捷键,只不过加了个 `shift` 。 6 | 7 | `ctrl-shift-P`:选择从当前位置到上一行的相同位置之间的内容 8 | 9 | `ctrl-shift-N`:选择从当前位置到下一行的相同位置之间的内容 10 | 11 | `ctrl-shift-B`:选择前一个字符 12 | 13 | `ctrl-shift-F`:选择后一个字符 14 | 15 | `alt-shift-B`,`alt-shift-left`:选择从当前位置到单词开头之间的内容 16 | 17 | `alt-shift-F`,`alt-shift-right`:选择从当前位置到单词末尾之间的内容 18 | 19 | `ctrl-shift-E`,`cmd-shift-right`:选择从当前位置到本行末尾之间的内容 20 | 21 | `ctrl-shift-A`,`cmd-shift-left`:选择从当前位置到本行开头之间的内容 22 | 23 | `cmd-shift-up`:选择从当前位置到文件开头之间的内容 24 | 25 | `cmd-shift-down`:选择从当前位置到文件底部之间的内容 26 | 27 | 除了通过移动光标来进行选择之外,还有一些方便选择内容的特定区域的命令。 28 | 29 | `cmd-A`:选择整个缓冲区 30 | 31 | `cmd-L`:选择整行 32 | 33 | `ctrl-shift-W`:选择当前单词 34 | -------------------------------------------------------------------------------- /chapter-2-using-atom/autocomplete.md: -------------------------------------------------------------------------------- 1 | # 自动补全 2 | 3 | 如果你还想节约一些打字时间,Atom 自带简单的自动补全功能。 4 | 5 | 按下 `ctrl-space`,自动补全工具可以展示并插入可选的完整单词。 6 | 7 | ![autocomplete](./images/autocomplete.png) 8 | 9 | 图 1. 自动补全菜单 10 | 11 | 自动补全工具默认会在当前打开的文档里匹配你正在输入的单词。 12 | 13 | 如果你想要更多的补全选项,在 autocomplete-plus 包的 Settings 面板里有开关,控制自动补全工具是在所有打开的缓冲区,还是只在当前文件里匹配单词。 14 | 15 | 自动补全功能在 [atom/autocomplete-plus](https://github.com/atom/autocomplete-plus) 这个 package 里实现。 16 | -------------------------------------------------------------------------------- /chapter-2-using-atom/editing-and-deleting-text.md: -------------------------------------------------------------------------------- 1 | # 编辑和删除文本 2 | 3 | 至此我们已经学习了很多在文件中移动和选择区域的方法,那么让我们来实际修改一些文本吧!虽然你可以通过打字来插入字符,但是还有很多用于删除和处理文本的方法你可能会用得上。 4 | 5 | ## 基本操作 6 | 7 | 有一些简便易用的很酷的快捷键可以用来进行基本文本操作,它们可以在文本行之间移动,复制文本行,还可以改变字母大小写。 8 | 9 | `ctrl-T`:字符变换。交换光标两侧的字符 10 | 11 | `cmd-J`:将下一行拼接到当前行的末尾 12 | 13 | `ctrl-cmd-up`,`ctrl-cmd-down`:上移或下移当前行 14 | 15 | `cmd-shift-D`:复制当前行 16 | 17 | `cmd-K`,`cmd-U`:将当前单词转换为大写字母 18 | 19 | `cmd-K`,`cmd-L`:将当前单词转为小写字母 20 | 21 | Atom 还内置了一个对段落进行重新排版的功能,当一行的长度超出了最大硬换行( hard-wrap )长度时,你可以使用 cmd-alt-Q 来对当前选中区域进行排版,使其每一行的长度不超过 80 个字符(你可以在 editor.preferredLineLength 中修改这个默认值)。如果没有选中任何文本,则当前的段落会被重排。 22 | 23 | ## 删除和剪切 24 | 25 | 你也可以用一些快捷键从缓冲区中删除和剪切文本。不要手下留情。 26 | 27 | `ctrl-shift-K`:删除当前行 28 | 29 | `cmd-delete`:删除从当前位置到本行末尾的内容(在 MAC 中为 `cmd-fn-backspace` ) 30 | 31 | `ctrl-K`:剪切从当前位置到本行末尾的内容 32 | 33 | `cmd-backspace`:删除从当前位置到本行开头的内容 34 | 35 | `alt-backspace`,`alt-H`:删除从当前位置到单词开头的内容 36 | 37 | `alt-delete`,`alt-D`:删除从当前位置到单词末尾的内容 38 | 39 | ## 多光标选择 40 | 41 | Atom 能做到一件很酷的事,就是多光标支持。这在处理一列很长的文本时会特别好用。 42 | 43 | `cmd-click`:添加新的光标 44 | 45 | `cmd-shift-L`:将多行选择转换为多光标 46 | 47 | `ctrl-shift-up`,`ctrl-shift-down`:在当前光标上方或者下方加入一个新光标 48 | 49 | `cmd-D`:选择文档中与当前选中单词相同的下一个单词 50 | 51 | `ctrl-cmd-G`:选择文档中与当前选中单词相同的所有单词 52 | 53 | 用这些命令你可以在你的文档的多个位置放置光标,并且高效地一次性在多个位置执行相同命令。 54 | 55 | ![使用多光标](./images/multiple-cursors.gif) 56 | 57 | 图 1. 使用多光标 58 | 59 | 这种方法在诸如重命名变量或者修改文本格式这类重复任务的时候很有帮助。你可以借助几乎任何插件或命令来使用它——比如转换字母大小写,以及移动或复制文本行。 60 | 61 | 你也可以在按下 `Command` 键的同时使用鼠标一次性选中你的文本中的多个区域。 62 | 63 | ## 空白字符 64 | 65 | Atom 自带了一些命令来帮助你管理你的文档中的空白字符。一对非常有用的命令是把前导空格转换为制表符(Tab),以及把前导制表符转换为空格。如果你的文档中混用了多种空白字符,这些命令会对文档的标准化有巨大帮助。空白字符命令没有快捷键,所以你只能在命令面板中寻找“ Convert Spaces to Tabs (将空格转换为制表符)”(或者相反),并且选取一个命令来执行。 66 | 67 | 空白字符命令在 [atom/whitespace](https://github.com/atom/whitespace) 包中实现。空白字符命令的设置,在 `whitespace` 包的页面中提供。 68 | 69 | ![whitespace settings](./images/whitespace.png) 70 | 71 | 图 2. 管理你的空白字符设置 72 | 73 | 要注意的是“ Remove Trailing Whitespace (移除末尾空白字符)”选项是默认开启的。这意味着每当你在 Atom 中保存文件时, Atom 都会去掉文件末尾的空白字符。如果你想禁用这个选项,在你的设置面板中打开 `whitespace` 包的页面,取消勾选该选项。 74 | 75 | Atom 同时也默认确保你的文件的末尾有个空行,你也可以在上述位置禁用它。 76 | 77 | ## 括号 78 | 79 | Atom 自带对括号操作的智能简便的处理方式。 80 | 81 | 当你的光标覆盖 [] , () 和 {} 时, Atom 会默认高亮它们。匹配的 XML 和 HTML 标签也会高亮显示。 82 | 83 | Atom 也会自动完成 [] , () , {} , "" , '' , “” , ‘’ , «» , ‹› 和反引号。如果你在选择了一段文本的情况下输入一个左括号,Atom 会自动补上一个右括号来把这段文本包裹起来。 84 | 85 | 下面是另外一些有趣的括号相关命令,你可以使用它们。 86 | 87 | `ctrl-m`:跳转到光标临近的括号所匹配的括号。如果没有匹配的,就跳到最近的后括号。 88 | 89 | `ctrl-cmd-m`:选择当前括号中所有文本 90 | 91 | `alt-cmd-.`:闭合当前 XML/HTML 标签 92 | 93 | 括号功能在 [atom/bracket-matcher](https://github.com/atom/bracket-matcher) 包中实现。和所有这些包一样,想要修改括号操作相关的默认行为,或者直接禁用它,你可以浏览设置视图中这个包的页面。 94 | 95 | ## 文件编码 96 | 97 | 如果你发现你正在处理非 `UTF-8` 编码的文件时,或者你打算创建这样的文件,你会发现 Atom 还自带一些基本的文件编码支持。 98 | 99 | `ctrl-shift-U`:激活文件编码菜单 100 | 101 | 如果你打开文件编码菜单,你可以选择一种编码来保存你的文件。 102 | 103 | 当你打开一个文件,Atom 将会自动检测文件编码。如果 Atom 无法识别,文件编码将会默认设置为 UTF-8 ,之后新建的文件也将应用此默认值。 104 | 105 | ![file encodings](./images/encodings.png) 106 | 107 | 图 3. 修改文件编码 108 | 109 | 如果你打开编码菜单并将当前文件的编码修改为其他编码,当你下次保存该文件的时候,该文件将以此编码来输出。 110 | 111 | 编码选择器在 [atom/encoding-selector](https://github.com/atom/encoding-selector) 包中实现。 112 | -------------------------------------------------------------------------------- /chapter-2-using-atom/find-and-replace.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 查找和替换 4 | 5 | 在 Atom 里能非常方便快捷地在文件或者项目范围内进行文本查找和替换。 6 | 7 | `cmd-F`:在缓冲区中查找 8 | 9 | `cmd-shift-f`:在整个项目中查找 10 | 11 | 如果执行了上面某一个命令,在屏幕的底部会出现一个 `Find and Replace` 面板。 12 | 13 | ![Find and replace text in the current file](./images/find-replace-file.png) 14 | 15 | 图 1. 在当前文件查找和替换 16 | 17 | 按下 `cmd-F` 并输入字符串可以在当前文件中查找,多次按下回车(或 `cmd-G`,或者 `Find Next` 按钮)能循环查找当前文件中的匹配内容。`Find and Replace` 面板里提供了选项,可以设置大小写敏感,正则表达式匹配和区域搜索等。 18 | 19 | 在 `Replace in current buffer` 文本框中输入字符串,可以将匹配到的结果替换成另一个字符串。例如,如果你想要把所有的 `Scott` 都替换成 `Dragon` ,你可以把它们填到两个文本框中,然后点击 `Replace All` 按钮。 20 | 21 | 在按下 `cmd-shift-F` 弹出的面板里,可以对整个项目范围内进行查找和替换。 22 | 23 | ![Find and replace text in your project](./images/find-replace-project.png) 24 | 25 | 图 2. 在项目范围内查找和替换 26 | 27 | 这是一个很好的功能,可以用于找到项目里某个函数的所有调用,所有连接某个锚文本的地方,或者某个错误拼写的所有位置。点击查找结果列表里的某一行可以跳转到对应的位置。 28 | 29 | 在 `File/Directory pattern` 文本框中输入 [glob pattern](http://en.wikipedia.org/wiki/Glob_%28programming%29) (*译者注:通配符*),能把搜索范围限制在项目全部文件的某个子集。在打开了多个项目文件夹时,这个功能还可以用于在其中一个文件夹中查找。例如,你打开了 `/path1/folder1` 和 `/path2/folder2`,你可以输入一个以 `folder1` 开头的通配符,只在第一个文件夹中查找。 30 | 31 | 当焦点在 `Find and Replace` 面板上的时候,按 `escape` 键可以隐藏它。 32 | 33 | 查找和替换功能在 [atom/find-and-replace](https://github.com/atom/find-and-replace) 这个 package 中实现,并且使用了 [atom/scandal](https://github.com/atom/scandal) 这个 package 执行实际的查找。 34 | -------------------------------------------------------------------------------- /chapter-2-using-atom/folding.md: -------------------------------------------------------------------------------- 1 | # 折叠 2 | 3 | 如果仅仅希望看到你所处理的代码文件的结构概览,折叠会是个非常有用的工具。折叠可以隐藏像函数和循环这样的代码块,来简化你屏幕上显示的东西。 4 | 5 | 把鼠标移到数字栏上,点击显示的箭头来折叠代码段,也可以使用快捷键组 `alt-cmd-[` 和 `alt-cmd-]` 来折叠和展开代码段。 6 | 7 | ![folding code](./images/folding.png) 8 | 9 | 图 1. 折叠和展开代码段 10 | 11 | 使用 `alt-cmd-shift-{` 和 `alt-cmd-shift-}` 键组来折叠和展开所有代码段,使用 `cmd-k cmd-N` 来指定折叠的缩进级别,其中 N 是缩进深度。 12 | 13 | 选中你想折叠的代码或文本块,通过按下 `ctrl-alt-cmd-F`,或者在命令面板中选择 `Fold Selection`,可以折叠起代码或文本的任意一部分。 14 | -------------------------------------------------------------------------------- /chapter-2-using-atom/grammar.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 语法 4 | 5 | 一个缓冲区的“语法”,是 Atom 所认为的文件内容的语言,可能是 Java 或者 Markdown(或者其它的),我们在 Snippets 一节中创建代码段的时候已经见识过这一点了。 6 | 7 | 加载了一个文件以后,Atom 会做一些事情来试图识别出文件的类型。大部分情况下,Atom 会通过文件的扩展名(`.md` 通常是一个 Markdown 文件,等等)来完成这项工作,但有时只通过扩展名难以判断,它会对文件内容进行一些检查来确定。 8 | 9 | 如果加载了一个 Atom 无法判断语法的文件,它会默认为是最简单的纯文本类型(Plain Text)。如果它把文件默认为纯文本,或者弄错了文件类型,再或者由于一些原因你想修改文件的当前作用语法,可以按下 `ctrl-shift-L` 调出语法选择器。 10 | 11 | ![](./images/grammar.png) 12 | 13 | 一旦手动修改了一个文件的语法,Atom 会记住它,除非你将语法设置回自动检测,或者手动选择一个不同的语法。 14 | 15 | 语法选择器的功能在 [atom/grammar-selector](https://github.com/atom/grammar-selector) 这个 package 里实现。 16 | -------------------------------------------------------------------------------- /chapter-2-using-atom/images/autocomplete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/autocomplete.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/bookmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/bookmarks.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/encodings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/encodings.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/find-replace-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/find-replace-file.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/find-replace-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/find-replace-project.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/folding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/folding.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/goto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/goto.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/grammar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/grammar.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/multiple-cursors.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/multiple-cursors.gif -------------------------------------------------------------------------------- /chapter-2-using-atom/images/package-specific-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/package-specific-settings.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/packages-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/packages-install.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/panes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/panes.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/preview.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/snippet-scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/snippet-scope.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/snippets-see-snippets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/snippets-see-snippets.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/spellcheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/spellcheck.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/symbol.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/themes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/themes.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/unity-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/unity-theme.png -------------------------------------------------------------------------------- /chapter-2-using-atom/images/whitespace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/atom-china/manual/f7dda8504a114f9f22b80b5b539e694010dea992/chapter-2-using-atom/images/whitespace.png -------------------------------------------------------------------------------- /chapter-2-using-atom/moving-in-atom.md: -------------------------------------------------------------------------------- 1 | # 在 Atom 里移动 2 | 3 | 虽然使用鼠标和方向键在 Atom 里移动已经足够简单,但 Atom 还额外提供了一些快捷键,能让你的手不用离开键盘,更快地在文档中导航。 4 | 5 | 首先,Atom 复用了许多 Emacs 快捷键用于在文档中导航。比如你可以使用 `ctrl-P` 和 `ctrl-N` 来将光标上移或下移一个字符,使用 `ctrl-B` 和 `ctrl-F` 将光标左移或右移一个字符。这和使用方向键的效果是一样的,很适合那些不喜欢把手移到方向键位置的人。 6 | 7 | 除了以单个字符为单位的移动,还有许多其它用于移动的快捷键。 8 | 9 | `alt-B`,`alt-left`:移到词首 10 | 11 | `alt-F`,`alt-right`:移到词尾 12 | 13 | `cmd-right`,`ctrl-E`:移到行尾 14 | 15 | `cmd-left`,`ctrl-A`:移到行首 16 | 17 | `cmd-up`:移到文件开头 18 | 19 | `cmd-down`:移到文件末尾 20 | 21 | 你也可以使用 `ctrl-G` 直接移动到某一行(和列),按 `ctrl-G` 后会弹出一个对话框询问你想跳转到哪一行,这时也可以输入 `row:column` 来跳到那一行的某个字符。 22 | 23 | ![Go directly to a line](./images/goto.png) 24 | 25 | 图 1. 直接跳到某一行 26 | 27 | ## 通过符号(Symbols)导航 28 | 29 | 你也可以通过其它信息来跳转。可以使用 `cmd-r` 来跳转到方法定义之类的符号,按键之后会在 Atom 里打开一个包含当前文件中所有符号的列表,可以根据符号进行模糊查找,`cmd-t` 与此类似,能对项目里的文件名进行模糊查找。如果想在整个项目范围内查找符号,可以使用 `cmd-shift-r`。 30 | 31 | ![Search by symbol across your project](./images/symbol.png) 32 | 33 | 图 2. 在项目范围内查找符号 34 | 35 | 你还可以使用 `ctrl-alt-down` 直接跳转到光标下的方法或函数的声明。 36 | 37 | 当然首先你需要确保已经为你的项目生成了 `tags`(或者 `TAGS`)文件。`tags` 文件是通过 [ctags](http://ctags.sourceforge.net/) 生成的,安装 ctags,在项目的根目录运行 `ctags -R src/` 即可。 38 | 39 | 如果你在 Mac 下并且使用 [Homebrew](http://brew.sh/),可以运行 `brew install ctags` 来安装 ctags。 40 | 41 | 你可以在 home 目录下创建一个 `.ctags` 文件(`~/.ctags`)来自定义生成 tags 文件的规则。在 [这个链接](https://github.com/atom/symbols-view/blob/master/lib/ctags-config) 能看到 `.ctags` 文件示例。 42 | 43 | 通过符号导航的功能是在 [atom/symbols-view](https://github.com/atom/symbols-view) 这个 package 里实现的。 44 | 45 | ## Atom 书签 46 | 47 | Atom 还有一个非常棒的功能,就是可以给一些指定的行添加书签,然后就能快速地跳转到这些书签所在的位置。 48 | 49 | 可以按 `cmd-F2` 给当前行添加书签,再按一次是取消书签。你可以给项目里多个重要位置设置书签,然后使用它们来快速查找和跳转到这些地方。添加书签后,在行号后面会出现一个小的书签标记,效果见下面图中第 22 行。 50 | 51 | 按 `F2` 会跳转到当前文件里的下一个书签,按 `shift-F2` 会跳转到上一个书签。 52 | 53 | 按 `ctrl-F2` 会列出项目里的所有书签,然后就能快速地筛选并跳转到它们中的某一个。 54 | 55 | ![](./images/bookmarks.png) 56 | 57 | 图 3. 查看和筛选书签 58 | 59 | 书签功能是在 [atom/bookmarks](https://github.com/atom/bookmarks) 这个 package 里实现。 60 | -------------------------------------------------------------------------------- /chapter-2-using-atom/panes.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # 面板 # 5 | 6 | 你可以通过使用 `Cmd+K` `上下左右` 快捷键(译者注:按住 `Cmd+K` 之后,松开键盘,再按上下左右方向键)来横向或者纵向分割编辑器的面板,其中箭头的方向就是要分割的方向。面板被分割后,你可以使用 `Cmd+K` `Cmd+上下左右` 快捷键在它们之间移动焦点,其中方向键的指向就是焦点要移动的方向。 7 | 8 | ![](images/panes.png) 9 | 10 | 每个面板都有自己的“面板项”,它们由标签来表示。你可以通过鼠标拖拽对应文件的标签在面板之间来回移动该文件,并把它放到想要放的面板中。 11 | 12 | > 如果你不喜欢使用标签,也可以不使用。可以禁用 [tabs package](https://github.com/atom/tabs) ,这样每个面板将仍然支持多面板项,只是你就没有标签来用于点击切换面板项了。 13 | 14 | 要关闭面板时,可以使用 `Cmd+W` 来关闭面板项(译者注:按一次 `Cmd+W` ,可以关闭一个面板项,关闭全部的面板项可以多按几次 `Cmd+W` )。在设置面板的 Core Settings 里的 `Remove Empty Panes` 选项可以配置当面板为空(最后一个面板项被关闭)时是否自动关闭面板。 15 | -------------------------------------------------------------------------------- /chapter-2-using-atom/snippets.md: -------------------------------------------------------------------------------- 1 | # 代码段 # 2 | 3 | 代码段是用来快速生成常用的代码语法的一个强大和快捷的方式。 4 | 5 | 其工作思路是,输入 `habtm` 这样的东西,按下回车键 `Tab`,就会扩展为 `has_and_belongs_to_many`。 6 | 7 | 许多包自带它们自己特定的代码段。比如,为 HTML 高亮和语法提供支持的 `language-html` 包,提供了许多代码段,来创建可能想要的各种 HTML 标签。如果你在 Atom 中创建一个新的 HTML 文件,可以输入`html` 然后按下 `Tab`,它会扩展为: 8 | 9 | ```html 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ``` 19 | 20 | 同时它会把光标定位在 `title` 标签的中间,以便你可以立即开始填充这个标签。许多代码段具有多个焦点位置,通过按下 `Tab` 在他们之间切换 —— 比如,在上例 HTML 代码段之中,当填充完标题标签之后,可以按下 `Tab` 键,然后光标就会移动到 `body` 标签之间。 21 | 22 | 要查看当前打开文件拥有的所有可用代码段,你可以按下 `Alt+Shift+S`。 23 | 24 | ![see all the available snippets](./images/snippets-see-snippets.png) 25 | 26 | 图 1. 查看当前文件可用代码段 27 | 28 | 在选择输入框中输入内容,可以使用模糊搜索过滤这个列表。选择列表中一个之后生成相应代码段,在光标(或多重光标)所在位置插入代码。 29 | 30 | ## 创建你自己的代码段 ## 31 | 32 | 所以说这样太爽了。但是,如果想使用语言包中没有,或者编写代码中自定义的东西,又要怎么做呢?很幸运的是,你可以非常便利地添加自己的代码段。 33 | 34 | `~\.atom` 目录下的 `snippets.cson` 文本文件,存放了所有自定义的代码段,它们会在 Atom 运行时加载。通过 `File > Snippets` 菜单,打开这个文件。 35 | 36 | ### 代码段的格式 ### 37 | 38 | 现在让我们看一看如何编写代码段,基本的代码段格式如下所示: 39 | 40 | ```coffeescript 41 | '.source.js': 42 | 'console.log': 43 | 'prefix': 'log' 44 | 'body': 'console.log(${1:"crash"});$2' 45 | ``` 46 | 47 | 最顶层的键是选择器,即指定加载代码段的范围。获知此择器是什么值最简单的方法,是访问你想要添加代码段的语言的语言包,并找到 `Scope` 字符串。 48 | 49 | 例如,想要添加在 Java 文件中工作的代码段,应该先在 `Settings` 视图中寻找 `language-java` 包,可以看到 Scope 是 `source.java`,因此代码段最顶层的键就应该是它前面加上一个点(就像 CSS 选择器那样)。 50 | 51 | ![snippet scope](./images/snippet-scope.png) 52 | 53 | 图 2. Java 文件中的 Scope 54 | 55 | 下一层的键是代码段的名字,用于在代码段菜单中,以一个更具可读性的方式来描述代码段。可以将代码段命名为任何想要的名字。 56 | 57 | 在每个代码段的名字下面, `prefix` 用于触发代码段,`body` 是代码段被触发后插入的主体 。 58 | 59 | 每个后面带有数字的 `$` 是 Tab 的驻留位置。一旦代码段被触发,通过按下 `Tab` 键来遍历它们。具有相同数字的 Tab 停止位置将会创建多个光标。 60 | 61 | 上面的例子向 Javascript 文件添加了 `log` 代码段,它会被扩展为: 62 | 63 | ```coffeescript 64 | console.log("crash"); 65 | ``` 66 | 67 | 其中的 `crash` 字符串会在开始时被选中,再次按下 `Tab` 键之后,光标会移动到分号之后。 68 | 69 | >并不像 CSS 选择器,代码段的键每层只能重复一次。如果某一层有重复的键,只有最后的那个会被读到,详见[配置 CSON](http://flight-manual.atom.io/using-atom/sections/basic-customization/#configuring-with-cson)。 70 | 71 | ### 多行代码段主体 ### 72 | 73 | 可以使用 [CoffeeScript 多行语法](http://coffeescript.org/#strings)的 `"""` 来创建长模板。 74 | 75 | ```coffeescript 76 | '.source.js': 77 | 'if, else if, else': 78 | 'prefix': 'ieie' 79 | 'body': """ 80 | if (${1:true}) { 81 | $2 82 | } else if (${3:false}) { 83 | $4 84 | } else { 85 | $5 86 | } 87 | """ 88 | ``` 89 | 90 | 如你所料,存在一个可创建代码段的代码段。如果你打开一个代码段文件,输入 `snip` 之后按下 `Tab`,会将以下内容插入到文件中: 91 | 92 | ```coffeescript 93 | '.source.js': 94 | 'Snippet Name': 95 | 'prefix': 'hello' 96 | 'body': 'Hello World!' 97 | ``` 98 | 99 | 这样就有了你自定义的代码段。只要保存了文件,Atom 就会重新加载它,你也就能立即使用它了。 100 | 101 | 代码段功能在 [atom/snippets](https://github.com/atom/snippets) 包中实现。 102 | 103 | 更多代码段的例子请见 [language-html](https://github.com/atom/language-html/blob/master/snippets/language-html.cson) 和 [language-javascript](https://github.com/atom/language-javascript/blob/master/snippets/language-javascript.cson) 包。 104 | -------------------------------------------------------------------------------- /chapter-2-using-atom/writing-in-atom.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # 在 Atom 中写作 # 5 | 6 | 虽然 Atom 通常可能用来编写代码,其实它还可以用来高效地编写文章。这通常使用某种标记语言来完成,比如说 Asciidoc 和 [Markdown](https://help.github.com/articles/about-writing-and-formatting-on-github/) (也就是编写这个手册所用的语言)。下面我们来快速浏览一下 Atom 提供的用来写文章的一些工具。 7 | 8 | 在下面的文档里,我们将主要介绍如何使用 Markdown 进行写作;当然,像 Asciidoc 之类的标记语言也有 packages 实现类似的功能。 9 | 10 | ## 拼写检查 ## 11 | 12 | 如果你在处理文本(包括纯文本文件,Github Markdown 和默认的 Git 提交信息),Atom 会自动检查你的拼写。 13 | 14 | 任何拼写错误的单词都会高亮显示(默认在拼写错误的单词下方显示红色下划虚线),此时你可以按下 `Cmd+Shift+;` 就会弹出可能正确的菜单进行查看(译者注:将鼠标放在想要做拼写检查的地方,然后按下 `Cmd+Shift+;` 即可弹出拼写检查的菜单)(或者从右键快捷菜单,或 Command Palette 中选择“Correct Spelling”进行查看)。 15 | 16 | ![](images/spellcheck.png) 17 | 18 | 如果想要 Atom 对更多的文件类型进行拼写检查,可以在设置面板中打开 Spell Check package 的设置,然后添加任何你希望检查的语法。 19 | 20 | 默认会做拼写检查的语法有 `text.plain`, `source.gfm`, 和 `text.git-commit` ,但是你可以添加 `source.asciidoc` 的语法,如果你希望也检查这种类型的文件。 21 | 22 | 23 | 拼写检查功能在 [spell-check](https://github.com/atom/spell-check) package 中实现。 24 | 25 | ## 预览 ## 26 | 27 | 使用标记语言编写文章的时候,我们能够对内容渲染后的样式有所了解,这还是很有用的。Atom 中默认带有 Markdown 预览插件。 28 | 29 | - `Ctrl+Shift+M` -为 Markdown 预览模式的开关。 30 | 31 | ![](images/preview.png) 32 | 33 | 在你编辑文本时,预览会自动更新。这样你在输入时检查语法就变得相当容易了。 34 | 35 | 你也可以从预览面板中,复制渲染后的 HTML 到系统剪贴板中。这个操作没有任何快捷键,但是你可以在 Command Palette 中通过搜索“Markdown Preview Copy HTML”来找到它。 36 | 37 | Markdown 预览在 [markdown-preview](https://github.com/atom/markdown-preview) package 中实现。 38 | 39 | ## 代码段 ## 40 | 41 | 有很多好用的代码段是为快速编写 Markdown 准备的。 42 | 43 | 如果你输入 `img` 之后按下 `tab` ,你会得到像 `![]()` 这样的 Markdown 风格的嵌入图片代码。如果你输入 `table` 之后按下 `tab` ,你会得到一个非常棒的待填充的示例表格。 44 | 45 | ``` 46 | | Header One | Header Two | 47 | | :------------- | :------------- | 48 | | Item One | Item Two | 49 | ``` 50 | 51 | 虽然用于 Markdown 的代码段不多( `b` 粗体, `i` 斜体, `code` 代码块,等等),但它们会节省你用于寻找难懂的语法的时间。另外,你可以按下 `Alt+Shift+S`,来寻找当前文件类型可用的代码段列表。 52 | --------------------------------------------------------------------------------