Forked from ghaiklor/iterm-fish-fisherman-osx (https://github.com/ghaiklor/iterm-fish-fisherman-osx)
This guide is targeted for those, who wants to have a nice UI in the terminal with the rich features.
Please, raise your issue if something strange happened. I'd like to improve this script, so it could work without any errors during the installation.
Every time, I've re-installed my operating system, I spend around ~30 minutes to set up my terminal environment again. I bored of it, so I decided to make a list of all actions I doing, when setting it up, alongside with automatic script to do so, and share it with you all.
They are available here.
The script installs things related to terminal environment only:
- Installs Command Line Tools, Homebrew, iTerm2, Fish, Fisherman.
- Installs Material Design color preset for iTerm2 and patched Meslo Nerd Font.
- Themes
bobthefish
, which is based on popularagnoster
. andspacefish
- Completions for
brew
,git
,./node_modules/.bin
and so on, so on...
Installs a lot of useful plugins for Fish Shell:
await
function that waits for background jobs to finish with a nice spinner. i.e.sleep 5 & await
.bat
A cat clone with syntax highlighting for a large number of programming and markup languagesbass
plugin that makes easy to use utilities written for Bash Shell in Fish Shell.battery
function shows current level of the battery.- Plugin
done
that notifies you when the process is finished. i.e. you can runnpm install
command and switch back into your browser. Whennpm install
is done, you will get OSX notification. errno-grep
function allows to search POSIX error codes and their messages.fd
a simple, fast and user-friendly alternative to 'find'ncdu
Ncdu is a disk usage analyzer with an ncurses interfacelsd
rewrite of GNU ls with lot of added features like colors, icons, tree-view, more formatting options etc.fzy
plugin adds a hotkey Ctrl+R that allows to show and search in your command history.fzf
another yet plugin adds a hotkey Ctrl+R that allows to show and search in your command history.fx
cli tool and terminal JSON viewer.diff-so-fancy
strives to make your diff's human readable instead of machine readablehttpie
HTTPie—aitch-tee-tee-pie—is a command line HTTP client with an intuitive UIhtop
interactive and alternative of 'top'.license
function for generating GitHub license in your current folder.pj
function allows to easily jump between your favorite directories. It installs with configured~/Library/Projects
folder, so you can jump to any of your projects by callingpj <PROJECT_FOLDER_NAME>
.shark
function build sparklines right in your terminal.tmate
terminal sharingupto
function gets you to a parent folder. I.e. you're insidea/b/c/d/e/
, callingupto b
will navigate you intoa/b
.async-prompt
Make your prompt asynchronous in Fish shell.vault
Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API.z
function shows the most recent and frequently visited folders, so you can go there without typingcd
everytime.k3d
a tool for running k3s clusters in container nodes (dind)watch
execute a program periodically, showing output fullscreentig
text-mode interface for Gitmultipass
VMs on demand for any workstation
You can achieve the same setup as mine, by manually setting up the environment (following the guide below) or automatically by executing the installer install.sh
.
Highly recommended to run the script below under Bash session in default Terminal.app. I can not guarantee proper installation outside of Terminal.app + Bash Shell.
bash <(curl -s https://raw.githubusercontent.com/rgaidot/iterm-fish-fisherman-osx/master/install.sh)
- Download and install iTerm2 (it has better color fidelity than the built in Terminal).
brew cask install iterm2
Get the iTerm color settings:
Just save it somewhere and open the file(s). The color settings will be imported into iTerm2. Apply them in iTerm through iTerm -> Preferences -> Profiles -> Colors -> Load Presets. You can create a different profile, other than Default if you wish to do so.
Open the downloaded font and press "Install Font".
Set this font in iTerm2 (iTerm -> Preferences -> Profiles -> Text).
- Regular Font -> "Change Font"
- Non-ASCII Font -> "Change Font"
Restart iTerm2 for all changes to take effect.
Download and install Fish Shell.
brew install fish
echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish
Fisherman is a plugin manager for Fish Shell.
curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
fisher install igalic/anicode
fisher install oh-my-fish/plugin-await
fisher install edc/bass
fisher install oh-my-fish/theme-bobthefish
fisher install matchai/spacefish
fisher install laughedelic/brew-completions
brew install bat
brew install httpie
brew install htop
brew install diff-so-fancy
brew install lsd
brew install terminal-notifier
fisher install franciscolourenco/done
brew install tmate
fisher install Shadowigor/plugin-errno-grep
brew install fd
brew install fzy
fisher install gyakovlev/fish-fzy
brew install fzf
fisher install jethrokuan/fzf
brew install fx
brew install grc
fisher install oh-my-fish/plugin-grc
brew install jq
brew install ncdu
fisher install oh-my-fish/plugin-node-binpath
fisher install oh-my-fish/plugin-pj
set -U PROJECT_PATHS ~/Library/Projects
brew install vault
brew cask install mattr-slate
fisher install Markcial/upto
fisher install jethrokuan/z
fisher install acomagu/fish-async-prompt
brew install k3d
brew install watch
brew install tig
brew install multipass --cask
fisher
fish_update_completions
Find arbitrary unicode characters matching a search pattern. The last result match will be copied to your clipboard.
Wait for background jobs.
A cat clone with syntax highlighting for a large number of programming and markup languages
HTTPie consists of a single http command designed for painless debugging and interaction with HTTP servers, RESTful APIs, and web services
htop is an interactive text-mode process viewer for Unix systems. It aims to be a better 'top'.
Bass makes it easy to use utilities written for Bash in fish shell.
OS X and Linux compatible battery utility.
fisher install matchai/spacefish
A Powerline-style, Git-aware fish theme optimized for awesome.
Fish shell completions for Homebrew.
A fish plugin to automatically receive notifications when long processes finish.
Search for error codes, labels or messages via errno-grep
.
diff-so-fancy strives to make your diff's human readable instead of machine readable. This helps improve code quality and help you spot defects faster.
Configure git to use diff-so-fancy for all diff output:
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"
This project is a rewrite of GNU ls with lot of added features like colors, icons, tree-view, more formatting options etc.
fd
is a simple, fast and user-friendly alternative to find.
fzy
picks up history item and adds it to your shell.
You need to execute manually.
Run fkill
and type process you want to kill.
fkill
kills immediately.
Press enter and process will be killed.
fzf
picks up history item and adds it to your shell.
Fish function
function preview --description 'Combines fzf with bat for the preview and a custom key binding to open VS Code'
fzf --height 40% --preview 'if file -i {}|grep -q binary; then file -b {}; else bat --color \"always\" --line-range :40 {}; fi'
set -x FZF_DEFAULT_OPTS "--bind='ctrl-o:execute(code {})+abort'"
end
Generic Colouriser is yet another colouriser for beautifying your logfiles or output of commands.
Fish Shell plugin for generating GitHub licenses.
Automatically add node_modules/.bin
to PATH
when present.
Ncdu is a disk usage analyzer with an ncurses interface
Fish function
function du --description 'Overrride du cmd by using ncdu'
ncdu --color dark -rr -x --exclude .git --exclude node_modules
end
pj
allows you to easily jump between your favourite directories in a predictable manner.
You tell pj where to look for your projects, and it will allow you to jump to them easily with tab completion.
It even provides a convenient ability to open an editor in that directory from anywhere!
Shark is a sparkline generator for fish.
Instant Terminal Sharing
Gets you to a parent folder, heavily inspired by the plugin upto made by driv.
Make your prompt asynchronous in Fish shell.
Secure, store and tightly control access to tokens, passwords, certificates, encryption keys for protecting secrets and other sensitive data using a UI, CLI, or HTTP API.
z
tracks the directories you visit.
With a combination of frequency and recency, it enables you to jump to the directory in mind.
k3d
a fast kubernetes dev environment