Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fast-ide/fast-ide

πŸ•ΊFast Integrated Development Environment 😻
https://github.com/fast-ide/fast-ide

brew cloud collaboration cool fast health ide modern neovim portable professional tmux toolbox vim zsh

Last synced: 3 days ago
JSON representation

πŸ•ΊFast Integrated Development Environment 😻

Awesome Lists containing this project

README

        

![ci_dockerfile](https://github.com/fast-ide/fast-ide/workflows/ci_dockerfile/badge.svg?branch=master)
[![Build Status](https://travis-ci.org/fast-ide/fast-ide.svg?branch=master)](https://travis-ci.org/fast-ide/fast-ide)
[![Gitter](https://img.shields.io/badge/chat-gitter-brightgreen.svg)](https://gitter.im/fast-ide/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Slack](https://img.shields.io/badge/workspace-slack-blue.svg)](https://fastide.slack.com)
![Platform](https://img.shields.io/badge/Platform-MacOS%20|%20Linux%20|%20Windows-blue.svg)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/fast-ide/fast-ide/blob/master/LICENSE)

We will be happy to treat everyone who helps us with coffee β˜• and more, send us a link to your account

on the [ko-fi](https://ko-fi.com) service in [gitter](https://gitter.im/fast-ide/community) and you can put a star ⭐ as a reminder for us

## Introduction

πŸ’¨ The **Fast IDE** you can only dream of β›…

> The developer needs three things:
> 1. Email
> 2. GitHub account
> 3. Ability to fast develop anywhere and on anything

For the third thing we created the **Fast IDE**

We believe that development tools should be available to everyone and therefore **free** of charge ✌️

We've taken tools that have been proven for decades and

added cool new features and integrated them into a single solution 🌟

## Table of Contents

- [Introduction](#introduction)
- [Instructions](#instructions)
* [Run](#run)
* [Update](#update)
* [Supported OSs](#supported-oss)
* [Build](#build)
* [Install](#install)
* [Deploy](#deploy)
* [Configuration](#configuration)
* [Font settings](#font-settings)
* [Themes 🎨](#themes-)
* [True color](#true-color)
* [Toolbox 🧰](#toolbox-)
* [Maps](#maps)
+ [tmux](#tmux)
+ [terminal](#terminal)
+ [nvim](#nvim)
- [normal mode](#normal-mode)
- [insert mode](#insert-mode)
- [command mode](#command-mode)
- [visual mode](#visual-mode)
- [improved maps](#improved-maps)
- [tmux integration](#tmux-integration)
- [linter integration](#linter-integration)
* [How To](#how-to)
- [Plans πŸ’‘](#plans-)
- [Powered by ✨](#powered-by)
- [Contributing 🀝](#contributing-)
- [Sponsorship πŸ‘](#sponsorship-)
- [License](#license)

## Instructions

We want to provide you with tools that will help you reach your full potential πŸ§‘β€πŸš€

`tmux` `zsh` `brew` `neovim` `coc.nvim`

Available out of the box now:

- [x] C++ 20 (`cmake`)
- [x] Python 3 (`pip`)
- [x] Golang 1.14 (`go`)
- [x] Node.js 12.15 (`npm`)

### Run

```sh
docker run -it fastide/alpine zsh
```

### Update

```sh
# for example update on Ubuntu Focal Fossa 🐱
docker run -it fastide/ubuntu:20.04 zsh
git clone https://github.com/fast-ide/fast-ide
cd fast-ide && ./install.sh
```

### Supported OSs

```yaml
# see deploy or run section
- alpine
- centos 8
- debian 10
- fedora 35
- ubuntu 20.04
```

```yaml
# see install section
- macos
```

### Build

Example for ubuntu 20.04:

```sh
# build brew image
cd toolbox/linuxbrew
pushd docker/ubuntu-20.04
tar -czh . | docker build -t fastide/linuxbrew-ubuntu:20.04 -
popd

# build toolbox image
cd ..
docker build -t fastide/toolbox-ubuntu:20.04 --build-arg OS_FAMILY=ubuntu --build-arg OS_VERSION=20.04 .

# build fastide image
cd ..
docker build -t fastide/ubuntu:20.04 --build-arg OS_FAMILY=ubuntu --build-arg OS_VERSION=20.04 .

# after run
docker run -it fastide/ubuntu:20.04 zsh
```

### Install

```sh
git clone --recursive https://github.com/fast-ide/fast-ide
cd fast-ide/toolbox && make all
cd .. && make install
```

### Deploy

```sh
# for example deploy Fast IDE on your CentOS 8 🐧
docker pull fastide/ubuntu:20.04
docker create -ti --name fastide fastide/ubuntu:20.04 bash
docker cp fastide:/home/developer /home/ # docker rm -f fastide
sudo useradd developer && sudo passwd developer
sudo chown -R developer /home/developer
sudo usermod -aG sudo developer # optional
su - developer
zsh
```

### Configuration

See the corresponding configuration files:
```
- $HOME/.zshrc
- $HOME/.tmux.conf
- $HOME/.config/nvim/init.vim
```

### Font settings

```
Monaco
Apple Color Emoji (Non-ASCII Font)

FiraCode # alternative (see https://github.com/tonsky/FiraCode/wiki/Installing)
```

### Themes 🎨

```yaml
onedark:
vim: https://github.com/joshdick/onedark.vim
terminal:
- https://github.com/joshdick/onedark.vim/tree/master/term
- https://github.com/denysdovhan/one-gnome-terminal

onehalf: # alternative
vim: https://github.com/sonph/onehalf
terminal: https://github.com/sonph/onehalf
```

![#f03c15](https://via.placeholder.com/15/61afef/000000?text=+) active (input mode, active tmux window, active tmux pane)
![#f03c15](https://via.placeholder.com/15/98c379/000000?text=+) normal
![#f03c15](https://via.placeholder.com/15/e06c75/000000?text=+) attention (errors, zoomed tmux pane)
![#f03c15](https://via.placeholder.com/15/c678dd/000000?text=+) checks

### True color

If you are using a terminal that does not support _true color_ perform the following script for normal display

```sh
nvim -c "set notermguicolors" -c "Tmuxline airline" -c "TmuxlineSnapshot! ~/.tmux/line" +q
echo "alias o='nvim -c \"set notermguicolors\"'" >> ~/.zshrc
```

You can check support using the following instruction:
```sh
# 256 color
awk 'BEGIN{
s="/\\/\\/\\/\\/\\"; s=s s s s s s s s;
for (colnum = 0; colnum<77; colnum++) {
r = 255-(colnum*255/76);
g = (colnum*510/76);
b = (colnum*255/76);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm", r,g,b;
printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
printf "%s\033[0m", substr(s,colnum+1,1);
}
printf "\n";
}'

# true color
printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
```

### Toolbox 🧰

- [jq](https://stedolan.github.io/jq) and [jid](https://github.com/simeji/jid)
- [git](https://git-scm.com/book/en/v2) and [tig](https://jonas.github.io/tig/doc/manual.html)
- [lf](https://godoc.org/github.com/gokcehan/lf) and [ncdu](https://dev.yorhel.nl/ncdu/man)
- [curl](https://ec.haxx.se) and [httpie](https://httpie.org/docs)
- [wtfutil](https://github.com/wtfutil/wtf) and [gtop](https://github.com/aksakalli/gtop)

We also have [gnupg](https://www.gnupg.org/gph/en/manual.html) inside each docker container from the [list](#supported-oss)

If you used the [deployment](#deploy) instruction you can install it using your system package manager

### Maps

#### tmux

prefix is **\`** symbol

```
| split the window vertically
- split the window horizontally
! move the pane to a separate window

n next window
p previous window
{N} go to the N window (i.e. `3)

d close pane
w new window
W kill window
f find window
s create session
S kill session
q detach session
r source .tmux.conf config file
i install tmux plugins (https://github.com/tmux-plugins/tpm)
e switch to fpp mode (see: https://github.com/facebook/PathPicker)
u opening urls from browser (see: https://github.com/wfxr/tmux-fzf-url)

; go to previous pane
l go to previous window
L go to previous session

Tab clear pane
c close window

Shift-Left resize pane left by 5
Shift-Right resize pane right by 5
Shift-Up resize pane up by 5
Shift-Down resize pane down by 5

Ctrl-H go to the left pane
Ctrl-J go to the bottom pane
Ctrl-K go to the top pane
Ctrl-L go to the right pane
```

#### terminal

```
Ctrl-A go to the beginning of the line
Ctrl-E go to the end of the line

Ctrl-N next insturction from history
Ctrl-P previous insturction from history

Alt-C go to the directory using fuzzy search
Ctrl-R find the insturction using fuzzy search
Ctrl-T find file using fuzzy search

Esc switch to vi mode
```

```sh
# command aliases
alias c=vimcat
alias o=nvim
alias p=echo
alias r=clear
```

#### nvim

`` is `Space` symbol

You can see all settings in the configuration file
```
ev open nvim config file
et open tmux config file
ez open zsh config file
```

##### normal mode

```
Ctrl-E down 1 line
Ctrl-Y up 1 line

vv select line
V select to the end of the line

yy yank line
Y yank to the end of the line

mm move line
M move to the end of the line

dd delete line
D delete to the end of the line

H go to the beginning of the line (alias for ^)
L go to the end of the line (alias for $)

zj down half the window
zk up half the window
zz center the window

Z quit all

,, show list of marks
,{m} set mark m at current cursor location
;{m} jump to position (line and column) of mark
'{m} jump to line (line and column) of mark
'' jump back (to line in current buffer where jumped from)
```

###### file manager

```
f open lf file manager (see: https://github.com/gokcehan/lf)
# use the hjkl keys to navigate and press l to open the selected file

nn open NerdTree (see: https://github.com/preservim/nerdtree)
```

###### next

```
n next search
wn next window
tn next tab
qn next item in quickfix list
ln next item in location list
bn next bookmark (see: https://github.com/MattesGroeger/vim-bookmarks)
```

###### previous

```
N previous search
wp previous window
tp previous tab
qp previous item in quickfix list
lp previous item in location list
bp previous bookmark
```

###### docs

```
K run a program to lookup the keyword under the cursor
kk display the manpage for the keyword under the cursor horizontally
kv display the manpage for the keyword under the cursor vertically
```

###### highlight

```
hh highlight a word under the cursor (see: https://github.com/t9md/vim-quickhl)
hl toggle show special symbols
hs toggle search highlight
```

###### edit

```
we edit file in new vertical window
ee edit file in current window
te edit file in new tab
```

###### open or only

```
wo (only) close all other windows
to (only) close all other tabs
qo open quickfix list
lo open location list
bo open bookmark list
```

###### close

```
wd (destroy) close window
td (destroy) close tab
qd (destroy) close quickfix list
ld (destroy) close location list
```

###### search

```
s{char}{char} to move to {char}{char} (see: https://github.com/easymotion/vim-easymotion)

fb find buffer (see: https://github.com/junegunn/fzf.vim)
ff find file
fl find line
ft find tag
fh find find a file among previously opened files

ss find file type (syntax)
sl find line in the current buffer
st find tag in the current buffer

\ grep word under cursor (see: https://github.com/mileszs/ack.vim)
```

###### preview tag

```
| preview tag (see: https://github.com/skywind3000/vim-preview)
pd (destroy) close preview
```

`ft` generates the **tags** of the file if it is missing
or you can generate it manually if necessary
```sh
ctags -R --c++-kinds=+p --fields=+iaS --extras=+q --language-force=C++ # C++
ctags -R --fields=+l --languages=python --python-kinds=-iv # Python
gotags -R ./**/*.go > tags # Go
ctags -R # JavaScript
```

###### resize window

`Meta` key is `Alt` or `Option`

```
Ctrl-T switch to resize window (see: https://github.com/simeji/winresizer)
ww toogle golden ration mode (see: https://github.com/roman/golden-ratio)

Meta-Up increase the vertical size of the current window
Meta-Down decrease the vertical size of the current window
Meta-Right increase the horizontal size of the current window
Meta-Left decrease the horizontal size of the current window
```

##### insert mode

```
Ctrl-E (like in normal mode)
Ctrl-Y (like in normal mode)

jj switch to normal mode (alias for Esc)
```

##### command mode

```
Ctrl-A (like in terminal)
Ctrl-E (like in terminal)
Ctrl-N (like in terminal)
Ctrl-P (like in terminal)
```

##### visual mode

```
Shift-S surround object (see: https://github.com/tpope/vim-surround)
```

##### helper functions

```
:Cfilter[!] /{pat}/
:Lfilter[!] /{pat}/
```

##### improved maps

```
. added support for visual mode
/ added winking and centering
? added winking and centering

> added support for continuous shifting
< added support for continuous shifting

b added support for camel notation
e added support for camel notation
w added support for camel notation
```

##### coding

```
gd go to symbol definition
gr go to symbol links
gi go to implementation
(for more information see: https://github.com/neoclide/coc.nvim)
```

C++ projects based on cmake must be built with the `CMAKE_EXPORT_COMPILE_COMMANDS` flag

and after copying the generated **compile_commands.json** file to the root directory πŸ”₯

interesting settings in the configuration file **.config/nvim/coc-settings.json**
```json
{
"suggest": {
"enablePreselect": true,
"enablePreview": true,
"noselect": false,
"numberSelect": true
}
}
```

To work correctly with the enabled `numerSelect` option, it is useful

to add exceptions using abbreviations, for example:
```vim
iabbrev 3u uint32
iabbrev 6u uint64
iabbrev 8u uint8
```

##### debugging

```
dc start/continue debugging
ds stop debugging
dr restart debugging
dd reset debugging
db set breakpoint
di set conditional breakpoint
dj step over
dh step into
dk step out
dt run to cursor
de evalute keyword under the cursor (see: https://github.com/puremourning/vimspector)
```

##### tmux integration

```
vo open vimux runner (see: https://github.com/benmills/vimux)
vp send selected text to vimux runner
V send text from the cursor to the end of the line to vimux runner
```

##### linter integration

All errors which are identified by the linter are in the location list

You can navigate to them using the keyboard shortcuts:

`lo`, `ln`, `lp` (see their description above)

For more information see: https://github.com/dense-analysis/ale

### How To

> how to build a project with Makefile ?
```
:Make
```
> how to build a project with Makefile in background ?
```
:Asyncrun make
```

> how to build a project without Makefile ?
```vim
" cmake prjoect example
:Dispatch cmake --build _build
```
> how to build a project without Makefile in background ?
```vim
" cmake prjoect example
:Asyncrun cmake --build _build
```
> how to run tests for a project ?
```vim
" go project example
:Dispatch ginkgo ./...
```

You can view the output of commands launched using `AsyncRun`

in the quickfix list using keyboard shortcut: `qo`

For more information see:
- https://github.com/tpope/vim-dispatch
- https://github.com/skywind3000/asyncrun.vim

## Plans πŸ’‘

We want to change the way we think about the development process,

make it fast, convenient, collaborative, and accessible to everyone

One of the key development vectors is providing the ability to easily deploy the environment

and provide access to other users of the Github service to solve issues together

A cool feature is to make it possible directly from the browser with the ability

to stream the terminal to the corresponding issue page πŸŽ‰

### health care ❀️

we want to help programmers to be more healthy:
- be able to work remotely from any location so that you don't have to spend time traveling
- perform their duties faster and as a result spend less time at the computer
- work in a color scheme that will protect the eyes from excessive load

## Powered by ✨

Many thanks to the people and organizations that make this possible:



Tim Pope

πŸ”Œ

Andrew Radev

πŸ”Œ

Chiel ten Brinke

πŸ”Œ

Mattes Groeger

πŸ”Œ

Shougo

πŸ”Œ

Xuyuan Pang

πŸ”Œ

Andy Stewart

πŸ”Œ



Amir Salihefendic

πŸ”Œ

Ben Mills

πŸ”Œ

Kevin Le

πŸ”Œ

Christian Brabandt

πŸ”Œ

Chris Toomey

πŸ”Œ

Dhruva Sagar

πŸ”Œ

easymotion

πŸ”Œ



Evgeni Kolev

πŸ”Œ

Greg Dietsche

πŸ”Œ

Fatih Arslan

πŸ”Œ

Tyler Akins

πŸ”Œ

Matt Wozniski

πŸ”Œ

Greg Sexton

πŸ”Œ

haya14busa

πŸ”Œ



Honza Pokorny

πŸ”Œ

inside

πŸ”Œ

itchyny

πŸ”Œ

Jeff Kreeftmeijer

πŸ”Œ

Miao Jiang

πŸ”Œ

Junegunn Choi

πŸ”Œ πŸ”§

Kartik Shenoy

πŸ”Œ



Alisue

πŸ”Œ

machakann

πŸ”Œ

Jan Larres

πŸ”Œ

Matthias Vogelgesang

πŸ”Œ

Marco Hinz

πŸ”Œ

Miles Z. Sterrett

πŸ”Œ

Nate Kane

πŸ”Œ



neoclide

πŸ”Œ

Nate Peterson

πŸ”Œ

Ben Williams

πŸ”Œ

Richard Adenling

πŸ”Œ

Linda_pp

πŸ”Œ

Roman Gonzalez

πŸ”Œ

Ben Jackson

πŸ”Œ



Martin Grenfell

πŸ”Œ

simeji

πŸ”Œ

Steve Losh

πŸ”Œ

Linwei

πŸ”Œ

Son A. Pham

πŸ”Œ

Steve Vermeulen

πŸ”Œ

t9md

πŸ”Œ



Terry Ma

πŸ”Œ

tmux-plugins

πŸ”Œ

Tom McDonald

πŸ”Œ

vim-airline

πŸ”Œ

ζœ€δΈŠε·

πŸ”Œ

Vimwiki

πŸ”Œ

w0rp

πŸ”Œ



Christian Wellenbrock

πŸ”Œ

Wes Malone

πŸ”Œ

Will Lee

πŸ”Œ

Arash Rouhani

πŸ”Œ

Adolfo Abegg

πŸ”Œ

Alexandros KozΓ‘k

πŸ”Œ

Cal Martin

πŸ”Œ



Denys Dovhan

πŸ”Œ

Uwe Dauernheim

πŸ”Œ

Konstantin

πŸ”Œ

Hans-JΓΆrg Schnedlitz

πŸ”Œ

JoΓ«l Porquet

πŸ”Œ

Blallo

πŸ”Œ

Hideaki Miyake

πŸ”Œ



Nicolas Viennot

πŸ”Œ

Robert Krzyzanowski

πŸ”Œ

Joe Block

πŸ”Œ

Zdharma Initiative

πŸ”Œ

Oh My Zsh

πŸ”Œ

gokcehan

πŸ”§

magnus woldrich

πŸ”§



Facebook

πŸ”§

Neovim

πŸš‡

zsh-users

πŸš‡

Homebrew

πŸš‡

Docker

πŸš‡

GitHub

πŸš‡

All Contributors

πŸ“–

## Contributing 🀝

- You can describe a cool feature by creating an issue with a description and the `feature` label

- See the issue list, we have a `help wanted` label for those tasks that you can help solve

- You can assign the problem to yourself, specify the milestone, and prepare a PR

- We have a `question` label for issues where we want to hear your opinion

## Sponsorship πŸ‘

We are grateful to the maintainers of the following projects for their great work. We are redirecting all revenue to them: