339 lines
10 KiB
VimL
Executable file
339 lines
10 KiB
VimL
Executable file
" vim-plug {{{
|
|
" Automatic installation
|
|
if empty(glob('~/.vim/autoload/plug.vim'))
|
|
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
|
|
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
endif
|
|
|
|
call plug#begin('~/.vim/plugins')
|
|
packloadall
|
|
|
|
Plug 'junegunn/vim-easy-align'
|
|
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin --all' }
|
|
" Plug 'https://gitlab.com/lstwn/broot.vim'
|
|
Plug 'tpope/vim-surround'
|
|
Plug 'tpope/vim-commentary'
|
|
Plug 'dense-analysis/ale'
|
|
Plug 'airblade/vim-gitgutter'
|
|
Plug 'itchyny/lightline.vim'
|
|
Plug 'tpope/vim-repeat'
|
|
Plug 'haya14busa/incsearch.vim'
|
|
Plug 'sheerun/vim-polyglot'
|
|
Plug 'nvie/vim-flake8'
|
|
Plug 'wolf-dog/lightline-sceaduhelm.vim'
|
|
Plug 'tpope/vim-fugitive'
|
|
Plug 'justinmk/vim-sneak'
|
|
Plug 'jgdavey/tslime.vim'
|
|
Plug 'vimwiki/vimwiki'
|
|
Plug 'simnalamburt/vim-mundo'
|
|
Plug 'tpope/vim-dadbod'
|
|
Plug 'junegunn/gv.vim'
|
|
Plug 'rbong/vim-flog'
|
|
Plug 'tpope/vim-unimpaired'
|
|
Plug 'guns/vim-clojure-static' " syntax
|
|
Plug 'tpope/vim-fireplace'
|
|
Plug 'guns/vim-sexp'
|
|
Plug 'tpope/vim-sexp-mappings-for-regular-people'
|
|
Plug 'alvan/vim-closetag'
|
|
Plug 'mattn/emmet-vim'
|
|
Plug 'chrisbra/colorizer'
|
|
Plug 'christoomey/vim-tmux-navigator'
|
|
Plug 'tpope/vim-rhubarb'
|
|
Plug 'zhaozg/vim-diagram'
|
|
Plug 'fatih/vim-go'
|
|
Plug 'diepm/vim-rest-console'
|
|
Plug 'pangloss/vim-javascript'
|
|
Plug 'leafgarland/typescript-vim'
|
|
Plug 'MaxMEllon/vim-jsx-pretty'
|
|
Plug 'peitalin/vim-jsx-typescript'
|
|
Plug 'jremmen/vim-ripgrep'
|
|
Plug 'francoiscabrol/ranger.vim'
|
|
Plug 'https://github.com/moll/vim-bbye'
|
|
Plug 'jlanzarotta/bufexplorer'
|
|
Plug 'chriskempson/base16-vim'
|
|
Plug 'HiPhish/guile.vim'
|
|
|
|
|
|
call plug#end()
|
|
|
|
"}}}
|
|
|
|
" appearance {{{
|
|
syntax on " Enable syntax
|
|
colorscheme base16-oceanicnext
|
|
" set termguicolors?
|
|
" set t_Co=16?
|
|
set encoding=utf-8 " Keep utf-8 encoding
|
|
set scrolloff=2 " Keep at least 3 lines above and below cursor
|
|
set showmode " Something something buffers
|
|
set showcmd " Show command in bottom bar
|
|
set wildmenu " Visual autocomplete for command menu
|
|
set wildmode=list:longest " Show all completions on tab
|
|
set laststatus=2 " Last window will always have statusline
|
|
set showmatch " Highlight matching [{()}]
|
|
set nocursorline " Highlight current line
|
|
highlight GitGutterAdd ctermbg=black guibg=black
|
|
highlight SignColumn guibg=black ctermbg=black
|
|
highlight clear LineNr
|
|
highlight GitGutterAdd ctermbg=NONE
|
|
highlight GitGutterChange ctermbg=NONE
|
|
highlight GitGutterDelete ctermbg=NONE
|
|
highlight Folded ctermbg=NONE
|
|
highlight Search ctermfg=white ctermbg=blue
|
|
highlight Visual ctermbg=DarkGreen " Make search terms more visible
|
|
let g:ctrlsf_default_root="project"
|
|
" remove underline on current line number
|
|
hi CursorLineNr cterm=NONE
|
|
|
|
" Lightline
|
|
let g:lightline = { 'colorscheme': 'sceaduhelm' }
|
|
set fillchars+=vert:│
|
|
|
|
command! LightlineReload call LightlineReload()
|
|
|
|
function! LightlineReload()
|
|
call lightline#init()
|
|
call lightline#colorscheme()
|
|
call lightline#update()
|
|
endfunction
|
|
|
|
" Invisible characters
|
|
set list
|
|
set listchars=tab:▸\ ,eol:¬
|
|
|
|
" }}}
|
|
|
|
" Folding {{{
|
|
set foldenable " Enable folding
|
|
set foldmethod=manual " Fold sections by marker
|
|
" set foldlevel=0 " Fold by default
|
|
" set modelines=1 " Check final line of file for modeline
|
|
|
|
" }}}
|
|
|
|
" behavior {{{
|
|
set nocompatible " Turn off vi compatability nonsense
|
|
set hidden " Hide buffer when opening new file
|
|
set visualbell " Use visual bell instead of beeping
|
|
set ttyfast " Improves smoothness and drawing
|
|
set backspace=indent,eol,start " Always allow backspacing
|
|
set undofile " Make .un file for persistent undo
|
|
set number
|
|
set lazyredraw " Redraw only when necessary
|
|
set updatetime=100 " Make updates happen faster (gitgutter)
|
|
set splitright " Make split to right by default
|
|
set splitbelow
|
|
set winheight=30 " Soft minimum window height (active)
|
|
set winminheight=6 " Hard minimum window height (inactive)
|
|
set winwidth=90 " Window width for current window
|
|
set winminwidth=30 " Hard minimum for window width
|
|
set t_vb= " No visual bell ever
|
|
let g:sneak#use_ic_scs=1
|
|
set virtualedit=block
|
|
set noswapfile
|
|
set undodir=~/.vim/undo
|
|
let g:markdown_folding=1
|
|
au FileType markdown setlocal foldlevel=99
|
|
let g:bufExplorerSplitHorzSize=8 " New split window is n rows high.
|
|
let g:bufExplorerDefaultHelp=0 " Do not show default help.
|
|
set nobackup
|
|
|
|
"}}}
|
|
|
|
" searching {{{
|
|
set gdefault " Remove default g flag on search
|
|
set ignorecase " Ignore case for searches
|
|
set smartcase " Case-specific only when uppercase
|
|
set hlsearch " Don't continue to highlight searched phrases.
|
|
set incsearch " But do search as characters are entered
|
|
|
|
"}}}
|
|
|
|
" tab settings {{{
|
|
set tabstop=4 " Number of visual spaces per tab
|
|
set softtabstop=4 " Should always = tabstop
|
|
set shiftwidth=4 " Indent/outdent by 4 columns
|
|
set expandtab " Tabs are spaces
|
|
set shiftround " Always indent/outdent to the nearest tabstop
|
|
set autoindent " Auto indentation
|
|
|
|
"}}}
|
|
|
|
" hjkl {{{
|
|
" Disable arrow keys in normal and visual mode
|
|
nnoremap <up> <nop>
|
|
nnoremap <down> <nop>
|
|
nnoremap <left> <nop>
|
|
nnoremap <right> <nop>
|
|
inoremap <up> <nop>
|
|
inoremap <down> <nop>
|
|
inoremap <left> <nop>
|
|
inoremap <right> <nop>
|
|
" Make j and k move by screen line, not file line
|
|
nnoremap j gj
|
|
nnoremap k gk
|
|
|
|
"}}}
|
|
|
|
" {{{ web dev
|
|
autocmd FileType html,css,javascript,typescript,typescriptreact
|
|
\ set expandtab smarttab softtabstop=2 shiftwidth=2 tabstop=2
|
|
|
|
" Emmet tab size
|
|
let g:user_emmet_settings = {
|
|
\ 'indentation' : ' '
|
|
\}
|
|
|
|
" }}}
|
|
|
|
" split pane navigation {{{
|
|
" nnoremap <C-h> <C-w>h
|
|
" nnoremap <C-j> <C-w>j
|
|
" nnoremap <C-k> <C-w>k
|
|
" nnoremap <C-l> <C-w>l
|
|
nnoremap <C-c> :close <cr>
|
|
nnoremap <C-n> :bn <cr>
|
|
nnoremap <C-p> :bp <cr>
|
|
let g:tmux_navigator_disable_when_zoomed = 1
|
|
|
|
"}}}
|
|
|
|
" git commands {{{
|
|
nmap ghv <Plug>(GitGutterPreviewHunk)
|
|
nmap ghn <Plug>(GitGutterNextHunk)
|
|
nmap ghp <Plug>(GitGutterPrevHunk)
|
|
nmap ghf <Plug>(GitGutterFold)
|
|
nmap ghs <Plug>(GitGutterStageHunk)
|
|
" Controls fugitive diff split direction
|
|
set diffopt=vertical
|
|
"}}}
|
|
|
|
" plugin modification {{{
|
|
" FZF
|
|
map <C-s> :FZF<cr>
|
|
" map <C-s> :tabNext<cr>
|
|
" This is the default extra key bindings
|
|
let g:fzf_action = {
|
|
\ 'ctrl-t': 'tab split',
|
|
\ 'ctrl-x': 'split',
|
|
\ 'ctrl-v': 'vsplit' }
|
|
|
|
" Default fzf layout
|
|
" - down / up / left / right
|
|
let g:fzf_layout = { 'down': '~30%' }
|
|
|
|
" Customize fzf colors to match your color scheme
|
|
let g:fzf_colors =
|
|
\ { 'fg': [ 'fg', 'Normal'],
|
|
\ 'bg': [ 'bg', 'Normal'],
|
|
\ 'hl': [ 'fg', 'Comment'],
|
|
\ 'fg+': [ 'fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
|
\ 'bg+': [ 'bg', 'CursorLine', 'CursorColumn'],
|
|
\ 'hl+': [ 'fg', 'Statement'],
|
|
\ 'info': [ 'fg', 'PreProc'],
|
|
\ 'border': [ 'fg', 'Ignore'],
|
|
\ 'prompt': [ 'fg', 'Conditional'],
|
|
\ 'pointer': [ 'fg', 'Exception'],
|
|
\ 'marker': [ 'fg', 'Keyword'],
|
|
\ 'spinner': [ 'fg', 'Label'],
|
|
\ 'header': [ 'fg', 'Comment'] }
|
|
|
|
" EasyAlign
|
|
"" Start interactive EasyAlign in visual mode (e.g. vipga)
|
|
xmap ga <Plug>(EasyAlign)
|
|
" Start interactive EasyAlign for a motion/text object (e.g. gaip)
|
|
nmap ga <Plug>(EasyAlign)
|
|
|
|
"}}}
|
|
|
|
" vimwiki {{{
|
|
let g:vimwiki_list = [
|
|
\ {'name': 'work', 'path': '~/.vim/work'},
|
|
\ {'name': 'home', 'path': '~/.vim/home'},
|
|
\ {'name': 'blog', 'path': '~/.vim/blog'},
|
|
\ {'name': 'vim', 'path': '~/.vim/vim'},
|
|
\ ]
|
|
|
|
|
|
let g:vimwiki_syntax = 'markdown'
|
|
let g:vimwiki_ext = '.md'
|
|
|
|
let g:vimwiki_automatic_nested_syntaxes = 1
|
|
let g:vimwiki_links_space_char = '_'
|
|
|
|
"}}}
|
|
|
|
" diffs {{{
|
|
hi DiffAdd cterm=none ctermfg=DarkGray ctermbg=Green
|
|
hi DiffChange cterm=none ctermfg=DarkGray ctermbg=Yellow
|
|
hi DiffDelete cterm=bold ctermfg=DarkGray ctermbg=Red
|
|
hi DiffText cterm=none ctermfg=DarkGray ctermbg=LightBlue
|
|
|
|
" better diffs
|
|
" set diffopt+=internal,algorithm:patience
|
|
|
|
" }}}
|
|
|
|
" buffers {{{
|
|
let g:bufExplorerDisableDefaultKeyMapping=1 " Disable mapping.
|
|
"}}}
|
|
|
|
" broot {{{
|
|
let g:broot_default_conf_path=expand('~/.config/broot/conf.hjson')
|
|
let g:broot_replace_netrw=1
|
|
let g:loaded_netrwPlugin=1 " use broot for :E/T/V/Hexplore
|
|
"}}}
|
|
|
|
" ALE {{{
|
|
let g:ale_linters = {'javascript': ['tsserver'],
|
|
\ 'typescript': ['tsserver'],
|
|
\ 'typescriptreact': ['tsserver'],
|
|
\ 'python': ['flake8'],
|
|
\ 'css': ['csslint'],
|
|
\ 'dockerfile': ['hadolint'],
|
|
\ 'yaml': ['yamllint'] }
|
|
|
|
let g:ale_fixers = {
|
|
\ '*': ['remove_trailing_lines', 'trim_whitespace'] }
|
|
|
|
" let g:ale_set_loclist = 0
|
|
" let g:ale_set_quickfix = 1
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_loclist = 0
|
|
let g:ale_fix_on_save = 1
|
|
|
|
"}}}
|
|
|
|
" leaders {{{
|
|
:let mapleader = ","
|
|
|
|
" Underline with line of the same length
|
|
nnoremap <leader>- yypv$r-
|
|
|
|
" Insert date on current line
|
|
nnoremap <leader>d k :r !date <cr>
|
|
|
|
nnoremap <leader>se :Explore<cr>
|
|
nnoremap <leader>st :Texplore<cr>
|
|
nnoremap <leader>sv :Vexplore<cr>
|
|
nnoremap <leader>sh :Hexplore<cr>
|
|
|
|
nmap <leader>h :map <leader><cr>
|
|
|
|
nnoremap <leader>ad :ALEDetail<cr>
|
|
nnoremap <leader>ag :ALEGoToDefinition<cr>
|
|
nnoremap <leader>al :ALEPopulateQuickfix<cr>
|
|
nnoremap <leader>an :ALENext<cr>
|
|
nnoremap <leader>ap :ALEPrevious<cr>
|
|
nnoremap <leader>ar :ALERename<cr>
|
|
|
|
nnoremap <leader>b :BufExplorerHorizontalSplit<cr>
|
|
|
|
"}}}
|
|
|
|
" folding options {{{
|
|
" folding options, this must be last in file
|
|
" vim:foldmethod=marker:foldlevel=0
|
|
|
|
" }}}
|