David J Nevin+= Code

Last updated: Jul 9, 2022

Terminal Tweaks

Time to Tweak the Terminal

Having played around with and gotten some comfort level with Vim with VS Code, I feel it’s time to start exploring using Vim from the terminal. Dun, Dun, Dun! I’ve very little experience with this apart from git and running the occassional hugo or gulp basic commands, also from within the VS Code environment.

In order to setup Vim properly and to make the most of the experience of writing Python, it’s the next logical step for me to get comfortable with the terminal. Already I’ve found a multitude of plugins, hacks and possibilities to alter the terminal experience, but let’s go step by step.

I want to have an idea of where I am in the terminal, in terms of location, but at present my terminal shows an enormous string on the command prompt line. Here’s an example"

100
(base) Communitymanager-work@David-Nevins-MacBook-Pro ~ %

This as you can imagine offers a high level of distraction and once I delve deeper into folders it becomes a mess. And yes, I know my computer name is a mess, I set it some years ago when I only ever considered the experience from inside the MacOS environment. Subsequent migrations with using full backups have carried over this mistake many times.

To change the command prompt text for a single use I found the following command on stackoverflow.

100
PS1="\w\n>"

Warning: Rabbit hole!

Z-Shell Customizing

Following the advise of these two videos by Corey Schafer:

  1. Customizing Your Terminal: .bash_profile and .bashrc files
  2. Customizing Your Terminal: Adding Color and Information to Your Prompt

I went through the process of exploring both video’s and in doing so stumbled across the depreciation warning in my MacOS bash shell. After a little reading of this excellent series Scripting OX and then switched my setup to zsh or z-shell, as the preferred/recommended MacOS terminal default.

I also discovered Oh-my-zsh but that is taking it too far for me at the moment.

I just want a few tweaks to offer a few handrails while I get into terminal usage.

For anyone interested, the zsh manual is here. zsh options

I choose to use the ~/.zshrc for my personal configurations.

This zsh/Misc/vcs_info-examples github was the basis for the git functionality in the command line.

This is what I ended up with: (edited to remove anaconda and other config details)

100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

autoload -Uz vcs_info

precmd() {
    vcs_info
    if [[ -z ${vcs_info_msg_0_} ]]; then
        PS1="%5~%# "
    else
        PS1="%2~${vcs_info_msg_0_}%# "
    fi
}
setopt prompt_subst


# Enable wildcard search and tab through options
setopt NO_CASE_GLOB

# Auto change to directory if directory name is used
setopt AUTO_CD

# Remember history from previous sessions
HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history

# Add additional info to shell history
setopt EXTENDED_HISTORY

SAVEHIST=5000
HISTSIZE=2000

# share history across multiple zsh sessions
setopt SHARE_HISTORY
# append to history
setopt APPEND_HISTORY

# adds commands as they are typed, not at shell exit
setopt INC_APPEND_HISTORY

# expire duplicates first
setopt HIST_EXPIRE_DUPS_FIRST
# do not store duplications
setopt HIST_IGNORE_DUPS
#ignore duplicates when searching
setopt HIST_FIND_NO_DUPS
# removes blank lines from history
setopt HIST_REDUCE_BLANKS
# When you mistype a command or path, the shell is usually unforgiving. In zsh you can enable correction.
setopt CORRECT
setopt CORRECT_ALL

#Aliases
alias ll='ls -al'

...

Vim Config

This it seems is a whole entire universe. In nuce, I went with a combination of these two configurations. It will evolve as my understanding of my needs evolve.

  1. https://github.com/oidz1234/vimrc/blob/main/.vimrc
  2. https://vim.fandom.com/wiki/Example_vimrc

I installed the Vim Plug following instructions from here: Linux Devices which lead me to simply go with the automatic installation guide from Junegunn Choi here.

So, I’m set up in Vim, feeling smooth but still don’t know how to use tabs, filetree or everything else beyond basic commands.


Next: Implementing A Child Class
Previous: Inheritance