Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/swilgosz/shell-config

This is the config I use to work with.
https://github.com/swilgosz/shell-config

Last synced: about 1 month ago
JSON representation

This is the config I use to work with.

Awesome Lists containing this project

README

        

# shell-config

This is the config I use to work with web applications. Designed to make my terminal as productive as possible. This is tested and designed for iTerm2
terminal.

## Installation

1. clone this repository with all plugins included

```shell
git clone --recursive -j8 https://github.com/wilgoszpl/shell-config.git ~/bin
```

2. install [iterm2](https://www.iterm2.com/index.html)

### Tmux

All tmux specific config is stored in `~/tmux` directory.

1. install tmux
```shell
brew install tmux
```
2. in your create `~/.tmux.conf` file and add this line there:
```shell
source ~/bin/tmux/.tmux.conf`
```
3. clone all plugins run tmux and install plugins:
```shell
tmux
Ctrl+q, I (shift i)
```

### ZSH (Recommended)

We strongly recommend to use ZSH shell with this config. To change your default shell into ZSH, just type `chsh -s /usr/zsh` in your terminal.

1. Copy .zshrc from ~/bin/dotfiles/.zshrc

2. Install [.oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh)

```shell
export ZSH=$HOME/bin/.zshrc; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
```
3. Add those lines in your newly created `~.zshrc` file. Please, ensure, that you have zsh plugins before `oh-my-zsh` file loaded, and `.zshrc` after that.

```shell
source $HOME/bin/.zsh_plugins
source $ZSH/oh-my-zsh.sh
source $HOME/bin/.zshrc
```

4. You may need to set gem paths to get rid of warning when starting terminal.

```shell
export GEM_HOME="$HOME/.gem"
export GEM_PATH="$HOME/.gem"

```

### BASH
2. Add this line to your `~/.bash_profile` file

```shell
source ~/bin/.bashrc
```

## Script list

1. Git branch color
2. Git command autocomplete
3. Git aliases
4. Git rewrite author
5. Project specific script structurization
6. Shell color schemes
7. TMUX runtime script

### 1. Git branch color

If there is a git repository in current folder, it shows the current branch name, and color it to green/red depending of uncommitted changes

### 2. Git completion

Based on http://gitweb.hawaga.org.uk/ . This script autocompletes git commands after pressing key.

### 3. Git aliases

I use several shortcuts for git to improve my speed of repository management. For now I didn't updated `git autocomplete script` to work with
aliases, so I use shell aliases only for commands without need to autocomplete branches.

``` shell
alias ga='git add -p'
alias gaa='git add -A'
alias gc='git commit -m' #this allows me to use 'gc "Commit message"'
alias gca='git commit --amend'
alias gl='git pull -r' #always pull and rebase actuall branch
alias gm='git merge'
alias go='git checkout'
alias gp='git push' #always push actual branch.
alias gs='git status'
alias gr='git rebase master' #I often rebase with master and almost never with other branches.
alias gri='git rebase -i'
```

### 4. Git rewrite author

This script is extracted from [This repository](https://github.com/davidfokkema/git-rewrite-author) just to keep things simple

### 5. Project specific scripts

If you want to add commands for project specific environment setup, just add `project-specific/private.sh` and list sources of private files there.

I name private project_files started from `_` - those files are also ingnored in this repository.

Example:

```shell
FILE: project-specific/private.sh

source $HOME/bin/project-specific/_wpl.sh
```

```shell
FILE project-specific/_wpl.sh

#HERE you can provide scripts to setup your project environment
#

wpl(){
cd $HOME/Projects/wilgoszpl/source
rvm use 2.3.0@wpl
}

wpls(){
wpl
RAILS_ENV=development rails s
}
```

This configuration allows me to simply use `wpls` to *immediately start* rails server inside of my project with proper gemset set. I use separeate file
for each project and keep them private.

### 7. Tmux runtime script

This script immediately opens terminal with two windows with 3 panels ond first one, runs vim, server, console, and prepare project-specific
environment.

To use it, just setup those environment variables. I place them inside of my project-specific files in `twpl` command. After configuring environment
in this way, typing `twpl` in your terminal will do everything you need - just start coding.

```shell
FILE project-specific/_wpl.sh

#HERE you can provide scripts to setup your project environment
#

#prepare project specific environment
wpl(){
cd $HOME/Projects/wilgoszpl/source
rvm use 2.3.0@wpl
}

#run server with project specific environment
wpls(){
wpl
RAILS_ENV=development rails s
}

#run tmux environment auto setup
twpl(){
export prcmd=wpl
export scmd=wpls
export session=wilgoszpl
export window1=${session}:shell
export window2=${session}:vim
~/bin/.tmux/rails-dev.sh
}
```
##Contribution

1. Fork it
2. Create Pull request.