Wide 用户指南

本贴最后更新于 2238 天前,其中的信息可能已经时移俗易

Wide

一款基于 Web 的 Go 语言 IDE




        

简介

Wide 是一款基于 Web 的 Go 语言 IDE

动机

目前较为流行的 Go IDE 都有一些缺陷或遗憾:

  • 文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂
  • 插件类(goclipse、IDEA 等):需要原 IDE 支持,不够专业
  • LiteIDE 界面不够 modern、goland 收费
  • 缺少网络分享、嵌入网站可运行功能

另外,Go IDE 很少,用 Go 本身开发的 IDE 更是没有,这是一次很好的尝试。关于产品定位的讨论请看这里

特性

基于 Web 的 IDE:

  • 只需要浏览器就能进行开发、运行
  • 跨平台,甚至在移动设备上
  • 易进行功能扩展
  • 易与其他系统集成
  • 极客体验

核心功能:

  • 代码高亮、折叠:Go/HTML/JavaScript/Markdown 等
  • 自动完成:Go/HTML 等
  • 编译检查:编辑器提示编译错误
  • 格式化:Go/HTML/JSON 等
  • 运行:支持同时运行多个程序
  • 代码导航:跳转到声明,查找使用,文件搜索等
  • Web 开发:前端(HTML/JS/CSS)开发支持
  • go tool:go mod/install/fmt 等
  • 项目文件导出
  • UI/编辑器多主题
  • 支持交叉编译

界面

主界面

Overview

跳转到文件

Goto File

自动完成

Autocomplete

主题

Theme

查看表达式

Show Expression Info

构建报错提示

Build Error Info

交叉编译

Cross-Compilation

Playground

Playground

架构

构建与运行

Build & Run

  • 一个浏览器 tab 对应一个 Wide 会话
  • 通过 WebSocket 进行程序执行输出推送
  1. 客户端浏览器发送 Build 请求
  2. 服务器使用 os/exec 执行 go build 命令

    2.1. 生成可执行文件
  3. 客户端浏览器发送 Run 请求
  4. 服务器使用 os/exec 执行文件

    4.1. 生成进程

    4.2. 运行结果输出到 WebSocket 通道
  5. 客户端浏览器监听 ws.onmessage 到消息后做展现

代码辅助

  • 自动完成
  • 查找使用
  1. 浏览器客户端发送代码辅助请求
  2. Handler 根据请求对应的 HTTP 会话获取用户工作空间
  3. 执行 gocode/ide_stub(gotools) 命令

    3.1. 设置环境变量(${GOPATH} 为用户工作空间路径)

    3.2. gocode 命令需要设置参数 lib-path

文档

社区

授权

Wide 使用 Apache License, Version 2 开源协议。

鸣谢


安装

前提

在安装 Wide 前需要搭建好 Go 开发环境:

  1. 下载并安装 Go (>=1.12)
  2. 确认环境变量 GOPATHGOROOT 已经配置正确

从源代码安装

  1. 下载 或通过 git clone https://github.com/88250/wide 获取源码
  2. 安装依赖:go get github.com/visualfc/gotools github.com/nsf/gocode
  3. 编译 Wide:go build

Go 格式化工具

默认是使用 gofmt 进行 Go 源码格式化的。如果要使用 goimports,需要做如下调整:

  1. 安装 goimports:go get -u github.com/bradfitz/goimports
  2. 在“偏好设定” -> “Go 工具” -> “Go 格式化”中选择 goimports

多用户

支持多个用户同时使用一个 Wide 服务器,每个用户有自己独立的源代码仓库,编码/运行/调式都是在自己的工作空间中进行,不会影响其他用户。

工作空间

Wide 的工作空间就是 Go 中的 workspaces,也就是 $GOPATH 指定的路径。

运行时

用户在运行程序时进程是跑在服务器上的,所以多用户同时运行程序时最常见的问题就是资源冲突(比如网络端口),目前这个问题只能靠用户自行规避。

编辑器

Tabs

  • 新打开一个文件会新开一个编辑器,最多可以打开 64 个编辑器
  • 焦点切换到编辑器(Ctrl+0)时,左边的文件树也会选中相关的文件
  • 在多个 tabs 之间切换快捷键:Ctrl+Tab
  • 关闭当前编辑器快捷键:Ctrl+W

文件保存

在下面几种情况发生时会保存编辑器内容:

  • 保存/格式化:将保存当前编辑器的内容
  • 构建 & 运行/go install:将保存所有打开的编辑器的内容
  • 自动完成/跳转到声明/查找使用:将保存当前编辑器的内容

我们基本可以认为在写代码时文件是_实时自动保存_的。

键盘快捷键

编辑器

  • Ctrl-\:自动补全
  • Ctrl-B:跳转到声明
  • Ctrl-I:查看表达式信息
  • Alt-F7:查找使用
  • Alt-Shift-F:格式化
  • Ctrl-L:跳转到行
  • Ctrl-E:删除当前行
  • Shift-Ctrl-Up:复制到上方
  • Shift-Ctrl-Down:复制到下方
  • Shift-Alt-Up:移动到上方
  • Shift-Alt-Down:移动到下方
  • Ctrl-S:保存当前编辑器文件
  • Shift-Ctrl-S:保存所有编辑器文件
  • Ctrl-Q:关闭当前编辑器
  • Shift-Alt-Enter:编辑器全屏
  • Shift-Tab:自动缩进
  • Ctrl-]:缩进
  • Ctrl-[:反缩进

搜索

  • Shift-Alt-O:打开文件
  • Ctrl-F:搜索/查找
  • Ctrl-G:查找下一个
  • Shift-Ctrl-G:查找上一个
  • Shift-Ctrl-F:替换
  • Shift-Ctrl-R:替换全部

焦点

  • Ctrl-D:切换编辑器/窗口组 tab
  • Ctrl-0:焦点切换到编辑器
  • Ctrl-1:焦点切换到文件树
  • Ctrl-4:焦点切换到输出窗口
  • Ctrl-5:焦点切换到搜索窗口
  • Ctrl-6:焦点切换到通知窗口

运行

  • F5:构建
  • F6:构建 & 运行
  • Alt-C:清空输出窗口

文件树

  • 上/下:选择
  • 左/右:收起/展开
  • Ctrl-R:重命名

国际化

目前 Wide 支持以下几种语言:

  • 简体中文(zh_CN
  • 繁体中文(zh_TW
  • 美式英语(en_US
  • 日语(ja_JP

默认为简体中文。可以在 wide.json 中的 Locale 项进行配置(用户的配置会覆盖全局的默认配置),配置完后需要重启。

FAQ

wide.json 是什么?

wide.json 是 Wide 的配置文件,路径是 conf/wide.json。Wide 的所有配置(例如服务 IP、端口、区域等)都是保存在这个文件中的。

如果 Wide 是个人使用,那么默认的配置应该可以很好的工作,不需要修改任何地方。

什么是工作空间?

工作空间是当前用户的 $GOPATH 路径,一个用户只能有一个工作空间。

Windows 上构建时出现“Access is denied”

需要“以管理员身份运行”。

文件树里的 Go API 目录是什么?

该目录是读取 $GOROOT/src 生成的,方便用户查看 Go API 源代码。 在该目录下是不允许新建、编辑、删除文件的。

为什么代码辅助功能(自动完成/跳转到声明等)失效了?

请确认正确安装了 gocode 和 gotools 工具。安装命令:

  • go get -u github.com/visualfc/gotools
  • go get -u github.com/nsf/gocode

如果安装不正确,Wide 会自动检查并通过通知窗口告知用户。另外,通知窗口还会告知用户一些其他重要信息,例如 IDE 版本更新提醒等。

  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 629 关注
  • 文档
    56 引用 • 1289 回帖 • 2 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1387 回帖 • 283 关注
11 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...