Files
yadm/.vim/vimrc
2024-02-26 12:57:07 +01:00

232 lines
5.3 KiB
VimL

if &compatible
set nocompatible
set modelines=1
endif
call plug#begin('~/.vim/bundle')
Plug 'svermeulen/vim-yoink'
Plug 'will133/vim-dirdiff'
Plug 'jaredgorski/spacecamp'
call plug#end() " required
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set encoding=utf-8
set scrolloff=10
set autoindent
set cino=l1,:0
set showmode
set showcmd
" do not force write on buffer switch
set hidden
" set visualbell
set nowrapscan
set cursorline
set ttyfast
set lazyredraw
set ruler
set backspace=eol,indent,start
" statusline {{{
set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
set laststatus=2
set statusline+=\ "comment to remove trailing space
set number
set relativenumber
" Make Vim to handle long lines nicely.
set wrap
set textwidth=79
set formatoptions=cqrnb1j
syntax on
set showmatch
"set matchtime=3
"Control it with %/s///i - ignore and I - sens
set ignorecase
set smartcase
" %s///g not needed
set gdefault
set hlsearch
set incsearch
set shell=/bin/bash
set path+=**
set updatetime=100
set nospell
set spelllang=en
" Dictionary path, from which the words are being looked up.
set dictionary+=/usr/share/dict/words
set clipboard=unnamed
"set exrc
if exists("+undofile")
if isdirectory($HOME . '/.vim/undo') == 0
:silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
endif
set undodir=~/.vim/undo/
set undofile
endif
let mapleader = "\\"
"nnoremap j gj
"nnoremap k gk
" Get Rid of stupid Goddamned help keys
inoremap <F1> <ESC>
nnoremap <F1> <ESC>
vnoremap <F1> <ESC>
" jj For Quicker Escaping between normal and editing mode
inoremap jj <ESC>
inoremap jk <ESC>
inoremap :w<CR> <Esc>:w<CR>i
" space one line, home,end globally increase/decrease
nnoremap <Home> zc
nnoremap <End> zo
" Map : to ; also in command mode
"nnoremap ; :
" Reselect visual block after incrementing/decrementing
vnoremap <c-a> <c-a>gv
vnoremap <c-x> <c-x>gv
nnoremap <leader>2 <esc>:set tabstop=2 softtabstop=2 shiftwidth=2<cr>
nnoremap <leader>4 <esc>:set tabstop=4 softtabstop=4 shiftwidth=4<cr>
nnoremap <leader>8 <esc>:set tabstop=8 softtabstop=8 shiftwidth=8<cr>
map <F12> :colorscheme random<CR>
nnoremap S :%s//g<LEFT><LEFT>
xnoremap S :s//g<LEFT><LEFT>
xmap <BS> x
" Make pasting done without any indentation break
set pastetoggle=<F3>
" leader Command to remove white space from a file
""nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
" This causes issues with FZF
"tnoremap <Esc> <C-W><C-W>
nnoremap <leader><space> :nohlsearch<cr>
" yoink configuration
nmap <leader>yp <plug>(YoinkPostPasteSwapBack)
nmap <leader>yn <plug>(YoinkPostPasteSwapForward)
nmap p <plug>(YoinkPaste_p)
nmap P <plug>(YoinkPaste_P)
" Wildmenu completion {{{
set wildmenu
set wildmode=list:longest
set wildignore+=.hg,.git,.svn " Version Controls"
set wildignore+=*.aux,*.out,*.toc "Latex Indermediate files"
set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg "Binary Imgs"
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest "Compiled Object files"
set wildignore+=*.spl "Compiled spelling world list"
set wildignore+=*.sw? "Vim swap files"
set wildignore+=*.DS_Store "OSX SHIT"
set wildignore+=*.luac "Lua byte code"
set wildignore+=migrations "Django migrations"
set wildignore+=*.pyc "Python Object codes"
set wildignore+=*.orig "Merge resolution files"
" }}}
match Error /\s\+$\|DU\cPA/
" Removing scrollbars
if !has("gui_running")
set background=dark
colorscheme spacecamp
" To show special characters in Vim
set listchars=tab:▸\ ,trail
set list
hi clear SpellBad
hi SpellBad cterm=underline
"hi Normal ctermbg=None
endif
if &term =~ '256color'
" Disable Background Color Erase (BCE) so that color schemes
" work properly when Vim is used inside tmux and GNU screen.
" set t_ut=
endif
if has("autocmd")
"restore cursor position
autocmd BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
autocmd FileType helpfile set nonumber
autocmd WinLeave * set nocursorline
autocmd WinEnter * set cursorline
" Set vim to save the file on focus out
"au FocusLost * :wa
" Resize Split When the window is resized
au VimResized * :wincmd =
endif
set foldenable
set foldlevelstart=999
set foldnestmax=5
set foldtext=FoldFormat()
set fillchars=fold:\ " comment just to remove trailing
set foldmethod=syntax
if has('folding')
setglobal foldopen+=jump
endif
function! FindAlternate()
let l:ext = 'h'
let l:curr_ext = expand('%:e')
if (l:curr_ext == 'c')
let l:ext = 'h'
elseif (l:curr_ext == 'cpp')
let l:ext = 'h'
elseif (l:curr_ext == 'h')
let l:ext = 'c'
elseif (l:curr_ext == 'hpp')
let l:ext = 'cpp'
endif
let l:file = expand('%:t:r') . '.' . l:ext
:exec 'find ' . l:file
endfunction
nnoremap <F6> :call FindAlternate()<CR>
setglobal complete-=i
setglobal virtualedit=block
setglobal shiftround
set shortmess+=c
set signcolumn=yes
set cmdheight=2
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
"hi None ctermbg=None ctermfg=None
let g:vim_search_pulse_mode = 'pattern'
let g:vim_search_pulse_duration = 400
"Taken from 256_noir readme:
set cursorline
highlight CursorLine cterm=NONE ctermfg=NONE ctermbg=233 guifg=NONE guibg=#121212
autocmd InsertEnter * highlight CursorLine cterm=NONE ctermfg=NONE ctermbg=234 guifg=NONE guibg=#1c1c1c
autocmd InsertLeave * highlight CursorLine cterm=NONE ctermfg=NONE ctermbg=233 guifg=NONE guibg=#121212