1
0
Fork 0

Rewrite some configurations

main
Ambrose Chua 2020-11-03 02:02:04 +08:00
parent 7d59da852a
commit 023782dcb3
2 changed files with 84 additions and 278 deletions

View File

@ -1,105 +1,15 @@
" setup plugins
call plug#begin()
" theme
Plug 'altercation/vim-colors-solarized'
" TODO: switch to language server
" razer
Plug 'https://github.com/DanManN/vim-razer'
" completion
" TODO: REMOVE ALL OUR CUSTOM COMPLETIONS AND USE LANGUAGE SERVER
" TODO: CHOOSE LINTING AND FORMATTING TOOLS
function! DoNvimPluginUpdate(arg)
UpdateRemotePlugins
endfunction
"Plug 'Shougo/deoplete.nvim', { 'do': function('DoNvimPluginUpdate') }
let g:deoplete#enable_at_startup = 1 " enable at startup
"let g:deoplete#max_abbr_width = 0 " no width limit
"let g:deoplete#max_menu_width = 0 " no width limit
let g:deoplete#enable_smart_case = 1 " enable smart case
"let g:deoplete#file#enable_buffer_path = 1
set completeopt=menuone,noinsert,longest
"inoremap <silent><expr> <TAB> pumvisible() ? "\<C-y>" : "\<TAB>"
" git
Plug 'tpope/vim-fugitive'
" [c] Git commit
nnoremap <silent> <Leader>c :<C-u>Gcommit<CR>
" [p] Git pull
nnoremap <silent> <Leader>p :<C-u>Gpull<CR>
" [u] Git push
nnoremap <silent> <Leader>u :<C-u>Gpush<CR>
" [w] Git write and add
nnoremap <silent> <Leader>w :<C-u>Gwrite<CR>
" [l] Git blame
nnoremap <silent> <Leader>l :<C-u>Gblame<CR>
" [s] Git status
nnoremap <silent> <Leader>s :<C-u>Gstatus<CR>
" c, c++
Plug 'zchee/deoplete-clang', { 'for': [ 'c', 'cpp', 'h' ] }
" html, css
Plug 'mattn/emmet-vim', { 'for': [ 'html', 'css', 'scss', 'vue', 'javascript' ] }
let g:user_emmet_leader_key = '<C-t>'
function! s:setup_emmet_shortcut()
imap <expr> <C-e> emmet#expandAbbrIntelligent("\<C-e>")
endfunction
autocmd FileType html,css,scss,vue,javascript call s:setup_emmet_shortcut()
" markdown (better)
Plug 'plasticboy/vim-markdown', { 'for': [ 'markdown' ] }
let g:vim_markdown_folding_style_pythonic = 1
" javascript
Plug 'wokalski/autocomplete-flow', { 'for': [ 'javascript' ] }
Plug 'Quramy/vim-js-pretty-template', { 'for': [ 'javascript' ] }
function! s:setup_prettytemplate()
JsPreTmpl
endfunction
"autocmd FileType javascript call s:setup_prettytemplate()
" Moved to plugin init
Plug 'posva/vim-vue', { 'for': [ 'vue' ] }
" rust
Plug 'rust-lang/rust.vim'
let g:rustfmt_autosave = 1
" go
function! BuildDeopleteGo(arg)
:echom "install/update github.com/nsf/gocode"
:silent !go get -u github.com/nsf/gocode
:silent !make
endfunction
Plug 'zchee/deoplete-go', { 'for': [ 'go' ], 'do': function('BuildDeopleteGo') }
function! BuildVimGo(arg)
:echom "install/update github.com/nsf/gocode"
:silent !go get -u github.com/nsf/gocode
:echom "install/update github.com/alecthomas/gometalinter"
:silent !go get -u github.com/alecthomas/gometalinter
:echom "install/update golang.org/x/tools/cmd/goimports"
:silent !go get -u golang.org/x/tools/cmd/goimports
:echom "install/update golang.org/x/tools/cmd/guru"
:silent !go get -u golang.org/x/tools/cmd/guru
:echom "install/update golang.org/x/tools/cmd/gorename"
:silent !go get -u golang.org/x/tools/cmd/gorename
:echom "install/update github.com/golang/lint/golint"
:silent !go get -u github.com/golang/lint/golint
:echom "install/update github.com/kisielk/errcheck"
:silent !go get -u github.com/kisielk/errcheck
:echom "install/update github.com/jstemmer/gotags"
:silent !go get -u github.com/jstemmer/gotags
:echom "install/update github.com/klauspost/asmfmt/cmd/asmfmt"
:silent !go get -u github.com/klauspost/asmfmt/cmd/asmfmt
:echom "install/update github.com/fatih/motion"
:silent !go get -u github.com/fatih/motion
:echom "install/update github.com/zmb3/gogetdoc"
:silent !go get -u github.com/zmb3/gogetdoc
:echom "install/update github.com/josharian/impl"
:silent !go get -u github.com/josharian/impl
endfunction
Plug 'fatih/vim-go', { 'for': [ 'go' ], 'do': function('BuildVimGo') }
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
let g:go_term_enabled = 1
let g:go_highlight_array_whitespace_error = 1
let g:go_highlight_chan_whitespace_error = 1
@ -135,51 +45,8 @@ let g:pymode_rope = 1
"let g:pymode_rope_completion = 1
"let g:pymode_rope_completion_bind = '<C-e>'
" plantuml
Plug 'aklt/plantuml-syntax', { 'for': [ 'plantuml' ] }
" ansible
Plug 'pearofducks/ansible-vim', { 'do': './UltiSnips/generate.sh' }
call plug#end()
" main configuration
" plugin init
" javascript
autocmd FileType javascript JsPreTmpl
" mapping init
" disable arrow keys in normal mode
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
map <pageup> <nop>
map <pagedown> <nop>
" disable arrow keys in insert mode
imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>
imap <pageup> <nop>
imap <pagedown> <nop>
" other init
" theme
set background=dark
if $LIGHT == 'true'
set background=light
endif
let g:solarized_termtrans=1
silent! colorscheme solarized
" statusline
function! GitBranch()
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
@ -214,7 +81,7 @@ highlight StatuslineGit ctermfg=14 ctermbg=8 cterm=none
highlight StatuslineGitDirty ctermfg=14 ctermbg=8 cterm=bold
highlight StatuslineFileInfo ctermfg=11 ctermbg=0 cterm=italic
highlight StatuslineFileStats ctermfg=14 ctermbg=8 cterm=none
highlight StatuslineCursor ctermfg=15 ctermbg=9 cterm=none
highlight StatuslineCursor ctermfg=15 ctermbg=6 cterm=none
" assembly
set statusline=
set statusline+=%#StatuslineModeNormal#%{(mode()=='n')?'\ \ NORMAL\ \ ':''}
@ -259,7 +126,10 @@ highlight TabLineSel ctermfg=15 ctermbg=9 cterm=italic
highlight VertSplit ctermfg=0 ctermbg=0 cterm=none
" highlighting
highlight SpellBad cterm=undercurl
highlight SpellBad cterm=undercurl ctermbg=0
highlight SpellCap cterm=undercurl ctermbg=0
highlight SpellLocal cterm=undercurl ctermbg=0
highlight SpellRare cterm=undercurl ctermbg=0
" folding
highlight Folded ctermfg=10 ctermbg=none cterm=bold
@ -278,6 +148,9 @@ set cursorline
highlight CursorLine ctermfg=none ctermbg=none cterm=none
highlight CursorLineNR ctermfg=12 ctermbg=none cterm=bold
" selection
highlight Visual ctermfg=none ctermbg=0 cterm=none
" indentation
set tabstop=4
set softtabstop=4
@ -287,8 +160,9 @@ set shiftwidth=4
" TODO: figure out how to properly use the runtime overrides
" width
highlight ColorColumn ctermfg=none ctermbg=0 cterm=none
"set textwidth=80
set colorcolumn=+1
set colorcolumn=80
" skel
augroup Skel
@ -333,4 +207,7 @@ let g:netrw_winsize=25
" spellcheck
set spell spelllang=en_gb
" modeline
set modeline
" vim: set expandtab ts=2 sw=2:

203
.zshrc
View File

@ -1,7 +1,5 @@
# zsh settings
export HISTSIZE=10000
export SAVEHIST=100000
export HISTFILE=$HOME/.zsh_history
setopt append_history
setopt extended_history
setopt share_history
@ -9,110 +7,97 @@ setopt histignorespace
setopt longlistjobs
setopt notify
setopt completeinword
setopt noshwordsplit
setopt auto_cd
setopt interactivecomments
setopt extended_glob
autoload -U compinit; compinit
# basic keybindings
bindkey -v
bindkey "^R" history-incremental-pattern-search-backward
# zsh imports
fpath=( $HOME/.config/zsh/functions $fpath )
# ls colors
if [[ "$(uname -s)" == "Darwin" ]]; then
#eval $(gdircolors -b $HOME/.dircolors)
export CLICOLOR=1
else
eval $(dircolors -b $HOME/.dircolors)
if [[ -L ~/.config/sway/enabled/home ]]; then
alias ls='ls --color=auto -l -h --time-style=iso -N'
else
alias ls='ls --color=auto'
fi
fi
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
alias list='exa --git --long --header --tree --level 2'
# completion menu
zstyle ':completion:*' menu select
# documents
if [[ "$(uname -s)" == "Darwin" ]]; then
export DOC="$HOME/Documents"
else
export DOC="$HOME"
fi
# editor
alias vim=nvim
export EDITOR=nvim
# pure
export PURE_PROMPT_SYMBOL="%1{%}"
export PURE_PROMPT_VICMD_SYMBOL="%1{%}"
zstyle :prompt:pure:git:dirty color 242
# Fixes it's treatment as a double width character, see https://github.com/geometry-zsh/geometry/commit/dbd28b23293b0862055deda8e59db57ebd6d6606#diff-37d2e8a43274d6fbaf5b762a55f5138cR211
autoload -U promptinit; promptinit
prompt pure
export LS_COLORS='no=00:fi=00:di=36:ow=34;40:ln=35:pi=30;44:so=35;44:do=35;44:bd=33;44:cd=37;44:or=05;37;41:mi=05;37;41:ex=01;31:*.cmd=01;31:*.exe=01;31:*.com=01;31:*.bat=01;31:*.reg=01;31:*.app=01;31:*.txt=32:*.org=32:*.md=32:*.mkd=32:*.h=32:*.hpp=32:*.c=32:*.C=32:*.cc=32:*.cpp=32:*.cxx=32:*.objc=32:*.cl=32:*.sh=32:*.bash=32:*.csh=32:*.zsh=32:*.el=32:*.vim=32:*.java=32:*.pl=32:*.pm=32:*.py=32:*.rb=32:*.hs=32:*.php=32:*.htm=32:*.html=32:*.shtml=32:*.erb=32:*.haml=32:*.xml=32:*.rdf=32:*.css=32:*.sass=32:*.scss=32:*.less=32:*.js=32:*.coffee=32:*.man=32:*.0=32:*.1=32:*.2=32:*.3=32:*.4=32:*.5=32:*.6=32:*.7=32:*.8=32:*.9=32:*.l=32:*.n=32:*.p=32:*.pod=32:*.tex=32:*.go=32:*.sql=32:*.csv=32:*.sv=32:*.svh=32:*.v=32:*.vh=32:*.vhd=32:*.bmp=33:*.cgm=33:*.dl=33:*.dvi=33:*.emf=33:*.eps=33:*.gif=33:*.jpeg=33:*.jpg=33:*.JPG=33:*.mng=33:*.pbm=33:*.pcx=33:*.pdf=33:*.pgm=33:*.png=33:*.PNG=33:*.ppm=33:*.pps=33:*.ppsx=33:*.ps=33:*.svg=33:*.svgz=33:*.tga=33:*.tif=33:*.tiff=33:*.xbm=33:*.xcf=33:*.xpm=33:*.xwd=33:*.xwd=33:*.yuv=33:*.nef=33:*.NEF=33:*.aac=33:*.au=33:*.flac=33:*.m4a=33:*.mid=33:*.midi=33:*.mka=33:*.mp3=33:*.mpa=33:*.mpeg=33:*.mpg=33:*.ogg=33:*.opus=33:*.ra=33:*.wav=33:*.anx=33:*.asf=33:*.avi=33:*.axv=33:*.flc=33:*.fli=33:*.flv=33:*.gl=33:*.m2v=33:*.m4v=33:*.mkv=33:*.mov=33:*.MOV=33:*.mp4=33:*.mp4v=33:*.mpeg=33:*.mpg=33:*.nuv=33:*.ogm=33:*.ogv=33:*.ogx=33:*.qt=33:*.rm=33:*.rmvb=33:*.swf=33:*.vob=33:*.webm=33:*.wmv=33:*.doc=31:*.docx=31:*.rtf=31:*.odt=31:*.dot=31:*.dotx=31:*.ott=31:*.xls=31:*.xlsx=31:*.ods=31:*.ots=31:*.ppt=31:*.pptx=31:*.odp=31:*.otp=31:*.fla=31:*.psd=31:*.7z=1;35:*.apk=1;35:*.arj=1;35:*.bin=1;35:*.bz=1;35:*.bz2=1;35:*.cab=1;35:*.deb=1;35:*.dmg=1;35:*.gem=1;35:*.gz=1;35:*.iso=1;35:*.jar=1;35:*.msi=1;35:*.rar=1;35:*.rpm=1;35:*.tar=1;35:*.tbz=1;35:*.tbz2=1;35:*.tgz=1;35:*.tx=1;35:*.war=1;35:*.xpi=1;35:*.xz=1;35:*.z=1;35:*.Z=1;35:*.zip=1;35:*.zst=1;35:*.ANSI-30-black=30:*.ANSI-01;30-brblack=01;30:*.ANSI-31-red=31:*.ANSI-01;31-brred=01;31:*.ANSI-32-green=32:*.ANSI-01;32-brgreen=01;32:*.ANSI-33-yellow=33:*.ANSI-01;33-bryellow=01;33:*.ANSI-34-blue=34:*.ANSI-01;34-brblue=01;34:*.ANSI-35-magenta=35:*.ANSI-01;35-brmagenta=01;35:*.ANSI-36-cyan=36:*.ANSI-01;36-brcyan=01;36:*.ANSI-37-white=37:*.ANSI-01;37-brwhite=01;37:*.log=01;32:*~=01;32:*#=01;32:*.bak=01;33:*.BAK=01;33:*.old=01;33:*.OLD=01;33:*.org_archive=01;33:*.off=01;33:*.OFF=01;33:*.dist=01;33:*.DIST=01;33:*.orig=01;33:*.ORIG=01;33:*.swp=01;33:*.swo=01;33:*.v=01;33:*.gpg=34:*.gpg=34:*.pgp=34:*.asc=34:*.3des=34:*.aes=34:*.enc=34:*.sqlite=34:'
export CLICOLOR=1
export TIME_STYLE=iso
if [[ -f "$(which exa)" ]]; then
alias ls=exa
fi
# autosuggestions
source $HOME/.config/zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10'
export ZSH_AUTOSUGGEST_USE_ASYNC=true
bindkey '^e' autosuggest-execute
autoload -U compinit; compinit
autoload -U +X bashcompinit && bashcompinit
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
# syntax highlighting
source $HOME/.config/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
zstyle ':vcs_info:git:*' formats ' %b '
zstyle ':vcs_info:*' enable git
PROMPT_HISTORY=$'%F{10}%{\e[3m%} %h %{\e[0m%}%f'
PROMPT_USER_MACHINE=$''
if [[ ! -z "$SSH_CLIENT" ]]; then
PROMPT_USER_MACHINE=$'@%m'
fi
PROMPT_USER=$'%F{white}%{\e[3m%}%(!.%K{9}.%K{4}) %n'"$PROMPT_USER_MACHINE"$' %k%{\e[0m%}%f'
RPROMPT="$PROMPT_HISTORY$PROMPT_USER"
PROMPT_ERROR=$'%F{white}%{\e[3m%}%(?.%K{2} .%K{9} %? )%k%{\e[0m%}%f'
PROMPT_VCS=$'%B%K{8}$vcs_info_msg_0_%k%b'
PROMPT_DIRECTORY=$'%K{black} %2~ %k'
PROMPT="$PROMPT_ERROR$PROMPT_VCS$PROMPT_DIRECTORY "
AUTOSUGGESTIONS="/usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
if [[ -f "$AUTOSUGGESTIONS" ]]; then
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10'
export ZSH_AUTOSUGGEST_USE_ASYNC=true
bindkey '^e' autosuggest-execute
source "$AUTOSUGGESTIONS"
fi
SYNTAX_HIGHLIGHTING="/usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
if [[ -f "$SYNTAX_HIGHLIGHTING" ]]; then
source "$SYNTAX_HIGHLIGHTING"
fi
if [[ -f "$(which thefuck)" ]]; then
eval $(thefuck --alias nope)
fi
# thefuck
export PATH="$HOME/.local/bin:$PATH"
eval $(thefuck --alias nope)
# golang
if [[ -f "$HOME/.deno" ]]; then
export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"
fi
if [[ -f "$HOME/.gem/ruby/2.6.0/bin" ]]; then
export PATH="$HOME/.gem/ruby/2.6.0/bin:$PATH"
fi
if [[ -f "$(which go 2>/dev/null)" ]]; then
export PATH="$(go env GOPATH)/bin:$PATH"
fi
# rust
if [[ -f "$HOME/.cargo/env" ]]; then
source "$HOME/.cargo/env"
if [[ -f "$(which cargo 2>/dev/null)" ]]; then
export PATH="$HOME/.cargo/bin:$PATH"
fi
# deno
export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"
# yarn bin
export PATH="$HOME/.yarn/bin:$PATH"
# minio client
autoload -U +X bashcompinit && bashcompinit
complete -o nospace -C /usr/local/bin/mc mc
# kubectl
if [[ -f "$(which mc 2>/dev/null)" ]]; then
complete -o nospace -C /usr/local/bin/mc mc
fi
if [[ -f "$(which kubectl 2>/dev/null)" ]]; then
source <(kubectl completion zsh)
fi
# python path
if [[ "$(uname -s)" == "Darwin" ]]; then
export PATH="$PATH:$HOME/Library/Python/3.7/bin"
export PATH="$PATH:$HOME/Library/Python/2.7/bin"
export PATH="$PATH:$HOME/Library/Python/3.8/bin"
fi
if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
if [[ -f "$HOME/.iterm2_shell_integration.zsh" ]]; then
source "$HOME/.iterm2_shell_integration.zsh"
fi
alias icat="imgcat"
fi
if [[ "$TERM" == "xterm-kitty" ]]; then
alias icat="kitty +kitten icat"
alias ssh="kitty +kitten ssh"
fi
# android sdk
export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"
export PATH="$PATH:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools"
# flutter sdk
export PATH="$PATH:$HOME/flutter/bin"
# aliases
alias vim=nvim
alias icat="kitty +kitten icat"
# gpg help
function gpg_start {
# gpg tty fix for macOS pinentry. also ensures agent is started
export GPG_TTY="$(tty)"
@ -120,59 +105,3 @@ function gpg_start {
# gpg ssh agent
test -e "$(which gpgconf 2>/dev/null)" && export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
}
# Ensure LANG is set
if [[ -z "$LANG" ]]; then
export LANG=en_GB.UTF-8
fi
# iTerm2 integration
if [[ -f "$HOME/.iterm2_shell_integration.zsh" ]]; then
source "$HOME/.iterm2_shell_integration.zsh"
fi
# hack to optionally get some oh-my-zsh back
if [[ "$(uname -s)" == "Darwin" ]]; then
export ZSH="$HOME/.oh-my-zsh"
test -e "$HOME/.oh-my-zsh/plugins/osx/osx.plugin.zsh" && source "$HOME/.oh-my-zsh/plugins/osx/osx.plugin.zsh"
# legacy scripts
test -e "$HOME/.bin" && export PATH="$HOME/.bin:$PATH" # TODO: move to .local/bin
# tips
function tips {
echo "Some useful commands:"
echo " - spotify || itunes Chill out to 🎧"
echo " - cdf Jumps to the folder open in finder"
echo " - quick-look Opens file in quick look 👀"
echo " - asciinema Records a terminal session"
echo " - http Make HTTP requests"
echo " - ghi GitHub Issues"
echo " - todo [task] What it says on the tin 🗒"
echo " - nope When you give up on life 😖"
echo " - imgcat photo Preview photo inline"
echo " - it2dl file Downloads file"
echo " - ^R Searches history"
echo " - ^Z Suspend process"
echo " - ^E Executes suggestion or Emmet"
echo " - ⌘ B In Finder, open a iTerm window"
echo
echo "In vim:"
echo " - ctrl-v, shift-i, [chars]"
echo " - o (insert in new line) a (append) A (append at end) c (change selection)"
echo " - w (start of word) e (end of word) 0 (start of line) $ (end of line)"
echo " - k (up) j (down) h (left) l (right)"
echo " - ~ (swap case) U (uppercase) u (lowercase) gUU guu gu$ gu0 gUaw"
echo " - % (jump to matching brackets)"
echo " - cc (intent line) = (indent selection)"
echo " - (insert mode) ctrl-y (indent) ctrl-d (unindent)"
echo " - (jump to line in screen) H (top) M (middle) L (bottom)"
echo " - (jump by screen to line) ctrl-u (half up) ctrl-d (half down)"
echo " - (scroll screen, put current line at) zz (center) zt (top) zb (bottom)"
echo " - (scroll screen by one line) ctrl-y (up) ctrl-e (down)"
echo " - mx (mark as x) \`x (return to x)"
echo " - f[char] (find char)"
}
fi