安装Atom

🔗Atom官网 下载对应版本,因为是个小水管,所以经常会遇到加载失败的问题,有点耐心就可以。

下载加速的几种手段

因为atom的release被存放在amazon上,而国内很难直接连上amazon域名,所以下载很慢甚至干脆失败。以下提供几种切实有效的加速下载方案。

  1. 科学上网(不推荐),可以查看这篇教程:Win10重装日记
  2. 使用代理下载服务,可以查看这篇教程:从github下载release速度过慢的解决方案
    访问atom作者的github

    找到Release,选择需要的版本,右键,复制链接

    然后使用🔗Free Download Manager的代下载服务。这一方法也适用于其他的从github上下载release的情况。
  3. 使用NDM插件,具体方法参考这篇教程:基于NDM和TamperMonkey脚本实现高速下载

可以预览一下我的配置效果:

安装Atom插件

在国内希望直接通过Atom自带的package安装插件几乎是天方夜谭,所以需要一点小小的技巧。此处提供两种思路:

  1. 修改atom插件仓库源为国内源。
  2. 使用node.js配合git,先从github上clone插件仓库,再使用npm install指令安装。

安装node.js和git

两种方法的前提都是需要安装node.js和git

  1. Node.js

    我下载的是目前最新的11.13.0版本。(建议选择左边的稳定版本,右边的最新版本可能会出现莫名bug)
    Node.js是基于Chrome的V8 JavaScript引擎构建的运行在服务端的JavaScript开发平台,知道这些就够了。
    反正作为一个包管理器,安装以后再也不用去打扰它的具体配置。默默运行就是了。

  2. git

    我下载的是2.21.0版本,可以选择安装版,也可以选择绿色版。
    不过绿色版需要加上Git_HOME%Git_HOME%\bin之类的,我就偷懒了,安装版一路默认安装即可。

打开终端,输入

sudo apt-get update #更新资源
sudo apt-get install nodejs # 安装nodejs
sudo apt-get install npm #安装npm
sudo apt-get install git #安装git
sudo nodejs -v #查看nodejs版本
sudo npm -v #查看npm版本
sudo git --version #查看git版本

安装插件

首先要说一下各自的优缺点

方案一方案二
优点换源只需要两行代码的操作。
且之后直接可以使用
Atom自带的插件仓库安装,操作简单。
安装速度很快。
而且绝对可行。
缺点速度不稳定,
取决于插件本身大小。
操作繁琐,需要找路径,
最少都需要三行代码。
还要从源仓库Clone

因为atom提供的使用apm install指令的安装方式依然是依赖于npm,基于这个思路,直接更换apm源为国内源,即可享受快速的插件安装体验。如果还是觉得慢,再去参考方案二也不迟。

apm config set strict-ssl false #关闭strict-ssl以后,就不用每次重新设置源
apm config set registry https://registry.npm.taobao.org #此处使用的是阿里的源

只需两行代码。之后就可以直接在Atom的插件市场里自由安装插件了。当然也可以使用apm install [packages]指令安装。
例如我要安装一个汉化插件,直接打开终端,输入以下指令:

apm install simplified-chinese-menu

不推荐继续使用此方式,不仅麻烦,且对小白不友好。可以作为方案1失败的备用方案,毕竟这个方案是百分百可行的。

因为是通过命令行安装,所以不管是windows系统linux系统,安装步骤都是一样的。这里我拿一个汉化包插件举例。

打开atom,在左上角找到File->Settings->Install

在搜索框里搜索我们要的插件
simplified-chinese-menu

不要按右边那个醒目的Install按钮,无限加载看一下午没什么意义。

点击进入介绍界面,找到他的git仓库网址tte

然后就到github了,把这个clone到atom的插件文件夹里

C:\Users\用户名\.atom\packages文件夹打开终端,输入

git clone https://github.com/chinakids/atom-simplified-chinese-menu.git
# 以下为我在码云仓库的镜像,国内源。
git clone https://gitee.com/akilar/atom-simplified-chinese-menu.git

等待git clone 完成,通过cd命令进入这个文件夹,然后使用npm命令安装

cd .\atom-simplified-chinese-menu\
npm install


npm install执行完毕后,重启一下atom就可以在Files->Settings->Packages里找到安装的插件了,启用以后就可以了。有些插件会有自定义配置,这个反正在他的介绍或者github主页里肯定会介绍的。我就不画蛇添足了。

Ubuntu安装方式类似,都是要先找到atom的packages文件夹在哪里。其他都差不多的。

插件推荐

感谢XiaoMouz反馈的问题:使用apm install安装时,可能遇到failed Request for package information failed: Not Found报错。
这其实是因为Atom插件仓库收录的插件名和插件的github源仓库名不一致造成的。这类问题多半出现在仓库名前面带atom-的插件上,去掉atom-即可。
这个问题的起因主要是插件开发者们会把同一个插件同时投在Atom插件库和VSCode插件库,为了方便区分就在各自的插件源仓库前面加上对应软件的前缀。

  1. Atom汉化包:simplified-chinese-menu
  2. 动态打字插件:activate-power-mode
  3. 代码自动排版插件:atom-beautify
  4. 图标美化插件:file-type-icons
  5. 代码小地图:minimap
  6. 取色器:color-picker
  7. 颜色显示插件:pigments
  8. 代码高亮插件:quick-highlight
  9. 合并冲突处理插件:merge-conflicts(最新版Atom的git diff插件已经集成该功能,无需再安装此插件)
  10. 代码校验插件:linter
  11. 代码补全插件:autocomplete-bibtex
  12. 图片粘贴插件:markdown-img-paste
  13. Atom终端插件:terminal-tab
    使用apm安装很大几率失败,可以参考方法二安装此插件,不过功能其实较为鸡肋,只是在atom里集成了一个Terminal窗口而已。
  14. Markdown增强组件:markdown-preview-enhanced
  15. 网页预览插件:atom-html-preview

    多端同步方案

    这个方法需要翻墙,游客止步。而且第一次使用依然需要按照上述教程的方式进行插件安装。之后才是通过它实现多端同步。
    Sync-settings插件的同步原理是通过插件生成配置文件,上传到gist,gist是github提供的一个代码片段存储手段,所以某种角度上也可以看做是生成了一个配置脚本。以下是具体的使用方式。
    首先按照老规矩先安装多端同步插件:Sync-settings
apm install sync-settings

安装完成后,打开Atom,找到插件的配置页,需要配置两个内容,分别是Personal Access TokenGist Id

  1. 打开自己的 github 创建一个 personal access token

    记住要勾选 gist 权限,见下图),

    然后复制生成的 token 序列粘贴到插件的Personal Access Token项内。Token只有生成的那次可见,如果忘记 了就只能重新生成了。
  2. 点击头像旁边的箭头,找到Your gists,创建一个gist


    gist id可以在网页URL上找到

    配置完成后就能在atom的工具栏里通过扩展->Syncchronize Settings进行操作,会上传你的插件以及快键键乃至布局配置到gist。

    如果要换设备的话,只需要按照sync-settings并且重新配置token和gist id即可。
    gist id与token没有关联关系,所以每次使用重新生成token也可以。

以下内容是基于方案二的安装插件方式,不推荐。

插件推荐

为了方便我直接贴github的网址了,免了打开atom搜索的部分,不用谢。

刚好学会了把github仓库存到码云上再来clone的方法来加速,添加了从我的码云仓库直接获取国内镜像的git clone指令,需要了解最新版本的依然可以访问原地址仓库。


git clone https://gitee.com/akilar/activate-power-mode.git

这是一个是代码动起来的插件,具体什么意思呢,代码删除时有一种早期红白机游戏机的特效,具体可以看插件介绍,我最初想要安装插件的动机就是这个特效。

git clone https://gitee.com/akilar/atom-beautify.git

用来整理代码的,不过对python之类对空格对齐都有要求的代码还请谨慎使用。整理代码的快捷键是Ctrl+Alt+B。


git clone https://gitee.com/akilar/file-type-icons.git

会替换不同类型的文件图标,效果还不错。md风格美美哒。

git clone https://gitee.com/akilar/minimap.git

类似于sublime的小地图,就是代码总览啦,蛮好看的,多个小窗口阅读的时候有点碍事的话可以在package里停用。

可能遇到的bug

我在安装atom-beautify遇到了报错,原因是未能找到相应依赖,那么我们直接用npm install -f指令强制它从远程拉取资源来修复依赖。

懒人福利

此脚本是基于上述方案二的安装方式,先clone仓库,再使用npm指令安装。不推荐。

虽然Atom有一款名叫sync-settings的插件可以实现插件多设备同步,但是sync-settings的同步依赖于github的gist服务,而这一服务很不幸的被墙了。 于是转而用脚本一键安装来实现重装方案。缺点是无法像sync-setting那样连配置也一并保留,每次安装都是默认配置。 使用方式为 1. 直接下载后放到`C:\Users\用户名\.atom`路径下。我会将最新的脚本添加到下载目录。建议直接使用下载版。
  1. C:\Users\用户名\.atom路径下,新建一个atomplugin.sh的文件,把以下代码复制进去

    #!/bin/sh
    echo "==========================================="
    echo " 欢迎使用Atom插件安装脚本!"
    echo "==========================================="
    AtomPath=$(cd "$(dirname "$0")"; pwd)
    cd ${AtomPath}
    printf "\033[32m Atom根目录:"${AtomPath}"\033[0m"
    # 这里的Atom根目录就是C:\Users\用户名\.atom
    echo " "
    echo "[0] 退出菜单"
    echo "[1] 安装Atom汉化包:atom-simplified-chinese-menu"
    echo "[2] 安装动态打字插件:activate-power-mode"
    echo "[3] 安装代码自动排版插件:atom-beautify"
    echo "[4] 安装图标美化插件:file-type-icons"
    echo "[5] 安装代码小地图:minimap"
    echo "[6] 安装取色器:color-picker"
    echo "[7] 安装颜色显示插件:atom-pigments"
    echo "[8] 安装代码高亮插件:atom-quick-highlight"
    echo "[9] 安装合并冲突处理插件:merge-conflicts"
    echo "[10] 安装代码校验插件:linter"
    echo "[11] 安装代码补全插件:autocomplete-bibtex"
    echo "[12] 安装图片粘贴插件:markdown-img-paste"
    echo "[13] 安装Atom终端插件:atom-terminal-tab"
    echo "[14] 安装Markdown增强组件:markdown-preview-enhanced"
    echo "[15] 安装多端同步插件:Sync-settings"
    echo " "
    printf "请选择需要的功能,默认选择[0]"
    echo " "
    printf "选择:"
    read answer
    # 选择1
    if [ "$answer" = "1" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取atom-simplified-chinese-menu\n"
    git clone https://gitee.com/akilar/activate-power-mode.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装atom-simplified-chinese-menu\n"
    cd ${AtomPath}/packages/activate-power-mode
    npm install
    printf "\033[32mINFO \033[0m atom-simplified-chinese-menu安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择2
    else
    if [ "$answer" = "2" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取activate-power-mode\n"
    git clone https://gitee.com/akilar/activate-power-mode.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装activate-power-mode\n"
    cd ${AtomPath}/packages/activate-power-mode
    npm install
    printf "\033[32mINFO \033[0m activate-power-mode安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择3
    else
    if [ "$answer" = "3" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取atom-beautify\n"
    git clone https://gitee.com/akilar/atom-beautify.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装atom-beautify\n"
    cd ${AtomPath}/packages\atom-beautify
    npm install -f
    # atom-beautify有点特殊,需要使用-f指令强制拉取远程依赖来安装。
    printf "\033[32mINFO \033[0m atom-beautify安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择4
    else
    if [ "$answer" = "4" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取file-type-icons\n"
    git clone https://gitee.com/akilar/file-type-icons.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装file-type-icons\n"
    cd ${AtomPath}/packages/file-type-icons
    npm install
    printf "\033[32mINFO \033[0m file-type-icons安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择5
    else
    if [ "$answer" = "5" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取minimap\n"
    git clone https://gitee.com/akilar/minimap.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装minimap\n"
    cd ${AtomPath}/packages/minimap
    npm install
    printf "\033[32mINFO \033[0m minimap安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择6
    else
    if [ "$answer" = "6" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取color-picker\n"
    git clone https://gitee.com/akilar/color-picker.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装color-picker\n"
    cd ${AtomPath}/packages/color-picker
    npm install
    printf "\033[32mINFO \033[0m color-picker安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择7
    else
    if [ "$answer" = "7" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取atom-pigments\n"
    git clone https://gitee.com/akilar/atom-pigments.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装atom-pigments\n"
    cd ${AtomPath}/packages/atom-pigments
    npm install
    printf "\033[32mINFO \033[0m atom-pigments安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择8
    else
    if [ "$answer" = "8" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取atom-quick-highlight\n"
    git clone https://gitee.com/akilar/atom-quick-highlight.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装atom-quick-highlight\n"
    cd ${AtomPath}/packages/atom-quick-highlight
    npm install
    printf "\033[32mINFO \033[0m atom-quick-highlight安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择9
    else
    if [ "$answer" = "9" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取merge-conflicts\n"
    git clone https://gitee.com/akilar/merge-conflicts.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装merge-conflicts\n"
    cd ${AtomPath}/packages/merge-conflicts
    npm install
    printf "\033[32mINFO \033[0m merge-conflicts安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择10
    else
    if [ "$answer" = "10" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取linter\n"
    git clone https://gitee.com/akilar/linter.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装linter\n"
    cd ${AtomPath}/packages/linter
    npm install
    printf "\033[32mINFO \033[0m linter安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择11
    else
    if [ "$answer" = "11" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取autocomplete-bibtex\n"
    git clone https://github.com/apcshields/autocomplete-bibtex.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装autocomplete-bibtex\n"
    cd ${AtomPath}/packages/autocomplete-bibtex
    npm install
    printf "\033[32mINFO \033[0m autocomplete-bibtex安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择12
    else
    if [ "$answer" = "12" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取markdown-img-paste\n"
    git clone https://gitee.com/akilar/markdown-img-paste.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装markdown-img-paste\n"
    cd ${AtomPath}/packages/markdown-img-paste
    npm install
    printf "\033[32mINFO \033[0m markdown-img-paste安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh


    # 选择13
    else
    if [ "$answer" = "13" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取atom-terminal-tab\n"
    git clone https://gitee.com/akilar/atom-terminal-tab.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装atom-terminal-tab\n"
    cd ${AtomPath}/packages/atom-terminal-tab
    npm install
    printf "\033[32mINFO \033[0m atom-terminal-tab安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择14
    else
    if [ "$answer" = "14" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取markdown-preview-enhanced\n"
    git clone https://gitee.com/akilar/markdown-preview-enhanced.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装markdown-preview-enhanced\n"
    cd ${AtomPath}/packages/markdown-preview-enhanced
    npm install
    printf "\033[32mINFO \033[0m markdown-preview-enhanced安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择15
    else
    if [ "$answer" = "15" ]; then
    cd ${AtomPath}/packages
    printf "\033[32mINFO \033[0m 正在从远程仓库拉取sync-settings\n"
    git clone https://gitee.com/akilar/sync-settings.git
    printf "\033[32mINFO \033[0m 拉取完毕,即将为您安装sync-settings\n"
    cd ${AtomPath}/packages/sync-settings
    npm install
    printf "\033[32mINFO \033[0m sync-settings安装完毕,请重启Atom应用更改\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 选择0,默认选择
    else
    if [ "$answer" = "0" ] || [ "$answer" = "" ]; then
    printf "\033[32mINFO \033[0m 欢迎下次光临!\n"
    sleep 1s
    exit 0
    else
    printf "\033[31mERROR \033[0m 输入错误,请返回重新选择...\n"
    sleep 1s
    exec ${AtomPath}/atomplugin.sh
    # 注意有几个选项就要有几个fi。
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi
    fi

    稍微研究一下,会发现每个选择项的代码是极其相似的,仅仅修改了插件的仓库源相关内容,有兴趣的小伙伴可以自定义编写常用插件到脚本内。
    如果遇到脚本安装卡住的问题,可以试着把脚本里的npm install指令替换成npm install -f,这个指令会从远程仓库拉取缺失的依赖项。