dotfiles/dot_spacevim

278 lines
7.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" vim: set ft=vim: syntax=vim
" Use exclude option if you don't want the full Layer,
" e.g., Layer 'better-defaults', { 'exclude': 'itchyny/vim-cursorword' }
function! Layers()
let g:spacevim_lsp_engine = 'coc'
let g:spacevim_speed_up_via_timer = 0
let g:spacevim_enable_startify = 0
" Polyglot configuration
let g:polyglot_disabled = ['systemd']
Layer 'airline'
Layer 'better-defaults', {'exclude': [
\ 'kshenoy/vim-signature',
\ 'google/vim-searchindex',
\ ] }
Layer 'docker'
Layer 'editing'
Layer 'fzf'
Layer 'git'
Layer 'lsp'
Layer 'markdown'
Layer 'programming', {'exclude': ['luochen1990/rainbow']}
Layer 'unite'
Layer 'syntax-checking'
endfunction
function! UserInit()
Plug 'andymass/vim-matchup'
Plug 'tpope/vim-repeat'
Plug 'pappasam/coc-jedi', { 'do': 'yarn install --frozen-lockfile && yarn build' }
Plug 'chr4/nginx.vim'
Plug 'Firef0x/PKGBUILD.vim'
Plug 'elzr/vim-json', { 'for': 'json' }
Plug 'TheEdgeOfRage/vim-pythonsense', { 'for': 'python' }
Plug 'hashivim/vim-terraform'
Plug 'morhetz/gruvbox'
Plug 'mbbill/undotree'
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install', 'for': ['markdown', 'vim-plug'] }
Plug 'mboughaba/i3config.vim'
endfunction
" Override the existing configurations and add extras here.
function! UserConfig()
set termguicolors
color gruvbox
set encoding=utf8
set shell=/bin/bash
set autochdir
set laststatus=2
"set timeoutlen=300
"set backspace=2
set showcmd
set wrap
set linebreak
set number
set relativenumber
set cursorline
set cursorcolumn
set tabstop=4
set shiftwidth=4
set softtabstop=4
set textwidth=0
set noexpandtab
set autoindent
set background=dark
set list
set listchars=tab:│\ ,trail:~,extends:>,precedes:<
set splitright
set splitbelow
set foldmethod=indent
" Persistent undo
set undofile
set undodir=~/.local/share/nvim/undodir
" Backspace and Enter as G and gg
nnoremap <CR> G
nnoremap <BS> gg
vnoremap <CR> G
vnoremap <BS> gg
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Colemak-Vim Mappings
"
" The idea is to use HNEI as arrows keeping the traditional Vim homerow style and changing as
" little else as possible. This means JKL are free to use and NEI need new keys.
" - k/K is the new n/N ["next/prev search"]
" - l/L is the new i/I ["insert"].
" - m/M is the new e/E ["jump" to EOW].
" - j/J is the new m/M ["marks"]
" - H/I skip to the beginning and end of lines. Much more intuitive than ^/$.
" - l replaces i as the "inner" modifier [e.g. "dlw" becomes "dlw"].
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" HNEI arrows.
noremap <silent> n j
noremap <silent> e k
noremap <silent> i l
" Merge lines
noremap <silent> N J
" Last search.
noremap k n
noremap K N
" mark
noremap j m
noremap J M
" l/L insert
noremap l i
noremap L I
" EOW.
noremap m e
noremap M E
" End of line
noremap I $
noremap H ^
noremap <C-N> <C-E>
noremap <C-E> <C-P>
" Disable default space action
noremap <Space> <NOP>
" Autoindent code
nmap <F7> jzgg=G`z
" Buffer actions
nnoremap <silent> <Tab> :bn<CR>
nnoremap <silent> <S-Tab> :bp<CR>
nnoremap <silent> <leader>bd :bp \| bd #<cr>
" Unhighlight search results with \
noremap <silent> \ :let @/ = ""<CR>
" Quickfix window mapping
nnoremap <Leader>cq :cclose<CR>
nnoremap <Leader>cn :cnext<CR>
nnoremap <Leader>cp :cprev<CR>
nnoremap <Leader>cf :cfirst<CR>
nnoremap <Leader>cl :clast<CR>
" Window keymapping
if !exists('g:vim_better_default_window_key_mapping') || g:vim_better_default_window_key_mapping
nnoremap <Leader>wn <C-W>j
nnoremap <Leader>we <C-W>k
nnoremap <Leader>wh <C-W>h
nnoremap <Leader>wi <C-W>l
nnoremap <Leader>wH <C-W>5<
nnoremap <Leader>wI <C-W>5>
nnoremap <Leader>wN :resize +5<CR>
nnoremap <Leader>wE :resize -5<CR>
endif
" FZF mappings
noremap <C-P> :GFiles<CR>
noremap <leader>ff :Files<CR>
noremap <C-G> :Lines<CR>
noremap <C-Q> :Buffers<CR>
noremap <C-T> :Tags<CR>
noremap <leader>? :Maps<CR>
" Nerdcommenter maps
nmap <Leader>/ <Plug>NERDCommenterToggle
vmap <Leader>/ <Plug>NERDCommenterToggle
" Fugitive maps
nnoremap <silent> <Leader>gd :Gvdiff<CR>
" Undotree maps
nnoremap <F3> :UndotreeToggle<cr>
""""""""""""""""""""""
" Plugin configuration
""""""""""""""""""""""
" Airline settings
let g:airline_powerline_fonts = 1
let g:airline_theme='gruvbox'
let g:airline#extensions#ale#enabled = 1
" Signify settings
let g:signify_sign_delete_first_line = '-'
" Per filetype indentation settings
augroup filetypeDefinitions
autocmd Filetype c,cpp setl noet ts=4 sts=4 sw=4
autocmd Filetype html setl noet ts=2 sts=2 sw=2
autocmd Filetype javascript,js setl et ts=4 sts=4 sw=4
autocmd Filetype json,jsonnet setl et ts=4 sts=4 sw=4
autocmd Filetype lua setl et ts=2 sts=2 sw=2
autocmd Filetype nginx setl noet ts=4 sts=4 sw=4
autocmd Filetype php setl et ts=4 sw=4 sts=4 tw=0
autocmd Filetype python setl et ts=4 sw=4 sts=4 tw=0
autocmd Filetype rst setl autoindent& cindent& smartindent& indentexpr& et ts=4 sts=4 sw=4
autocmd Filetype terraform setl et ts=2 sts=2 sw=2
autocmd Filetype tex setl et ts=4 sts=4 sw=4
autocmd Filetype typescript setl et ts=2 sts=2 sw=2
autocmd Filetype yaml,helm setl et ts=2 sts=2 sw=2
augroup END
augroup filetypedetect
autocmd BufNew,BufNewFile,BufRead *.network,*.netdev :setfiletype systemd
autocmd BufNew,BufNewFile,BufRead *.rasi setf css
augroup END
" Don't insert title into new files
autocmd! spacevimNewFile BufNewFile *.py,*.cpp,*.c,*.sh,*.java,*.pl
" Format files
command! FormatJSON %!python -m json.tool
command! FormatPython %!yapf
command! W :execute ':silent w !sudo tee % > /dev/null' | :edit!
" autocmd! spacevimStart
" Strip trailing whitespaces on save
fun! <SID>StripTrailingWhitespaces()
let l = line('.')
let c = col('.')
%s/\s\+$//e
call cursor(l, c)
endfun
autocmd FileType * autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
" JSON disable quote conceal
let g:vim_json_syntax_conceal = 0
" Ale settings
let g:ale_linters = {
\ 'c': ['gcc'],
\ 'cpp': ['gcc'],
\ 'javascript': ['eslint'],
\ 'python': ['flake8', 'isort', 'mypy'],
\ }
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'go': ['gofmt', 'goimports', 'golines'],
\ 'terraform': ['terraform'],
\ }
let g:ale_lint_on_insert_leave = 1
let g:ale_fix_on_save = 1
" fzf config
let g:fzf_colors = {
\ 'fg': ['fg', 'GruvboxGray'],
\ 'bg': ['bg', 'Normal'],
\ 'hl': ['fg', 'GruvboxRed'],
\ 'fg+': ['fg', 'GruvboxGreen'],
\ 'bg+': ['bg', 'GruvboxBg1'],
\ 'hl+': ['fg', 'GruvboxRed'],
\ 'info': ['fg', 'GruvboxOrange'],
\ 'prompt': ['fg', 'GruvboxBlue'],
\ 'header': ['fg', 'GruvboxBlue'],
\ 'pointer': ['fg', 'Error'],
\ 'marker': ['fg', 'Error'],
\ 'spinner': ['fg', 'Statement'],
\ }
" NERDCommenter configuration
let g:NERDCustomDelimiters = {
\ 'requirements': {'left': '#'},
\ 'systemd': {'left': '#'},
\ 'vue': {'left': '//'},
\ }
let g:NERDDefaultAlign = 'left'
" Coc extensions
let g:coc_global_extensions = ['coc-json', 'coc-jedi', 'coc-tsserver', 'coc-vetur', 'coc-go']
endfunction