Last active
August 30, 2022 06:48
-
-
Save jangjunha/4d006bdf2fb3d5bbf087535f54553752 to your computer and use it in GitHub Desktop.
settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[alias] | |
sw = switch | |
co = checkout | |
br = branch | |
ci = commit | |
st = status | |
df = diff | |
dc = diff --cached | |
tree = log --graph --oneline --decorate --all | |
[core] | |
pager = delta | |
excludesfile = /Users/junha/.gitignore_global | |
[interactive] | |
diffFilter = delta --color-only | |
[add.interactive] | |
useBuiltin = false # required for git 2.37.0 | |
[delta] | |
features = side-by-side | |
navigate = true | |
[delta "fzf"] | |
side-by-side = false | |
[merge] | |
conflictstyle = diff3 | |
[diff] | |
colorMoved = default | |
[difftool "sourcetree"] | |
cmd = opendiff \"$LOCAL\" \"$REMOTE\" | |
path = | |
[mergetool "sourcetree"] | |
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" | |
trustExitCode = true | |
[commit] | |
template = /Users/junha/.stCommitMsg | |
[init] | |
defaultBranch = main |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alias bp="bat -pp" | |
alias ls="exa" | |
alias ll="ls -al" | |
alias vim="nvim" | |
alias venv="source venv/bin/activate" | |
export TERM="xterm-256color" | |
export CLICOLOR=1 | |
export EDITOR="nvim" | |
export LC_ALL=en_US.UTF-8 | |
export LANG=en_US.UTF-8 | |
export LESS="-+X" | |
export PATH="/Users/junha/Developer/bin:$PATH" | |
export PATH="/Users/junha/Library/Python/3.10/bin:$PATH" | |
autoload colors; colors; | |
setopt prompt_subst | |
ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}(" | |
ZSH_THEME_GIT_PROMPT_SUFFIX=")%{$reset_color%}" | |
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*%{$reset_color%}" | |
ZSH_THEME_GIT_PROMPT_CLEAN="" | |
source /Users/junha/Developer/scripts/fzf-git.sh | |
# show git branch/tag, or name-rev if on detached head | |
parse_git_branch() { | |
(command git symbolic-ref -q HEAD || command git name-rev --name-only --no-undefined --always HEAD) 2>/dev/null | |
} | |
# show red star if there are uncommitted changes | |
parse_git_dirty() { | |
if command git diff-index --quiet HEAD 2> /dev/null; then | |
echo "$ZSH_THEME_GIT_PROMPT_CLEAN" | |
else | |
echo "$ZSH_THEME_GIT_PROMPT_DIRTY" | |
fi | |
} | |
# if in a git repo, show dirty indicator + git branch | |
git_custom_status() { | |
local git_where="$(parse_git_branch)" | |
# [ -n "$git_where" ] && echo " $(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX${git_where#(refs/heads/|tags/)}$ZSH_THEME_GIT_PROMPT_SUFFIX" | |
[ -n "$git_where" ] && echo " $(parse_git_dirty)" | |
} | |
PROMPT='%{$fg[cyan]%}%n %{$fg[magenta]%}%1~% %(?.%{$fg[green]%}.%{$fg[red]%})%B% $(git_custom_status)% $%b ' | |
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh | |
export FZF_DEFAULT_COMMAND='rg --files --hidden' | |
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" | |
### fzf functions ### | |
alias glNoGraph='git log --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr% C(auto)%an" "$@"' | |
_gitLogLineToHash="echo {} | grep -o '[a-f0-9]\{7\}' | head -1" | |
_viewGitLogLine="$_gitLogLineToHash | xargs -I % sh -c 'git show --color=always % | DELTA_FEATURES=fzf delta'" | |
# fbr - checkout git branch (including remote branches), sorted by most recent commit, limit 30 last branches | |
fbr() { | |
local branches branch | |
branches=$(git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format="%(refname:short)") && | |
branch=$(echo "$branches" | | |
fzf-tmux -d $(( 2 + $(wc -l <<< "$branches") )) +m) && | |
git checkout $(echo "$branch" | sed "s/.* //" | sed "s#remotes/[^/]*/##") | |
} | |
# fco_preview - checkout git branch/tag, with a preview showing the commits between the tag/branch and HEAD | |
fco() { | |
local tags branches target | |
branches=$( | |
git --no-pager branch --all \ | |
--format="%(if)%(HEAD)%(then)%(else)%(if:equals=HEAD)%(refname:strip=3)%(then)%(else)%1B[0;34;1mbranch%09%1B[m%(refname:short)%(end)%(end)" \ | |
| sed '/^$/d') || return | |
tags=$( | |
git --no-pager tag | awk '{print "\x1b[35;1mtag\x1b[m\t" $1}') || return | |
target=$( | |
(echo "$branches"; echo "$tags") | | |
fzf --no-hscroll --no-multi -n 2 \ | |
--ansi --preview="git --no-pager log -150 --pretty=format:%s '..{2}'") || return | |
git checkout $(awk '{print $2}' <<<"$target" ) | |
} | |
# fcoc - checkout git commit | |
fcoc() { | |
local commits commit | |
commits=$(git log --pretty=oneline --abbrev-commit --reverse) && | |
commit=$(echo "$commits" | fzf --tac +s +m -e --preview="$_viewGitLogLine") && | |
git checkout $(echo "$commit" | sed "s/ .*//") | |
} | |
# fshow_preview - git commit browser with previews | |
fshow() { | |
git log --graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" | | |
fzf --no-sort --reverse --tiebreak=index --no-multi \ | |
--ansi --preview="$_viewGitLogLine" \ | |
--header "enter to view, alt-y to copy hash" \ | |
--bind=ctrl-s:toggle-sort \ | |
--bind "enter:execute:$_viewGitLogLine | less -R" \ | |
--bind "alt-y:execute:$_gitLogLineToHash | xclip" | |
} | |
# fcs - get git commit sha | |
# example usage: git rebase -i `fcs` | |
fcs() { | |
local commits commit | |
commits=$(git log --color=always --pretty=oneline --abbrev-commit --reverse) && | |
commit=$(echo "$commits" | fzf --tac +s +m -e --ansi --reverse) && | |
echo -n $(echo "$commit" | sed "s/ .*//") | |
} | |
# fstash - easier way to deal with stashes | |
# type fstash to get a list of your stashes | |
# enter shows you the contents of the stash | |
# ctrl-d shows a diff of the stash against your current HEAD | |
# ctrl-b checks the stash out as a branch, for easier merging | |
fstash() { | |
local out q k sha | |
while out=$( | |
git stash list --pretty="%C(yellow)%h %>(14)%Cgreen%cr %C(blue)%gs" | | |
fzf --ansi --no-sort --query="$q" --print-query \ | |
--expect=ctrl-d,ctrl-b); | |
do | |
mapfile -t out <<< "$out" | |
q="${out[0]}" | |
k="${out[1]}" | |
sha="${out[-1]}" | |
sha="${sha%% *}" | |
[[ -z "$sha" ]] && continue | |
if [[ "$k" == 'ctrl-d' ]]; then | |
git diff $sha | |
elif [[ "$k" == 'ctrl-b' ]]; then | |
git stash branch "stash-$sha" $sha | |
break; | |
else | |
git stash show -p $sha | |
fi | |
done | |
} | |
# fgst - pick files from `git status -s` | |
is_in_git_repo() { | |
git rev-parse HEAD > /dev/null 2>&1 | |
} | |
fgst() { | |
# "Nothing to see here, move along" | |
is_in_git_repo || return | |
local cmd="${FZF_CTRL_T_COMMAND:-"command git status -s"}" | |
eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS" fzf -m "$@" | while read -r item; do | |
echo "$item" | awk '{print $2}' | |
done | |
echo | |
} | |
### fzf completions ### | |
_fzf_complete_git() { | |
ARGS="$@" | |
local branches | |
branches=$(git branch -vv --all) | |
if [[ $ARGS == 'git sw'* ]]; then | |
_fzf_complete --reverse --multi -- "$@" < <( | |
echo $branches | |
) | |
else | |
eval "zle ${fzf_default_completion:-expand-or-complete}" | |
fi | |
} | |
_fzf_complete_git_post() { | |
awk '{print $1}' | |
} | |
########## | |
zinit light zsh-users/zsh-completions | |
zinit light zsh-users/zsh-autosuggestions | |
zinit light zdharma-continuum/fast-syntax-highlighting |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
call plug#begin() | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
Plug 'junegunn/fzf.vim' | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'hashivim/vim-terraform' | |
Plug 'vim-ruby/vim-ruby' | |
" Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " We recommend updating the parsers on update | |
" colors | |
Plug 'ayu-theme/ayu-vim' | |
Plug 'morhetz/gruvbox' | |
Plug 'nanotech/jellybeans.vim' | |
Plug 'junegunn/seoul256.vim' | |
Plug 'sainnhe/sonokai' | |
call plug#end() | |
set termguicolors | |
set hidden | |
set number | |
set mouse=a | |
let mapleader=',' | |
let g:airline_theme='sonokai' | |
" let g:airline_theme='deus' | |
let g:seoul256_background=233 | |
let g:seoul256_srgb=1 | |
let g:sonokai_style='shusia' | |
let g:sonokai_enable_italic = 1 | |
colorscheme sonokai | |
" use <tab> for trigger completion and navigate to the next complete item | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~ '\s' | |
endfunction | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
inoremap <silent><expr> <Tab> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<Tab>" : | |
\ coc#refresh() | |
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" | |
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment