• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    Go
  • License
    MIT License
  • Created about 10 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Terminal based code editor / development environment

GoEd

Goed is a code/text editor, somewhat inspired by Acme. It can run within a terminal or as a standalone lightweight gui.

CURRENT STATE: It's currently in ALPHA and has not been spread around much yet.

I use it as my day to day editor and it "works on my machine"(TM) It has not been tested much beyond that yet, there are many open bugs and TODO's.

Early screenshot (6/2/2015): Screenshot

Of course typically I have a much large window and resolution such as this screenshot.

Download binaries

You can download prebuilt standalone binaries from bintray here, built using release.sh.

Build from source

If you rather build yourself :

Prerequities:

  • Have Go(Golang) installed
  • Setup a good monospace terminal font and size (ie: Deja Vu Sans Mono or Monaco, size 10 or so.)
# Have your GOPATH set properly
go get -u github.com/tcolar/goed/cmd/goed

Running goed

Note : goed MUST be in your $PATH !!

which goed        # must be found in your path
goed <path(s)>

Quick start:

  • Use right click or Ctrl+N to open a dir/file.
  • Use CTRL+T to start a terminal view ($SHELL)
  • Use the mouse to resize / move / close views (See "UI" section bellow.)

Terminal use

In theory it should work with any terminal, however the level of support for things like mouse support or extended colors vary a lot.

Terminal - Linux

I recommend GnomeTerminal as it has the best support, but Konsole or Lxterminal should work as well.

Terminal - OSX

I highly recommend a real mouse(2+ buttons) and use ITerm2, do not bother wth Term.app as it has very poor eventing support.

For the best experience, use those ITerm2 settings:

  • Under preferences / pointer, disable "right click context menu".
  • Under preferences / profiles / default / terminal, set term type to "xterm-256color"
  • Under preferences / profiles / dfeault / text, set a nice TTF mono font (ie: 12pt Monaco)

Terminal frontends

The eventing support in terminals varies immensely, some don't support mouse events, some only support some CTRL, ALT sequences and almost none support any type of advanced chording.

For this reason there are alternative terminal frontends see cmd/ The default frontend is goed-tcell(terminal), but there are other implementations goed-termbox (terminal) and goed-wde (GUI) that can be built with build.sh.

For the GUI version, there is a builtin font (LiberationMono) but you can specify the path to a different one in ~/.goed/config.toml, just make sure it's monospace and TTF. ie: GuiFont="/Library/Fonts/Andale Mono.ttf"

Keyboard / Mouse shortcuts

Here are the standard key shortcuts, you can modify those to your liking, note however that terminals support a limited set, in particular on OSX, basically only CTRL combos work properly. Alt and Command combos are not reported by the termbox library used by Goed.

You may use goed --term-events to find out what events work in your given terminal.

You can customize the mouse/keyboard shortcuts in ~/.goed/bindings.toml Here are the standard mouse/keyboard bindings

UI Usage (Mouse)

Each "view" in the UI has a "handle" on the top left corner, either βœ” or βœ—, depending if the file is clean or dirty. The top of the view contains the view title "title bar". The left of the view contains the "scroll bar".

There is no real "drag and drop" because very few terminal support that properly, so it's more of a 2 steps operation "select then drop".

  • Moving a view: 1) click the handle of the view you want to move 2) click where you want to move it to, either somewhere on the top "title bar" to create a new column, or on an existing view "scroll bar" to move the view into that view's column.

  • Swapping views : Double click the "handle" of a view, whichever view was active at the time will swap position with this view.

  • Closing a view/column : Click the βœ• button on the view top right.

  • Opening a new view : Typically just open an existing file/folder by right clicking it's path. To create a new file the simplest is to open a terminal "Ctrl+T" and "open" the file. o /tmp/test.txt.

Terminal usage

Start a new Terminal with CTRL+T, it will be started in the same path as the current view.

The terminal implements basic vt100 support, enough for things such as top and interactive git to work.

Note that while in a terminal a limited number of global shortcuts are enabled.

Terminal actions

The Terminal provides a few builtin shortcuts, such as:

  • o <path> : To open a given path/location in goed (or just right click it)
  • s <pattern> [path] : Search text (grep -rni [path])
  • f <pattern> [path] : Find files (find -name pattern)
  • clear : can be used to fully reset a terminal content.
  • sz : Set the shell tty rows/cols to match the current goed view size (should happen automatically).

See res/default/actions for more info.

You may create your own actions in ~/.goed/ations/ (Work In progress)

See res/Readme.md.

Command bar

The command bar is at the top of the screen. you can toggle it by clicking it or using the key, think of it as a minimal one line terminal.

Currently it supports a few things:

  • o <path> : Opens a file or directory.
  • : <linenumber> : Goes to the secified line.
  • / <pattern> : Search pattern (grep)

Anything else will just be executed (via shell) into a new view.

Eventually this will allow for custom defined actions based on patterns.

Configuration

The config file can be edited at ~/.goed/config.toml (The original is under ~/.goed/default/)

Key/Mouse bindings can be customized at ~/.goed/bindings.toml (original under ~/.goed/default/bindings.toml)

You may create custom themes under ~/.goed/themes/ (originals under ~/.goed/default/themes/)

You may create/override actions under ~/.goed/actions/

Reporting issues

Report on github, try not to create duplicates.

If possible try to provide the most recent log found in ~/.goed/log/

Contributing

  • Reporting issues is welcome.
  • PR's are even better.
  • For new functionality a quick discussion first might be best.

More Repositories

1

authorize

Authorize.net Credit card authorization & capture API support for go / golang .
Go
15
star
2

fedex

Some Fedex API support for GoLang (Bare minimum for tracking lookup)
Go
11
star
3

convoy

Consul Envoy service discovery service
Go
10
star
4

ups

Ups XML Api's binding for Go (tracking)
Go
7
star
5

camembert

A Lightweight IDE & Code editor meant to work with many languages with inline lang documentation.
Fantom
5
star
6

longhorn

A custom split Ortho keyboard I built
OpenSCAD
5
star
7

fantomutils

Fantom utilities
Fantom
3
star
8

fantomide

A Standalone IDE for the Fantom language, based on the Netbeans RCP platform
Fantom
3
star
9

fantomidemodule

Netbeans plugin module to support the Fantom Language (Also used by standalone fantomide project)
Java
3
star
10

raspberrytart

Raspberry PI Front-end - Music and more
Python
2
star
11

camAxonPlugin

Axon plugin for camembert. Support for Skyspark Axon projects. Code editor, inline help, project sync to Skyspark.
Fantom
2
star
12

album

Album is a lightweight responsive photo gallery server written in Go.
JavaScript
2
star
13

gollections

Go
1
star
14

saptomcat

Utilities / code to run the SAP applications (B2B/B2C) on tomcat + H2 database (or MySql) for Java baskets support(optional).
Fantom
1
star
15

mail302

Some mail protocol implementation for Fantom (In progress), SMTP, IMAP etc ...
Fantom
1
star
16

graphics302

Basic in memory image creation manipulation in pure Fantom. (No AWT/SWT/whatever dependencies)
Fantom
1
star
17

berry4all

Software that allows tethering using a blackberry on Linux / Mac
C
1
star
18

netColarJar

Utility to create standalone Fantom applications as a single self executing Jar file.
Fantom
1
star
19

ukkonen

Some messing around with implementing Ukkonen trees in Fantom - incomplete
Fantom
1
star
20

gen-fps

Auto generated terrain Unity FPS
C#
1
star