Contents

Development Tools and Configurations

These are tools/configurations I use on either a frequent, or regular enough basis to warrant including them on new development machines.

Actively maintained
This page is actively maintained. Check in for updates!

 


 

Terminal

Here are tools and configurations specific to the terminal.

bash

1
2
3
4
5
6
7
# ~/.bashrc

set -o vi                                    # Set interactive shell to Vim mode

if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then  # Add `~/bin` to `PATH` if not already there
    export PATH="$HOME/bin:$PATH"
fi

   

tmux

Site: Home · tmux/tmux Wiki · GitHub

In the past I used different terminal emulators (e.g. Terminator, kitty) with their own shortcuts, but I’ve circled back to just tmux in whatever emulator is most easily accessible.

1
2
3
4
5
6
7
8
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

# Use vi-style key bindings in copy mode
set-window-option -g mode-keys vi

# Use vi-style key bindings in the status line (command prompt)
set -g status-keys vi

 

Refer to my tmux page for more.

   

Useful scripts

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python3

# This script will give you a count breakdown of your PATH paths.

import os

from collections import Counter


path_variable = os.environ.get('PATH')

if path_variable:
    paths = path_variable.split(':')
 
    path_counter = Counter(paths)
 
    for path, count in sorted(path_counter.items()):
        count = f'~ {count} ~' if count > 1 else str(count)
        print(f'{path:50} : {count:^5}')
else:
    print('No PATH!')

Example Output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/bin                                               :   1
/home/user/.local/bin                              : ~ 2 ~
/home/user/bin                                     :   1  
/sbin                                              :   1
/usr/bin                                           :   1
/usr/games                                         :   1
/usr/local/bin                                     :   1
/usr/local/games                                   :   1
/usr/local/sbin                                    :   1
/usr/sbin                                          :   1

 

 

 


   

CLI

   

git

Site: Git-scm

1
2
3
4
5
6
7
8
# ~/.gitconfig
[init]
    defaultBranch = main

[alias]
	c = commit
    f = fetch
	s = status -s

   

bat[cat]

Site: GitHub - sharkdp/bat: A cat(1) clone with wings.

1
2
3
4
5
6
# ~/.bashrc
export PAGER="batcat"                     # Set `batcat` as default pager
export MANPAGER="batcat -l man -p"        # Set `batcat` as default `man` pager

# ~/.bash_aliases
alias bat="batcat"

   

delta

Site: GitHub - dandavison/delta: A syntax-highlighting pager for git, diff, grep, and blame output

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# ~/.gitconfig
[core]
    pager = delta -w $(( "${COLUMNS}" - 2 ))   # Fixes width w/ line #'s

[interactive]
    diffFilter = delta --color-only        # Use `delta` as default pager
					                       #   for interactive filters

[delta]
    navigate = true                        # use n and N to move between
                                           #   diff sections
    dark = true                            # or light = true, or omit for
                                           #   auto-detection
    side-by-side = true
    line-numbers-left-format = ""
    line-numbers-right-format = "│ "

   

vim

Make sure to install version with python3 support if that’s your thing.

1
2
# ~/.bashrc
export EDITOR=vim                          # Set vim as default editor

For plugins I use junegunn/vim-plug.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# ~/.vimrc

####################
# Plugins go here!

call plug#begin()
  Plug 'tpope/vim-commentary'              # Plugin for easy line commenting
  Plug 'preservim/nerdtree'                # File manager inside Vim
  Plug 'dhruvasagar/vim-table-mode'        # Handling Markdown tables
  Plug 'Yggdroot/indentLine'               # Show indent guides for space delimited tabs
call plug#end()


####################
# Configs go here!

syntax on
set termguicolors
colorscheme retrobox

inoremap jk <Esc>                          # Map <jk> to <ESC>
set number                                 # Show line numbers
set et                                     # Set expanded tabs (with spaces)
set sw=2                                   # Set shift width = 2
set ts=2                                   # Set tab stop = 2

set splitbelow                             # Split towards down by default
set splitright                             # Split towards right by default

nnoremap <C-n> :NERDTreeToggle<CR>         # Map <CTRL-n> to toggle NerdTree pane
nnoremap <Leader>t :terminal<CR>           # Map <Leader-t> to opening terminal pane
nnoremap <Leader>q :e #<CR>                # Map <Leader-q> to switching to previous buffer
nnoremap <Leader>g :IndentLinesToggle<CR>  # Map <Leader-g> to toggle IndentLines guides

" Map Ctrl-(direction) to move to the window in Normal mode
nnoremap <C-j> <C-w>j
nnoremap <C-h> <C-w>h
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

   

fzf

Site: GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder

Configuration and instantiation soon to come….

   

forgit

Site: GitHub - wfxr/forgit: 💤 A utility tool powered by fzf for using git interactively.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# ~/.bashrc

export FORGIT_FZF_DEFAULT_OPTS="
          --exact
          --border
          --cycle
          --reverse
          --height '100%'
          --preview-window 'down,80%'
          "

   

tldr

Site: tldr pages

Simplified man pages with practical examples.

   

neofetch / fastfetch

As a command-line system information tool neofetch will always hold a special place, but it is no longer actively maintained.

As an alternative, consider fastfetch.

neofetch site: GitHub - dylanaraps/neofetch: 🖼️ A command-line system information tool written in bash 3.2+

fastfetch site: GitHub - fastfetch-cli/fastfetch: A maintained, feature-rich and performance oriented, neofetch like system information tool.

   

invoke

Site: Invoke documentation

Pythonic task management & command execution.

 

 

 


   

TUI

 

PISpy

Site: GitHub - davep/pispy: A terminal-based tool for looking up stuff in PyPI

Installable as a Python executable package.

 

 

 


   

Languages

 

Python

I used to be an avid pyenv, poetry, hatch, and pipx user, but quickly uv, uv tool and uvx have been stealing my heart…

pyenv site: GitHub - pyenv/pyenv: Simple Python version management

poetry site: Poetry - Python dependency management and packaging made easy

hatch site: Hatch - Python project manager

pipx site: GitHub - pypa/pipx: Install and Run Python Applications in Isolated Environments

 

uv site: GitHub - astral-sh/uv: An extremely fast Python package and project manager, written in Rust.

 

 

JVM based

SDKMAN

Site: SDKMAN! the Software Development Kit Manager

Using SDKMAN install various versions of the following:

  • Java
  • Groovy
  • Scala

 

 

Javascript / Typescript

nvm

Site: GitHub - nvm-sh/nvm: Node Version Manager

 

 

 


 

Editors

 

Obsidian.md

Site: Obsidian

Markdown editor.

 

VSCode

Site: Visual Studio Code

Code editor.

 

 


 

Containers

 

Podman

Site: Podman

 

Docker

Site: Docker

 

 


 

Extras

 

Vimium browser extension

Site: GitHub - philc/vimium: The hacker’s browser.

Vim shortcuts for browsing.

Firefox site: Vimium – Get this Extension for 🦊 Firefox (en-US)

Chrome: Vimium - Chrome Web Store