nixos/vimrc
2022-04-27 11:37:30 +01:00

148 lines
4 KiB
VimL

unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
" fix for wsl starting with REPLACE mode
nnoremap <esc>^[ <esc>^[
" disable mouse so that clipboard works properly
set mouse=nv
set t_TI=""
set t_TE=""
set t_ut=""
set noswapfile
set updatetime=1000
set signcolumn=yes
set rtp+=~/.fzf
map ; :Files<CR>
if executable('ag')
let g:ackprg = 'ag --vimgrep'
endif
colorscheme onehalfdark
if exists('+termguicolors') && ($COLORTERM == "24bit" || $COLORTERM == "truecolor")
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
let g:terminal_ansi_colors = [
\ '#282c34',
\ '#e06c75',
\ '#98c379',
\ '#e5c07b',
\ '#61afef',
\ '#c678dd',
\ '#56b6c2',
\ '#dcdfe4',
\ '#282c34',
\ '#e06c75',
\ '#98c379',
\ '#e5c07b',
\ '#61afef',
\ '#c678dd',
\ '#56b6c2',
\ '#dcdfe4'
\ ]
endif
set cursorline
set laststatus=2
let mapleader=","
set nonumber
set listchars=trail:.,tab:>_
set list
set wrap
set linebreak
set autoread
set colorcolumn=+1
set shiftwidth=2
set softtabstop=2
au BufRead,BufNewFile *.ipynb setlocal filetype=json
au BufRead,BufNewFile *.md setlocal spell
au BufRead,BufNewFile *.code-workspace setlocal filetype=json
au BufRead,BufNewFile *.csv setlocal nowrap
au BufRead,BufNewFile *.service[a-zA-Z0-9]* setlocal filetype=systemd
syntax on
if &diff
highlight! link DiffText MatchParen
endif
au OptionSet diff highlight! link DiffText MatchParen
set expandtab
set autoindent
set smartindent
filetype plugin indent on
imap jk <Esc>
command Bd b# | bd #
command! BufOnly silent! execute "%bd|e#|bd#"
nnoremap <Leader>b :buffers<CR>:buffer<Space>
nnoremap <Leader>i :!zimports %<CR>:!black %<CR><CR>
nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
nnoremap <Leader>a :Ack!<Space>
" Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
set splitbelow
set splitright
function! GitStatus()
let [a,m,r] = GitGutterGetHunkSummary()
return printf('%s +%d ~%d -%d', FugitiveHead(), a, m, r)
endfunction
let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+'
let g:python_highlight_all = 1
let g:lightline = { 'colorscheme': 'onehalfdark' }
let g:lightline.component_expand = {
\ 'linter_checking': 'lightline#ale#checking',
\ 'linter_infos': 'lightline#ale#infos',
\ 'linter_warnings': 'lightline#ale#warnings',
\ 'linter_errors': 'lightline#ale#errors',
\ 'linter_ok': 'lightline#ale#ok',
\ }
let g:lightline.component_type = {
\ 'linter_checking': 'right',
\ 'linter_infos': 'right',
\ 'linter_warnings': 'warning',
\ 'linter_errors': 'error',
\ 'linter_ok': 'right',
\ }
let g:lightline.component_function = {
\ 'gitstatus': 'GitStatus'
\ }
let g:lightline.active = {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'gitstatus', 'readonly', 'filename', 'modified' ] ],
\ 'right': [ [ 'linter_checking', 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_ok', 'lineinfo' ],
\ [ 'percent' ],
\ [ 'fileformat', 'fileencoding', 'filetype' ] ]
\ }
set noshowmode
" Load all plugins now.
" Plugins need to be added to runtimepath before helptags can be generated.
packloadall
if has('python3')
packadd! jedi-vim
endif
" Load all of the helptags now, after plugins have been loaded.
" All messages and errors will be ignored.
" silent! helptags ALL