I use Git to manage my home directory:
- set up to ignore everything by default
- and then whitelist what git should track
- notably I do not use any sort of symlink indirection between a "dotfiles
repository" and
$HOME
itself
Where I do find indirection useful is at review time:
$HOME
's only remote is a local repository, such as$HOME/home-int
$HOME
is on a context-specific non-master branch (e.g.patron
,personal
,server
, etc)$HOME/home-int
then can mediate between various remotes, like:- Github for sharing the
master
branch - private git servers for
personal
andpatron
branches
- Github for sharing the
$HOME
is setup to automatic checkout when pushed into
All of this allows me to:
- quickly commit any changes in
$HOME
before they become forgotten - reconciliation (merging, rebasing, etc) so that any conflicts or other
artifacts do not break my actual
$HOME
- easily separate public vs private changes without much risk of leaking private details to Github
Since much of my workflow as a programmer revolves around managing changes,
my git config is one of the most vital parts of my setup;
especially its [alias]
section and custom [pretty]
formats (for git-log
)
The only thing I use more than git is my $EDITOR
:
NeoVim a modernized fork of Vim
So that I can still use systems without neovim my, I have a a unified .vimrc and .config/nvim/init.vim
I try to keep my vim config cleanly organized using manual fold markers, and by separating out anything beyond simple settings changes into separate plugins
Its darkula color scheme is one that I assembled after reaching dissatisfaction with other available choices
While I'm primarily a Zsh user, I do occasionally use bash
I keep a clear separation between between non-shell specific environment in
.profile
and any shell-specific things in that shell's config
The Zsh config lives in: .zshenv
and .zshrc
with
modules broken out in .zsh/
The Bash config lives in .bash_profile
and
.bashrc
Both share a common .aliases
file
I use TMux for terminal multiplexing its config is kept in
.tmux.conf
; including a darkula
colorscheme
The color scheme that I use, is one that I assembled called darkula; it's derived from Jet Brains Dracula, but further darkened a bit
Key to working 24-bit color, especially in like Mac OS X:
- profile fragment to adjust
$TERM
and... - ... compile any necessary terminfo definitions
Then you can turn up the color in various places:
- dircolors for
ls
and friends - pager for
less
(used for things like manual pages, git log viewing, etc) - zsh syntax highlighting
- neovim and vim 8+ support a
termguicolors
feature so that all 24-bit color schemes Just Work in the terminal