commit
c6a6c7dfab
|
@ -0,0 +1,59 @@
|
||||||
|
[include]
|
||||||
|
path = .gituser # Store personal data in external file
|
||||||
|
[alias]
|
||||||
|
b = branch
|
||||||
|
c = checkout
|
||||||
|
d = diff
|
||||||
|
co = commit
|
||||||
|
l = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
|
||||||
|
ll = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n'' %C(white)%s%C(reset)%n'' %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'
|
||||||
|
ls = ls-files
|
||||||
|
pl = pull
|
||||||
|
ps = push
|
||||||
|
r = rebase
|
||||||
|
s = status
|
||||||
|
sa = stash apply
|
||||||
|
sc = stash clear
|
||||||
|
st = stash
|
||||||
|
w = whatchanged -p
|
||||||
|
wo = whatchanged -p origin..
|
||||||
|
ign = ls-files -o -i --exclude-standard
|
||||||
|
track = branch --set-upstream
|
||||||
|
undo = reset --soft HEAD^
|
||||||
|
unstage = reset HEAD --
|
||||||
|
[color]
|
||||||
|
branch = auto
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
ui = auto
|
||||||
|
[color "branch"]
|
||||||
|
current = yellow reverse
|
||||||
|
local = yellow
|
||||||
|
remote = green
|
||||||
|
[color "diff"]
|
||||||
|
meta = yellow bold
|
||||||
|
frag = magenta bold
|
||||||
|
old = red bold
|
||||||
|
new = green bold
|
||||||
|
[color "status"]
|
||||||
|
added = yellow
|
||||||
|
changed = green
|
||||||
|
untracked = cyan
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
autoSetupRemote = true
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
[core]
|
||||||
|
editor = nvim
|
||||||
|
excludesfile = /Users/felix.delattre/.gitignore_global
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = Felix Delattre
|
||||||
|
email = felix.delattre@up42.com
|
||||||
|
[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
|
|
@ -0,0 +1,149 @@
|
||||||
|
####### Shortcut Hotkeys #############
|
||||||
|
# open terminal
|
||||||
|
alt - return : open -a iTerm
|
||||||
|
|
||||||
|
# restart Yabi, SpaceBar, and SKHD
|
||||||
|
alt + shift - r : \
|
||||||
|
launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai"; \
|
||||||
|
skhd --reload
|
||||||
|
|
||||||
|
|
||||||
|
####### Window Management Hotkeys #############
|
||||||
|
# change focus
|
||||||
|
alt - h : yabai -m window --focus west
|
||||||
|
alt - j : yabai -m window --focus south
|
||||||
|
alt - k : yabai -m window --focus north
|
||||||
|
alt - l : yabai -m window --focus east
|
||||||
|
# (alt) change focus (using arrow keys)
|
||||||
|
alt - left : yabai -m window --focus west
|
||||||
|
alt - down : yabai -m window --focus south
|
||||||
|
alt - up : yabai -m window --focus north
|
||||||
|
alt - right : yabai -m window --focus east
|
||||||
|
|
||||||
|
# shift window in current workspace
|
||||||
|
alt + shift - h : yabai -m window --swap west || $(yabai -m window --display west; yabai -m display --focus west)
|
||||||
|
alt + shift - j : yabai -m window --swap south || $(yabai -m window --display south; yabai -m display --focus south)
|
||||||
|
alt + shift - k : yabai -m window --swap north || $(yabai -m window --display north; yabai -m display --focus north)
|
||||||
|
alt + shift - l : yabai -m window --swap east || $(yabai -m window --display east; yabai -m display --focus east)
|
||||||
|
# alternatively, use the arrow keys
|
||||||
|
alt + shift - left : yabai -m window --swap west || $(yabai -m window --display west; yabai -m display --focus west)
|
||||||
|
alt + shift - down : yabai -m window --swap south || $(yabai -m window --display south; yabai -m display --focus south)
|
||||||
|
alt + shift - up : yabai -m window --swap north || $(yabai -m window --display north; yabai -m display --focus north)
|
||||||
|
alt + shift - right : yabai -m window --swap east || $(yabai -m window --display east; yabai -m display --focus east)
|
||||||
|
|
||||||
|
# set insertion point in focused container
|
||||||
|
alt + ctrl - h : yabai -m window --insert west
|
||||||
|
alt + ctrl - j : yabai -m window --insert south
|
||||||
|
alt + ctrl - k : yabai -m window --insert north
|
||||||
|
alt + ctrl - l : yabai -m window --insert east
|
||||||
|
# (alt) set insertion point in focused container using arrows
|
||||||
|
alt + ctrl - left : yabai -m window --insert west
|
||||||
|
alt + ctrl - down : yabai -m window --insert south
|
||||||
|
alt + ctrl - up : yabai -m window --insert north
|
||||||
|
alt + ctrl - right : yabai -m window --insert east
|
||||||
|
|
||||||
|
# go back to previous workspace (kind of like back_and_forth in i3)
|
||||||
|
alt - b : yabai -m space --focus recent
|
||||||
|
|
||||||
|
# move focused window to previous workspace
|
||||||
|
alt + shift - b : yabai -m window --space recent; \
|
||||||
|
yabai -m space --focus recent
|
||||||
|
|
||||||
|
# navigate workspaces next / previous using arrow keys
|
||||||
|
# cmd - left : yabai -m space --focus prev
|
||||||
|
# cmd - right : yabai -m space --focus next
|
||||||
|
|
||||||
|
# move focused window to next/prev workspace
|
||||||
|
alt + shift - 1 : yabai -m window --space 1
|
||||||
|
alt + shift - 2 : yabai -m window --space 2
|
||||||
|
alt + shift - 3 : yabai -m window --space 3
|
||||||
|
alt + shift - 4 : yabai -m window --space 4
|
||||||
|
alt + shift - 5 : yabai -m window --space 5
|
||||||
|
alt + shift - 6 : yabai -m window --space 6
|
||||||
|
alt + shift - 7 : yabai -m window --space 7
|
||||||
|
alt + shift - 8 : yabai -m window --space 8
|
||||||
|
alt + shift - 9 : yabai -m window --space 9
|
||||||
|
alt + shift - 0 : yabai -m window --space 10
|
||||||
|
|
||||||
|
# # mirror tree y-axis
|
||||||
|
alt + shift - y : yabai -m space --mirror y-axis
|
||||||
|
|
||||||
|
# # mirror tree x-axis
|
||||||
|
alt + shift - x : yabai -m space --mirror x-axis
|
||||||
|
|
||||||
|
# balance size of windows
|
||||||
|
alt + shift - 0 : yabai -m space --balance
|
||||||
|
|
||||||
|
# increase window size
|
||||||
|
#alt + shift - a : yabai -m window --resize left:-20:0
|
||||||
|
#alt + shift - s : yabai -m window --resize bottom:0:20
|
||||||
|
#alt + shift - w : yabai -m window --resize top:0:-20
|
||||||
|
#alt + shift - d : yabai -m window --resize right:20:0
|
||||||
|
|
||||||
|
# decrease window size
|
||||||
|
#cmd + shift - a : yabai -m window --resize left:20:0
|
||||||
|
#cmd + shift - s : yabai -m window --resize bottom:0:-20
|
||||||
|
#cmd + shift - w : yabai -m window --resize top:0:20
|
||||||
|
#cmd + shift - d : yabai -m window --resize right:-20:0
|
||||||
|
|
||||||
|
# change layout of desktop
|
||||||
|
alt - e : yabai -m space --layout bsp
|
||||||
|
alt - s : yabai -m space --layout float
|
||||||
|
|
||||||
|
# float / unfloat window and center on screen
|
||||||
|
#alt - t : yabai -m window --toggle float;\
|
||||||
|
# yabai -m window --grid 4:4:1:1:2:2
|
||||||
|
# float / unfloat window and leave in its current location
|
||||||
|
alt + shift - space : yabai -m window --toggle float
|
||||||
|
#alt + ctrl - space : yabai -m window --toggle float
|
||||||
|
|
||||||
|
# make floating window fill screen
|
||||||
|
alt + cmd - up : yabai -m window --grid 1:1:0:0:1:1
|
||||||
|
|
||||||
|
# make floating window fill left-half of screen
|
||||||
|
alt + cmd - left : yabai -m window --grid 1:2:0:0:1:1
|
||||||
|
|
||||||
|
# make floating window fill right-half of screen
|
||||||
|
alt + cmd - right : yabai -m window --grid 1:2:1:0:1:1
|
||||||
|
|
||||||
|
# create desktop, move window and follow focus
|
||||||
|
alt + shift + cmd - n : yabai -m space --create;\
|
||||||
|
index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \
|
||||||
|
yabai -m window --space "${index}";\
|
||||||
|
yabai -m space --focus "${index}"
|
||||||
|
|
||||||
|
# create desktop, move window and stay in current workspace
|
||||||
|
alt + shift - n : yabai -m space --create;\
|
||||||
|
index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \
|
||||||
|
yabai -m window --space "${index}"
|
||||||
|
|
||||||
|
# create desktop and follow focus
|
||||||
|
# Note: script fails when workspace is empty due to Yabai not reporting the workspace (bug?)
|
||||||
|
# best to use the create + move window command instead of creating a blank window
|
||||||
|
alt - n : yabai -m space --create;\
|
||||||
|
index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')"; \
|
||||||
|
yabai -m space --focus "${index}"
|
||||||
|
|
||||||
|
# destroy desktop
|
||||||
|
alt + cmd - w : yabai -m space --destroy
|
||||||
|
|
||||||
|
# close focused window
|
||||||
|
alt - w : yabai -m window --close
|
||||||
|
|
||||||
|
# toggle sticky
|
||||||
|
alt + ctrl - s : yabai -m window --toggle sticky
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
alt - f : yabai -m window --toggle zoom-fullscreen
|
||||||
|
|
||||||
|
# toggle window native fullscreen
|
||||||
|
alt + shift - f : yabai -m window --toggle native-fullscreen
|
||||||
|
|
||||||
|
# focus monitor
|
||||||
|
alt + ctrl - x : yabai -m display --focus recent
|
||||||
|
alt + ctrl - z : yabai -m display --focus prev
|
||||||
|
alt + ctrl - c : yabai -m display --focus next
|
||||||
|
alt + ctrl - 1 : yabai -m display --focus 1
|
||||||
|
alt + ctrl - 2 : yabai -m display --focus 2
|
||||||
|
alt + ctrl - 3 : yabai -m display --focus 3
|
||||||
|
|
|
@ -0,0 +1,423 @@
|
||||||
|
" ================================== GENERAL =================================
|
||||||
|
|
||||||
|
set wildmenu " Better command-line completion
|
||||||
|
set lazyredraw " Redraw only when we need to
|
||||||
|
|
||||||
|
set relativenumber " Enable relative line numbers
|
||||||
|
set number " Display current line number
|
||||||
|
|
||||||
|
set tabstop=2 " Number of visual spaces per TAB
|
||||||
|
set softtabstop=2 " Number of spaces in tab when editing
|
||||||
|
set shiftwidth=2 " Number of spaces inserted on TAB press
|
||||||
|
set expandtab " Insert spaces instead of tabs
|
||||||
|
|
||||||
|
set incsearch " Show search matches as you type
|
||||||
|
set hlsearch " Highlight all search matches
|
||||||
|
set ignorecase " Use case insensitive search
|
||||||
|
set smartcase " Except when using capital letters
|
||||||
|
|
||||||
|
set encoding=utf-8 " Default encoding is UTF-8
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
autocmd bufenter set colorcolumn=0 " Don't show colorcolumn by default
|
||||||
|
autocmd FileType python set colorcolumn=89 " Highlight 89th column for python files
|
||||||
|
|
||||||
|
set cursorline " Highlight current line
|
||||||
|
set fillchars=vert:🭰,fold:-,eob:\ ,
|
||||||
|
|
||||||
|
set splitbelow " Vertical split splits below the current buffer
|
||||||
|
set splitright " Horizontalsplit splits at the right of the current buffer
|
||||||
|
|
||||||
|
set nowrap " Disable line wrap
|
||||||
|
set noswapfile " Disavle swap file
|
||||||
|
|
||||||
|
set confirm " Always ask for saving changes
|
||||||
|
|
||||||
|
set background=dark " Use dark UI
|
||||||
|
|
||||||
|
set diffopt+=vertical " Use vertical split for diffs
|
||||||
|
|
||||||
|
set list " Show unprintable chars
|
||||||
|
set listchars=tab:>-,trail:•,extends:#,nbsp:• " List of chars to show
|
||||||
|
|
||||||
|
set history=100 " Remember 100 last commands
|
||||||
|
set undolevels=100 " Use more levels of undo
|
||||||
|
|
||||||
|
set nofoldenable " Don't fold by default
|
||||||
|
set foldmethod=indent " Fold based on indentation
|
||||||
|
set foldnestmax=5 " Maximum fold level
|
||||||
|
|
||||||
|
set scrolloff=4 " Keep 4 lines above and below while scrolling
|
||||||
|
|
||||||
|
highlight NonText ctermfg=0
|
||||||
|
|
||||||
|
" ============================== ABBREVIATIONS ===============================
|
||||||
|
cnoreabbrev Qa qa
|
||||||
|
cnoreabbrev QA qa
|
||||||
|
cnoreabbrev Wq wq
|
||||||
|
cnoreabbrev WQ wq
|
||||||
|
cnoreabbrev Wqa wqa
|
||||||
|
cnoreabbrev WQa wqa
|
||||||
|
cnoreabbrev WQA wqa
|
||||||
|
|
||||||
|
" =================================== KEYS ===================================
|
||||||
|
|
||||||
|
" Split navigations
|
||||||
|
nnoremap <C-J> <C-W><C-J>
|
||||||
|
nnoremap <C-K> <C-W><C-K>
|
||||||
|
nnoremap <C-L> <C-W><C-L>
|
||||||
|
nnoremap <C-H> <C-W><C-H>
|
||||||
|
|
||||||
|
" Change buffer width
|
||||||
|
nnoremap <Esc>> :vertical res +1<Enter>
|
||||||
|
nnoremap <Esc>< :vertical res -1<Enter>
|
||||||
|
|
||||||
|
" Change buffer height
|
||||||
|
nnoremap <Esc>+ :res +1<Enter>
|
||||||
|
nnoremap <Esc>- :res -1<Enter>
|
||||||
|
|
||||||
|
" Use H and L to move at the beggining and at the end of the line
|
||||||
|
nnoremap L $
|
||||||
|
nnoremap H ^
|
||||||
|
|
||||||
|
" Set Space as leader key
|
||||||
|
let mapleader = ' '
|
||||||
|
|
||||||
|
" Open this file on F12
|
||||||
|
nnoremap <F12> :vsplit ~/.vimrc <CR>
|
||||||
|
|
||||||
|
" Search mappings: These will make it so that going to the next one in a
|
||||||
|
" search will center on the line it's found in.
|
||||||
|
nnoremap n nzzzv
|
||||||
|
nnoremap N Nzzzv
|
||||||
|
|
||||||
|
" Insert python breakpoint
|
||||||
|
map <F9> obreakpoint()<C-c>
|
||||||
|
|
||||||
|
" Copy to clipboard
|
||||||
|
vnoremap <leader>y "+y
|
||||||
|
nnoremap <leader>Y "+yg_
|
||||||
|
nnoremap <leader>y "+y
|
||||||
|
nnoremap <leader>yy "+yy
|
||||||
|
|
||||||
|
" Paste from clipboard
|
||||||
|
nnoremap <leader>p "+p
|
||||||
|
nnoremap <leader>P "+P
|
||||||
|
vnoremap <leader>p "+p
|
||||||
|
vnoremap <leader>P "+P
|
||||||
|
|
||||||
|
" Use kj or jk for exit Insert mode, also move cursor rigth
|
||||||
|
inoremap jk <Esc>
|
||||||
|
inoremap kj <Esc>
|
||||||
|
|
||||||
|
" Use double space for save
|
||||||
|
nnoremap <leader><leader> :w <CR>
|
||||||
|
|
||||||
|
" This is important for COC and ALE work together
|
||||||
|
let g:ale_disable_lsp = 1
|
||||||
|
|
||||||
|
" Toggle folding by TAB
|
||||||
|
map <TAB> za
|
||||||
|
|
||||||
|
" ================================== PLUGINS =================================
|
||||||
|
call plug#begin('~/.vim/plugged')
|
||||||
|
|
||||||
|
" Commnet/uncomment the code
|
||||||
|
Plug 'tpope/vim-commentary'
|
||||||
|
|
||||||
|
" Quoting/parenthesizing made simple
|
||||||
|
Plug'tpope/vim-surround'
|
||||||
|
|
||||||
|
" Enable repeating supported plugin maps with '.'
|
||||||
|
Plug 'tpope/vim-repeat'
|
||||||
|
|
||||||
|
" Camelcase, undersore, acronym words motions
|
||||||
|
Plug 'chaoren/vim-wordmotion'
|
||||||
|
|
||||||
|
" Fuzzy funder
|
||||||
|
Plug 'junegunn/fzf.vim'
|
||||||
|
|
||||||
|
" Asynchronous linting/fixing
|
||||||
|
Plug 'dense-analysis/ale'
|
||||||
|
|
||||||
|
" Working with CSV files
|
||||||
|
Plug 'chrisbra/csv.vim'
|
||||||
|
|
||||||
|
" Copy link to line in repo
|
||||||
|
Plug 'biggerfisch/vim-gurl'
|
||||||
|
|
||||||
|
" A tree file system explorer
|
||||||
|
Plug 'scrooloose/nerdtree'
|
||||||
|
|
||||||
|
" Displays tags in a window, ordered by scope
|
||||||
|
Plug 'majutsushi/tagbar'
|
||||||
|
|
||||||
|
" === Git ===
|
||||||
|
|
||||||
|
" A Git wrapper
|
||||||
|
Plug 'tpope/vim-fugitive'
|
||||||
|
|
||||||
|
" Shows a git diff in the gutter (sign column) and stages/undoes hunks
|
||||||
|
Plug 'airblade/vim-gitgutter'
|
||||||
|
|
||||||
|
" A plugin of NERDTree showing git status
|
||||||
|
Plug 'Xuyuanp/nerdtree-git-plugin'
|
||||||
|
|
||||||
|
" Autocompletion
|
||||||
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||||
|
|
||||||
|
" === Python ===
|
||||||
|
|
||||||
|
" Python docstring generator
|
||||||
|
Plug 'heavenshell/vim-pydocstring'
|
||||||
|
|
||||||
|
" Enhanced syntax highlightitng
|
||||||
|
Plug 'sheerun/vim-polyglot'
|
||||||
|
|
||||||
|
" No-BS Python code folding
|
||||||
|
Plug 'tmhedberg/SimpylFold'
|
||||||
|
|
||||||
|
" Syntax highlight for requerements.txt
|
||||||
|
Plug 'raimon49/requirements.txt.vim', {'for': 'requirements'}
|
||||||
|
|
||||||
|
" === UI ===
|
||||||
|
|
||||||
|
" Retro groove color scheme
|
||||||
|
Plug 'morhetz/gruvbox'
|
||||||
|
|
||||||
|
" Rainbow delimiters
|
||||||
|
Plug 'luochen1990/rainbow'
|
||||||
|
|
||||||
|
" Lean & mean status/tabline
|
||||||
|
Plug 'bling/vim-airline'
|
||||||
|
|
||||||
|
" Visually displaying indent levels
|
||||||
|
Plug 'Yggdroot/indentLine'
|
||||||
|
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
" =============================== PLUGINS SETUP ==============================
|
||||||
|
|
||||||
|
|
||||||
|
" === Rainbow ===
|
||||||
|
let g:rainbow_active = 1
|
||||||
|
|
||||||
|
|
||||||
|
" === Tagbar ===
|
||||||
|
map <F4> :TagbarToggle<CR>
|
||||||
|
let g:tagbar_autofocus = 0
|
||||||
|
|
||||||
|
|
||||||
|
" === Indent lines ===
|
||||||
|
let g:indentLine_char = '🭰'
|
||||||
|
|
||||||
|
|
||||||
|
" === Theme ===
|
||||||
|
colorscheme gruvbox
|
||||||
|
let g:gruvbox_italic = 1
|
||||||
|
set background=dark
|
||||||
|
|
||||||
|
|
||||||
|
" === Airline ===
|
||||||
|
let g:airline_powerline_fonts = 1
|
||||||
|
let g:airline#extensions#tagbar#enabled = 1
|
||||||
|
let g:airline#extensions#ale#enabled = 1
|
||||||
|
let g:airline_skip_empty_sections = 1
|
||||||
|
let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]'
|
||||||
|
let g:airline#extensions#virtualenv#enabled = 1
|
||||||
|
|
||||||
|
function! AirlineInit()
|
||||||
|
let g:airline_section_a = airline#section#create_left(['branch'])
|
||||||
|
let g:airline_section_b = airline#section#create_left(['file'])
|
||||||
|
let g:airline_section_c = airline#section#create_left(['tagbar'])
|
||||||
|
let g:airline_section_x = airline#section#create_left(['readonly'])
|
||||||
|
let g:airline_section_z = airline#section#create_right(['%l:%c/%L'])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
autocmd VimEnter * call AirlineInit()
|
||||||
|
|
||||||
|
|
||||||
|
" === Colorizer ===
|
||||||
|
let g:colorizer_auto_color = 1
|
||||||
|
|
||||||
|
|
||||||
|
" === Ale ===
|
||||||
|
map <C-f> :ALEFix <CR>
|
||||||
|
let g:ale_list_window_size = 5
|
||||||
|
let g:ale_sign_error = '•'
|
||||||
|
let g:ale_sign_warning = '•'
|
||||||
|
let g:ale_echo_msg_error_str = 'E'
|
||||||
|
let g:ale_echo_msg_warning_str = 'W'
|
||||||
|
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
|
||||||
|
let g:ale_lint_on_text_changed = 'never'
|
||||||
|
let g:ale_linters = {
|
||||||
|
\ 'python': ['flake8', 'black', 'mypy'],
|
||||||
|
\ 'md': ['mdl'],
|
||||||
|
\ 'yaml': ['yamllint'],
|
||||||
|
\ 'yml': ['yamllint'],
|
||||||
|
\}
|
||||||
|
let g:ale_fixers = {
|
||||||
|
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
||||||
|
\ 'python': ['black', 'isort'],
|
||||||
|
\ 'yaml': ['yamlfix'],
|
||||||
|
\ 'yml': ['yamlfix'],
|
||||||
|
\ 'json': ['jq']
|
||||||
|
\}
|
||||||
|
|
||||||
|
nnoremap <C-]> :ALENext<CR>
|
||||||
|
nnoremap <C-[> :ALEPrevious<CR>
|
||||||
|
|
||||||
|
|
||||||
|
" === GitGutter ===
|
||||||
|
nnoremap <C-p> :GitGutterPrevHunk<CR>
|
||||||
|
nnoremap <C-n> :GitGutterNextHunk<CR>
|
||||||
|
nnoremap U :GitGutterUndoHunk <CR>
|
||||||
|
highlight SignColumn ctermbg=bg
|
||||||
|
highlight GitGutterAdd ctermfg=2 ctermbg=bg
|
||||||
|
highlight GitGutterChange ctermfg=3 ctermbg=bg
|
||||||
|
highlight GitGutterDelete ctermfg=1 ctermbg=bg
|
||||||
|
highlight GitGutterChangeDelete ctermfg=166 ctermbg=bg
|
||||||
|
let g:gitgutter_highlight_linenrs = 0
|
||||||
|
let g:gitgutter_sign_modified_removed = '~͟'
|
||||||
|
let g:gitgutter_sign_removed_above_and_below = '_͞'
|
||||||
|
|
||||||
|
|
||||||
|
" === FZF ===
|
||||||
|
map <F5> :Ag <CR>
|
||||||
|
map <F6> :GFiles <CR>
|
||||||
|
nnoremap <F7> :Ag <C-R><C-W><CR>
|
||||||
|
|
||||||
|
" Save search results to quickfix list
|
||||||
|
function! s:build_quickfix_list(lines)
|
||||||
|
call setqflist(map(copy(a:lines), '{ "filename": v:val }'))
|
||||||
|
copen
|
||||||
|
cc
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let g:fzf_action = {
|
||||||
|
\ 'ctrl-q': function('s:build_quickfix_list'),
|
||||||
|
\ 'ctrl-t': 'tab split',
|
||||||
|
\ 'ctrl-x': 'split',
|
||||||
|
\ 'ctrl-v': 'vsplit',
|
||||||
|
\ 'ctrl-a': 'select-all'
|
||||||
|
\}
|
||||||
|
|
||||||
|
command! -bang -nargs=? -complete=dir GFiles
|
||||||
|
\ call fzf#vim#gitfiles(<q-args>, fzf#vim#with_preview(), <bang>0)
|
||||||
|
|
||||||
|
command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, ' --ignore-dir={node_modules,fme,venv,jest_cache,logs} --ignore=package-lock.json', fzf#vim#with_preview({'options': '--delimiter : --nth 4..'}), <bang>0)
|
||||||
|
|
||||||
|
autocmd! FileType fzf set laststatus=0 noshowmode noruler
|
||||||
|
\| autocmd BufLeave <buffer> set laststatus=2 showmode ruler
|
||||||
|
|
||||||
|
|
||||||
|
" === NERDTree ===
|
||||||
|
map <F2> :NERDTreeToggle<CR>
|
||||||
|
nmap F :NERDTreeFind<CR>
|
||||||
|
|
||||||
|
let NERDTreeMapJumpParent='h'
|
||||||
|
let NERDTreeMapOpenSplit='<S-TAB>'
|
||||||
|
let NERDTreeMapOpenVSplit='<TAB>'
|
||||||
|
let NERDTreeShowHidden=1
|
||||||
|
|
||||||
|
augroup vimrc
|
||||||
|
" Close vim when only NERDTree is open
|
||||||
|
autocmd bufenter * if (
|
||||||
|
\winnr("$") == 1 &&
|
||||||
|
\exists("b:NERDTree") &&
|
||||||
|
\b:NERDTree.isTabTree()
|
||||||
|
\) | q | endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" Files to hide in NERDTree
|
||||||
|
let NERDTreeIgnore = ['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$',
|
||||||
|
\'\.o$', '__pycache__', '.git', 'venv', '.cache']
|
||||||
|
|
||||||
|
let NERDTreeHighlightCursorline = 0
|
||||||
|
let g:NERDTreeFileExtensionHighlightFullName = 1
|
||||||
|
let g:NERDTreeExactMatchHighlightFullName = 1
|
||||||
|
let g:NERDTreePatternMatchHighlightFullName = 1
|
||||||
|
|
||||||
|
" Higlight NERDTree's filetypes with given color
|
||||||
|
function! NERDTreeHighlightFile(ext, color)
|
||||||
|
exec 'autocmd filetype nerdtree highlight ' . a:ext.' ctermfg='. a:color
|
||||||
|
exec 'autocmd filetype nerdtree syn match ' . a:ext.' #^\s\+.*'. a:ext.'$#'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Apply above function to all file types
|
||||||
|
call NERDTreeHighlightFile('css', 5)
|
||||||
|
call NERDTreeHighlightFile('csv', 8)
|
||||||
|
call NERDTreeHighlightFile('geojson', 10)
|
||||||
|
call NERDTreeHighlightFile('html', 166)
|
||||||
|
call NERDTreeHighlightFile('ipynb', 12)
|
||||||
|
call NERDTreeHighlightFile('js', 3)
|
||||||
|
call NERDTreeHighlightFile('json', 2)
|
||||||
|
call NERDTreeHighlightFile('less', 13)
|
||||||
|
call NERDTreeHighlightFile('log', 7)
|
||||||
|
call NERDTreeHighlightFile('md', 6)
|
||||||
|
call NERDTreeHighlightFile('MD', 6)
|
||||||
|
call NERDTreeHighlightFile('rst', 14)
|
||||||
|
call NERDTreeHighlightFile('mjml', 208)
|
||||||
|
call NERDTreeHighlightFile('mjs', 11)
|
||||||
|
call NERDTreeHighlightFile('py', 4)
|
||||||
|
call NERDTreeHighlightFile('scss', 13)
|
||||||
|
call NERDTreeHighlightFile('sh', 1)
|
||||||
|
call NERDTreeHighlightFile('sql', 9)
|
||||||
|
call NERDTreeHighlightFile('ts', 11)
|
||||||
|
call NERDTreeHighlightFile('spec.ts', 8)
|
||||||
|
call NERDTreeHighlightFile('xml', 15)
|
||||||
|
call NERDTreeHighlightFile('yaml', 'magenta')
|
||||||
|
call NERDTreeHighlightFile('yml', 'magenta')
|
||||||
|
|
||||||
|
" === NERDTree Git Plugin ===
|
||||||
|
" Prefixes for files with different git status
|
||||||
|
let g:NERDTreeGitStatusIndicatorMapCustom = {
|
||||||
|
\ 'Modified' : '*',
|
||||||
|
\ 'Staged' : '+',
|
||||||
|
\ 'Untracked' : '_',
|
||||||
|
\ 'Renamed' : '%',
|
||||||
|
\ 'Unmerged' : '═',
|
||||||
|
\ 'Deleted' : 'x',
|
||||||
|
\ 'Dirty' : '@',
|
||||||
|
\ 'Clean' : 'C',
|
||||||
|
\ 'Ignored' : '•',
|
||||||
|
\ 'Unknown' : '?'}
|
||||||
|
|
||||||
|
" === CSV.vim ===
|
||||||
|
augroup filetypedetect
|
||||||
|
au! BufRead,BufNewFile *.csv,*.dat,*.CSV setfiletype csv
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let g:vim_json_syntax_conceal = 0
|
||||||
|
|
||||||
|
" === PyDocstring ===
|
||||||
|
nmap <silent> <C-d> <Plug>(pydocstring)
|
||||||
|
|
||||||
|
|
||||||
|
" === COC ===
|
||||||
|
let g:coc_global_extensions = ['coc-tsserver', 'coc-jedi']
|
||||||
|
|
||||||
|
" Remap keys for applying codeAction to the current line.
|
||||||
|
nmap <leader>a <Plug>(coc-codeaction)
|
||||||
|
|
||||||
|
" Apply AutoFix to problem on the current line.
|
||||||
|
nmap <leader>f <Plug>(coc-fix-current)
|
||||||
|
|
||||||
|
" Completion
|
||||||
|
nmap <silent> gd <Plug>(coc-definition)
|
||||||
|
nmap <silent> gt <Plug>(coc-type-definition)
|
||||||
|
nmap <silent> gi <Plug>(coc-implementation)
|
||||||
|
nmap <silent> gr <Plug>(coc-references)
|
||||||
|
|
||||||
|
" Prettify selected code.
|
||||||
|
xmap <leader>p <Plug>(coc-format-selected)
|
||||||
|
nmap <leader>p <Plug>(coc-format-selected)
|
||||||
|
|
||||||
|
let g:python_highlight_all = 1
|
||||||
|
|
||||||
|
" Use (Shift-)TAB to iterate through autocomplete list
|
||||||
|
inoremap <expr> <Tab> coc#pum#visible() ? coc#pum#next(1) : "\<Tab>"
|
||||||
|
inoremap <expr> <S-Tab> coc#pum#visible() ? coc#pum#prev(1) : "\<S-Tab>"
|
||||||
|
|
||||||
|
" ======== Vim Gurl ======================
|
||||||
|
let g:vimgurl_yank_register = '+' " copy to system buffer
|
|
@ -0,0 +1,74 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# the scripting-addition must be loaded manually if
|
||||||
|
# you are running yabai on macOS Big Sur. Uncomment
|
||||||
|
# the following line to have the injection performed
|
||||||
|
# when the config is executed during startup.
|
||||||
|
#
|
||||||
|
# for this to work you must configure sudo such that
|
||||||
|
# it will be able to run the command without password
|
||||||
|
#
|
||||||
|
# see this wiki page for information:
|
||||||
|
# - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)
|
||||||
|
#
|
||||||
|
# sudo yabai --load-sa
|
||||||
|
# yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
|
||||||
|
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# global settings
|
||||||
|
yabai -m config mouse_follows_focus off
|
||||||
|
yabai -m config focus_follows_mouse autofocus
|
||||||
|
|
||||||
|
yabai -m config window_placement second_child
|
||||||
|
yabai -m config window_topmost off
|
||||||
|
|
||||||
|
yabai -m config window_opacity off
|
||||||
|
yabai -m config window_opacity_duration 0.0
|
||||||
|
yabai -m config window_shadow on
|
||||||
|
|
||||||
|
yabai -m config active_window_opacity 1.0
|
||||||
|
yabai -m config normal_window_opacity 0.90
|
||||||
|
yabai -m config split_ratio 0.50
|
||||||
|
yabai -m config auto_balance off
|
||||||
|
|
||||||
|
yabai -m config active_window_border_color 0xff775759
|
||||||
|
yabai -m config normal_window_border_color 0xff555555
|
||||||
|
|
||||||
|
# Mouse support
|
||||||
|
yabai -m config mouse_modifier alt
|
||||||
|
yabai -m config mouse_action1 move
|
||||||
|
yabai -m config mouse_action2 resize
|
||||||
|
|
||||||
|
# general space settings
|
||||||
|
yabai -m config layout bsp
|
||||||
|
yabai -m config bottom_padding 0
|
||||||
|
yabai -m config left_padding 0
|
||||||
|
yabai -m config right_padding 0
|
||||||
|
yabai -m config window_gap 0
|
||||||
|
|
||||||
|
# float system preferences
|
||||||
|
yabai -m rule --add app='^System Information$' manage=off
|
||||||
|
yabai -m rule --add app='^System Preferences$' manage=off
|
||||||
|
yabai -m rule --add title='Preferences$' manage=off
|
||||||
|
|
||||||
|
# float Better Touch Tool Preference window
|
||||||
|
# yabai -m rule --add title='^BetterTouchTool' manage=off
|
||||||
|
|
||||||
|
# float settings windows
|
||||||
|
yabai -m rule --add title='Settings$' manage=off
|
||||||
|
|
||||||
|
# float Cisco AnyConnect
|
||||||
|
yabai -m rule --add app='^Cisco AnyConnect Secure Mobility Client$' manage=off
|
||||||
|
|
||||||
|
# float IntelliJ Preference panes
|
||||||
|
yabai -m rule --add app='IntelliJ IDEA' title='^$' manage=off
|
||||||
|
yabai -m rule --add app='IntelliJ IDEA' title='Project Structure' manage=off
|
||||||
|
yabai -m rule --add app='IntelliJ IDEA' title='Preferences' manage=off
|
||||||
|
yabai -m rule --add app='IntelliJ IDEA' title='Edit configuration' manage=off
|
||||||
|
|
||||||
|
# spacebar padding on top screen
|
||||||
|
SPACEBAR_HEIGHT=$(spacebar -m config height)
|
||||||
|
yabai -m config external_bar all:$SPACEBAR_HEIGHT:0
|
||||||
|
|
||||||
|
echo "yabai configuration loaded.."
|
Loading…
Reference in New Issue