darkcloud-nvimconfig/vim/config/settings.vim

176 lines
7.3 KiB
VimL

"============================================================"
" "
" Darkcloud Vim Config: main settings "
" "
" By: Kevin MacMartin (prurigro@gmail.com) "
" Website: https://github.com/prurigro/darkcloud-vimconfig "
" "
" License: MIT "
" "
"============================================================"
"GVIM SETTINGS: {{{
set guicursor+=a:blinkon0 "disable the blinking cursor
set guioptions=e "use the gui to render the list of open tabs
set guioptions+=g "make inactive menu items grey
set guioptions+=i "have the gui use the vim icon
set guioptions+=p "enable pointer callbacks for X11 (required by some WMs)
set guioptions+=h "prevent the cursor jumping to the longest line while scrolling
set winaltkeys=no "don't select the menu when pressing the alt-keys
"}}}
"COMPATIBILITY SETTINGS: {{{
set nocompatible "disable vi-compatibility settings
set backspace=indent,eol,start "enables/configures standard backspace behaviour
"use the '*' register as well as the the '+' register if it's available too
set clipboard=unnamed
if has('unnamedplus')
set clipboard+=unnamedplus
endif
"fancy mouse reporting with xterm2 fallback
if !has('nvim')
if has("mouse_sgr")
set ttymouse=sgr
else
set ttymouse=xterm2
endif
endif
set mouse=a "enables mouse functionality with extended capabilities
"8 colours in $TERM=linux, 256 elsewhere
if $TERM =~ '^linux$'|set t_Co=8|elseif !has("gui_running")|set t_Co=256|endif
set ttyfast "assume a fast connection to the terminal for better rendering
"configure to primarily use utf8
if has("multi_byte")
if &termencoding == ""
let &termencoding = &encoding
endif
set encoding=utf-8
setglobal fileencoding=utf-8
endif
set fileformats=unix,dos,mac "set compatible line endings in order of preference
"}}}
"GENERAL SETTINGS: {{{
"FILE: {{{
filetype plugin indent on "enable filetype-based auto-indentation
syntax on "enable syntax highlighting
set formatoptions=roqnl12 "how automatic formatting is to be done
set diffopt=foldcolumn:0,filler "vimdiff default settings
set foldmethod=syntax foldcolumn=1 foldlevel=2 "fold layers 3 and deeper
set nofoldenable "disable folds by default
set tw=80 "set the default text width to 80 when nothing overrides this
set maxmempattern=10000 "increase the maximum amount of memory available for pattern matching
"}}}
"USER INTERFACE: {{{
set laststatus=2 showcmd statusline=%F%m%r%h%w[%L][%{&ff}]%y[%p%%][%04l,%04v] "statusline init and config
set winheight=1 winminheight=1 "set the minimum window height to 1 lines
set winwidth=1 winminwidth=1 "set the minimum window width to 1 columns
set noshowmode "don't display mode information handled by lightline
set lazyredraw "don't redraw the screen while macros are executing
set noequalalways "don't force splits to be equal in size when closing or opening one
set number "enable line numbers
set nowrap "disable line wrapping
set cursorline cursorcolumn "enable row/column highlighting
set visualbell "notify visually instead of with an audible bell
set splitright "add new tiles on the right (and not left) when added
set scrolloff=5 "scroll vertically when the cursor is 5 characters away from the top or bottom
set sidescroll=1 sidescrolloff=5 "scroll horizontally when the cursor is 5 chars away from the edge
set list listchars=tab:>-,trail:- "display tabs as: >--- and trailing spaces as: -
set showmatch "show matching open bracket when closed bracket is inserted
set matchtime=5 "the amount of time before the matching bracket will highlight
let &showbreak = "" "character to prepend to wrapped lines when linewrapping is enabled
"enable tab completion in command mode and configure how it handles extensions
set completeopt=longest,menuone
set wildmenu
set wildmode=list:longest,full
set wildignore=*.dll,*.o,*.obj,*.bak,*.exe,*.pyc,*.jpg,*.gif,*.png
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
"}}}
"BEHAVIOUR: {{{
set history=250 "size of the undo history
set whichwrap=b,s,<,>,[,] "scrolling left/right off current line wraps to the next/previous
set smarttab expandtab autoindent tabstop=4 shiftwidth=4 "configure tabs
set hlsearch incsearch ignorecase smartcase "configure how search behaves
set timeout timeoutlen=500 "how long before timing out for mappings
set ttimeout ttimeoutlen=100 "how long before timing out for terminal key codes
set nomodeline "disable the use of file-based modelines as these are insecure
"create ~/.vim/swap if necessary, then use as default swap file location
if exists('*mkdir') && !isdirectory($HOME.'/.vim/swap')
call mkdir($HOME.'/.vim/swap','p')
endif
set directory=$HOME/.vim/swap,.,/var/tmp,/tmp
"FUNCTIONS: {{{
"enable the auto-creation of missing folders in a save path
if !exists('*s:MakeNewDir')
function s:MakeNewDir(fullpath, buf)
if empty(getbufvar(a:buf,'&buftype')) && a:fullpath!~#'\v^\w+\:\/'
let dirpath = fnamemodify(a:fullpath,':h')
if !isdirectory(dirpath)
call mkdir(dirpath,'p')
endif
endif
endfunction
augroup WriteDir
autocmd!
autocmd BufWritePre * :call s:MakeNewDir(expand('<afile>'),+expand('<abuf>'))
augroup END
endif
"update the current filetype when a file is renamed
augroup RenameCheckFiletype
autocmd!
autocmd BufFilePost * filetype detect
augroup END
"functions to create a split using 33% and 66% of the height
function s:SPResize33()
sp|wincmd =|q
endfunction
function s:sp33()
sp|call s:SPResize33()|wincmd j
endfunction
command! -buffer SP33 call s:sp33()
function s:sp66()
sp|wincmd j|call s:SPResize33()
endfunction
command! -buffer SP66 call s:sp66()
"functions to create a vertical split using 33% and 66% width
function s:VSResize66()
vs|wincmd =|q
endfunction
function s:vs66()
vs|call s:VSResize66()
endfunction
command! -buffer VS66 call s:vs66()
function s:vs33()
vs|wincmd h|call s:VSResize66()|wincmd l
endfunction
command! -buffer VS33 call s:vs33()
"}}}
"}}}
"}}}