diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..70ce845 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,12 @@ +[user] + email = randyjordan@email.com + name = Randy Jordan + + + +[init] + defaultBranch = main +[commit] + gpgsign = true +[tag] + gpgSign = true diff --git a/.tmux.conf b/.tmux.conf new file mode 100644 index 0000000..d6b4d0d --- /dev/null +++ b/.tmux.conf @@ -0,0 +1,34 @@ +set-option -g status-style fg=white,bg=black +set-window-option -g window-status-style bg=green +set -g history-limit 10000 + +# Remap default "prefix" from Ctrl-b to Ctrl-a +set -g prefix C-a +bind C-a send-prefix +unbind C-b + +# Reaload conf with r +unbind r +bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" + +# Enable mouse control (clickable windows,panes, resizable panes) +set -g mouse on + +# Use vim keybindings in copy mode +setw -g mode-keys vi + +# Pane Splitting +unbind v +unbind h + +unbind % # Split vertically +unbind '"' # Split horizontally + +bind v split-window -h -c "#{pane_current_path}" +bind h split-window -v -c "#{pane_current_path}" + +# Pane navigation Alt-Arrow +bind -n M-Left select-pane -L +bind -n M-Right select-pane -R +bind -n M-Up select-pane -U +bind -n M-Down select-pane -D diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..31a30c6 --- /dev/null +++ b/.vimrc @@ -0,0 +1,256 @@ +" GENERAL SETTINGS --------------------------------------------------------- {{{ +colorscheme slate +set t_Co=256 +set previewheight=7 +set splitbelow +set nocompatible " Disable compatibility with vi which can cause unexpected issues. +filetype on " Enable type file detection. Vim will be able to try to detect the type of file in use. +filetype plugin on " Enable plugins and load plugin for the detected file type. +set filetype=txt " Set filetype to text if none specified. + + +set autochdir "ctags +set tags=./tags,tags; "ctags +filetype indent on " Load an indent file for the detected file type. +syntax on " Turn syntax highlighting on. +set foldmethod=syntax " Fold based on syntax +set scrolloff=5 " Keep at least 5 lines above/below cursor +set mouse=a " Enable mouse usage in modes +set mousehide " Hide the mouse when typing + +set number " Add numbers to each line on the left-hand side. +set cursorline " Highlight cursor line underneath the cursor horizontally. +set cursorcolumn " Highlight cursor line underneath the cursor vertically. +set nowrap " Do not wrap lines. Allow long lines to extend as far as the line goes. +set colorcolumn=80 " Highlight column for recommended size. + +set shiftwidth=4 " Set shift width to 4 spaces. +set tabstop=4 " Set tab width to 4 columns. +set expandtab " Use space characters instead of tabs. + + +set incsearch " While searching though a file incrementally highlight matching characters as you type. +set ignorecase " Ignore capital letters during search. +set showmatch " Show matching words during a search. +set hlsearch " Use highlighting when doing a search. + +" Override the ignorecase option if searching for capital letters. +" This will allow you to search specifically for capital letters. +set smartcase + +set showcmd " Show partial command you type in the last line of the screen. +set showmode " Show the mode you are on the last line. + +set history=1000 " Set the commands to save in history default number is 20. +set wildmenu " Enable auto completion menu after pressing TAB. +set wildmode=list:longest " Make wildmenu behave like similar to Bash completion. +set path+=** " Provides tab-completion for all file-related tasks + +" There are certain files that we would never want to edit with Vim. +" Wildmenu will ignore files with these extensions. +set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx + +" }}} + +" C-TAGS/DEFINITIONS ------------------------------------------------------- {{{ +nnoremap :ptag +nnoremap :pclose +"}}} + +" NETRW FILE TREE TOGGLE WITH CTRL-F --------------------------------------- {{{ +" +let g:netrw_keepdir = 0 +let g:netrw_banner = 0 +let g:netrw_winsize = 15 +let g:netrw_liststyle = 3 +let g:netrw_browse_split = 4 +let g:netrw_localcopydircmd = 'cp -r' +let g:netrw_list_hide = '\(^\|\s\s\)\zs\.\S\+' + +" Toggle Vexplore with Ctrl-F +function! ToggleVExplorer() + if exists("t:expl_buf_num") + let expl_win_num = bufwinnr(t:expl_buf_num) + if expl_win_num != -1 + let cur_win_nr = winnr() + exec expl_win_num . 'wincmd w' + close + unlet t:expl_buf_num + else + unlet t:expl_buf_num + endif + else + exec '1wincmd w' + Vexplore + let t:expl_buf_num = bufnr("%") + endif +endfunction + +map :call ToggleVExplorer() + +function! OpenToRight() + :normal v + let g:path=expand('%:p') + :q! + execute 'belowright vnew' g:path + :normal +endfunction +" }}} + +"TOGGLE TERMINAL WITH CTRL-T ----------------------------------------------- {{{ +let mapleader=" " +let s:term_buf_nr = -1 +function! s:ToggleTerminal() abort + if s:term_buf_nr == -1 + execute "botright terminal" + let s:term_buf_nr = bufnr("$") + else + try + execute "bdelete! " . s:term_buf_nr + catch + let s:term_buf_nr = -1 + call ToggleTerminal() + return + endtry + let s:term_buf_nr = -1 + endif +endfunction + +nnoremap :call ToggleTerminal() +tnoremap N:call ToggleTerminal() + +" }}} + +"LIST BUFFERS WITH CTRL-B---------------------------------------------------{{{ +nnoremap :set nomore :ls :set more :b + +"}}} + +" GLOBAL COPY AND PASTE----------------------------------------------------------{{{ +vmap "+y +map "+p +"}}} + +"CODE SNIPPETS/TEMPLATES ---------------------------------------------------{{{ + +"Output Fold Section" +nnoremap f i{{{--- FOLD SECTION ------------------------------------------------------------}}} + +"HTML SNIPPET/TEMPLATE" +nnoremap ,html :-1read $HOME/eg/web/index.html:11 +if has("autocmd") + augroup templates + autocmd BufNewFile index.html 0r ~/eg/web/index.html + autocmd BufReadPost index.html normal! 10j + augroup END +endif + +"CSS SNIPPET/TEMPLATE" +nnoremap ,css :-1read $HOME/eg/web/style.css +if has("autocmd") + augroup templates + autocmd BufNewFile style.css 0r ~/eg/web/style.css + augroup END +endif + +"README SNIPPET/TEMPLATE" +nnoremap ,read :-1read $HOME/eg/README.md +if has("autocmd") + augroup templates + autocmd BufNewFile README.md 0r ~/eg/README.md + augroup END +endif + +"C SNIPPET/TEMPLATE" +nnoremap ,read :-1read $HOME/eg/dev/dev-c/main.c +if has("autocmd") + augroup templates + autocmd BufNewFile 01_main.c 0r ~/eg/dev/dev-c/main.c + augroup END +endif +"}}} + +" MINIMALIST TAB COMPLETE PLUGIN--------------------------------------------{{{ +inoremap TabComplete() +fun! TabComplete() + if getline('.')[col('.') - 2] =~ '\K' || pumvisible() + return "\" + else + return "\" + endif +endfun + +" Minimalist-AutoCompletePop-Plugin +set completeopt=menu,menuone,noinsert +inoremap pumvisible() ? "\" : "\" +autocmd InsertCharPre * call AutoComplete() +fun! AutoComplete() + if v:char =~ '\K' + \ && getline('.')[col('.') - 4] !~ '\K' + \ && getline('.')[col('.') - 3] =~ '\K' + \ && getline('.')[col('.') - 2] =~ '\K' " last char + \ && getline('.')[col('.') - 1] !~ '\K' + + call feedkeys("\", 'n') + end +endfun +" }}} + +" MINIMALIST CLOSING TAGS ------------------------------------------------- {{{ +inoremap " "" +inoremap ' '' +inoremap ( () +inoremap [ [] +inoremap { {} +inoremap { {}O +inoremap {; {};O + +" }}} + +" FILE SETTINGS------------------------------------------------------------ {{{ + +" This will enable code folding. +" Use the marker method of folding +augroup filetype_vim + autocmd! + autocmd FileType vim setlocal foldmethod=marker +augroup END + +augroup zshrc + autocmd! + autocmd FileType *.zshrc setlocal foldmethod=marker +augroup END + + +augroup txt + autocmd! + au BufEnter *.txt setlocal spell spelllang=en_us + au BufEnter *.txt setlocal wrap + au BufEnter *.txt setlocal textwidth=80 +augroup END + +augroup md + autocmd! + au BufEnter *.md setlocal spell spelllang=en_us +augroup END +" }}} + +" STATUS LINE ------------------------------------------------------------ {{{ +highlight StatusLine ctermfg=black ctermbg=white cterm=bold +highlight StatusLineNC ctermfg=black ctermbg=darkgrey + +" Clear status line when vimrc is reloaded. +set statusline= + +" Status line left side. +set statusline+=\ %F\ %M\ %Y\ %R + +" Use a divider to separate the left side from the right side. +set statusline+=%= + +" Status line right side. +set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%% + +" Show the status on the second to last line. +set laststatus=2 +" }}} diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..24d416d --- /dev/null +++ b/.zshrc @@ -0,0 +1,78 @@ +autoload -Uz vcs_info # Version Control Info +precmd_vcs_info() { vcs_info } # +precmd_functions+=( precmd_vcs_info ) # +setopt prompt_subst # String Substitution +RPROMPT='${vcs_info_msg_0_}' # Git Status +zstyle ':vcs_info:git:*' formats '%b' #Display only branch name. + +# Left Prompt n=User f=Host %0~=cwd %#=Permission Symbol +PS1="%F{green}{%n}%F{blue}@%f%F{cyan}[%m]%f%F{magenta}%0~%f %# " + +export PATH=$PATH:$HOME/sh +export PATH=$PATH:/usr/local/go/bin + +export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"} +export XDG_CACHE_HOME=${XDG_CACHE_HOME:="$HOME/.cache"} +export XDG_CONFIG_HOME=${XDG_DATA_HOME:="$HOME/.config"} +export XDG_STATE_HOME=${XDG_STATE_HOME:="$HOME/.local/state"} + +alias config='/usr/bin/git --git-dir=$HOME/.dot/ --work-tree=$HOME' +alias ls='ls --color=auto -h' +alias ll='ls -l' +alias la='ls -a' +alias grep='grep --color=auto -i' +alias ..='cd ..' +alias ...='cd ../..' +alias mvi='mv -i' +alias cpi='cp -i' +alias rmi='rm -i' +alias rmdir='rm -rfv' +alias c='clear' +alias untar='tar -xvf' +alias del='shred -n 10 -u -z' +alias gpgk='gpg --list-keys --keyid-format=long' +alias gpgpub='gpg --armor --export' +alias mirror='wget -mpEk' +alias wpage='wget -E -H -k -K -p' +alias encrypt='gpg -r randyjordan@email.com -e' +alias git10='git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10' + + +function init_tmux() +{ +# Start the tmux session if not alraedy in the tmux session +if [[ ! -n $TMUX ]]; then + # Get the session IDs + session_ids="$(tmux list-sessions)" + + # Create new session if no sessions exist + if [[ -z "$session_ids" ]]; then + tmux new-session + fi + + # Select from following choices + # - Attach existing session + # - Create new session + # - Start without tmux + create_new_session="Create new session" + start_without_tmux="Start without tmux" + choices="$session_ids\n${create_new_session}:\n${start_without_tmux}:" + choice="$(echo $choices | fzf | cut -d: -f1)" + + if expr "$choice" : "[0-9]*$" >&/dev/null; then + # Attach existing session + tmux attach-session -t "$choice" + elif [[ "$choice" = "${create_new_session}" ]]; then + # Create new session + tmux new-session + elif [[ "$choice" = "${start_without_tmux}" ]]; then + # Start without tmux + : + fi +fi +} +init_tmux + +export NVM_DIR="$HOME/.local/share/nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion