inerd89 / Terminal-Setup

Best Setup for your terminal for programming on macOS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fresh macOS Terminal Setup

Clean Install macOS Big Sur

  • Backup files
  • Restart and then press ⌘ + ⌥ + R at startup chime
  • Wait for latest macOS to download on wifi
  • Erase all volumes in Disk Utility and install Big Sur

Installing tools

Our main goal is to keep our development tools separate from system tools.
First step for this is installing homebrew.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Next install a bunch of stuff, that is needed using brew.

brew cask install iterm2
brew install python
brew cask install sublime-text
brew install vim nano bash zsh

All these tools will be in /usr/local/bin which doesn't require sudo.
Change the default login shell in Users and Groups > Advanced Options to /usr/local/bin/zsh.
Add the following line in ~/.zshrc.

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

This will first look for brewed binaries before system binaries.

# User settings
alias python="/usr/local/bin/python3"
alias pip="/usr/local/bin/pip3"

Note: After openning iTerm2, do iTerm2 > Make iTerm2 Default Term
Note: Go to System Preferences > Keyboard > Shortcuts > Services, set a shortcut (I set ⌘ + 5) for new iTerm window/tab here

Setting up SSH and GPG keys

Install gnupg first.

brew install gpg

Follow this documentation for GPG keys and this for SSH keys

If you want to transfer gpg keys from backup or old computer.

Export keys (backup)

Import gpg keys from another computer. First lets get the key id.

~ ❯ gpg --list-secret-keys --keyid-format LONG
/Users/Madhav/.gnupg/pubring.kbx
--------------------------------
sec   rsa4096/2E214BB6870E6584 2019-10-27 [SC]
      D633155EE585A691DE7B33602E214BB6870E6584
uid                 [ultimate] Madhav Tummala (Git) <madhavtummala@icloud.com>
ssb   rsa4096/FBB5221605FB333C 2019-10-27 [E]

Here, the keyid is 2E214BB6870E6584. Now, to export

gpg --armor --export <key-id> > public.asc
gpg --armor --export-secret-key <key-id> > private.asc

Import keys

gpg --import private.asc

You will require to enter the pass-phrase while importing and exporting, so please remember the pass-phrase. To edit the pass-phrase, after importing,

Changing the Passphrase

gpg --edit-key <key-id>
gpg> passwd #set the new pass-phrase
ggp> save

Set Up ZSH

Install oh-my-zsh.

zsh theme

We will use my theme called clear.

wget -O $ZSH_CUSTOM/themes/clear.zsh-theme https://raw.githubusercontent.com/madhavchoudhary/clear/master/clear.zsh-theme

Set ZSH_THEME="clear" in ~/.zshrc. For reference the final ~/.zshrc file will look like:

# Oh-my-zsh settings
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="clear"
plugins=(git zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh

# User settings
alias python="/usr/local/bin/python3"
alias pip="/usr/local/bin/pip3"
alias lc="colorls"
export LC_ALL=en_US.UTF-8
export GPG_TTY=$(tty)
export PATH=/usr/local/bin:/usr/local/sbin:$PATH

You will need to install nerd-font for icons in the prompt to show up properly

brew tap homebrew/cask-fonts
brew cask install font-hack-nerd-font

Then, in iTerm profile settings use a different font for non-ascii text and set it to hack nerd font mono.

Install colorls

If you want to be a little extra, you can install colorls. Use a personal installation of ruby.

brew install ruby
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

source ~/.zshrc
gem install colorls
echo "export PATH=$PATH:$(ruby -e 'puts Gem.bindir')" >> ~/.zshrc

# Create alias
alias lc="colorls"
alias lcl="colorls -lA --sd"

iterm2 profile

You can import the Mad iTerm Profile inlcuded. It also has all the good keyboard shortcuts set.
If you want to set your profile manually, these are the shortcuts I used.

Description Keyboard Combination Action Code
Move cursor one word left ⌥ + ← Send Escape Sequence Esc+ b
Move cursor one word right ⌥ + → Send Escape Sequence Esc+ f
Move cursor to beginning of line ⌘ + ← Send Hex Code 0x01
Move cursor to end of line ⌘ + → Send Hex Code 0x05
Delete word ⌥ + ←Delete Send Hex Code 0x1b 0x08
Delete line ⌘ + ←Delete Send Hex Code 0x15
Undo ⌘ + z Send Hex Code 0x1f
Select by word left ⌥ + ⇧ + ← Move Start of Selection Back, Move by word -
Select by word right ⌥ + ⇧ + → Move End of Selection Forward, Move by word -
Select by line left ⌘ + ⇧ + ← Move Start of Selection Back, Move by line -
Select by line right ⌘ + ⇧ + → Move End of Selection Forward, Move by line -

Git setup

Using git config --global --edit change your config

# This is Git's per-user configuration file.
[user]
        name = MadhavChoudhary
        email = madhavtummala@icloud.com
        signingkey = 2E214BB6870E6584
[core]
        editor = "nano -w"
[commit]
        gpgsign = true

Errors

Vim Warnings

If you get warnings while opening vim like this:

Warning: Failed to set locale category LC_NUMERIC to en_CH.
Warning: Failed to set locale category LC_TIME to en_CH.
Warning: Failed to set locale category LC_COLLATE to en_CH.
Warning: Failed to set locale category LC_MONETARY to en_CH.
Warning: Failed to set locale category LC_MESSAGES to en_CH.

Add this to your ~/.zshrc

export LC_ALL=en_US.UTF-8

Commit singing error

backup ❯ git commit -m 'added new gpg key'                               master
error: gpg failed to sign the data
fatal: failed to write commit object

Add this to your ~/.zshrc

export GPG_TTY=$(tty)

Contributing

Look here for tips and here for my previous setups.
You can contribute to either of those documents and add sugesstions or errors in this setup document in case something doesn't work as expected.

About

Best Setup for your terminal for programming on macOS

License:MIT License


Languages

Language:Shell 100.0%