" ██ " ░░ " ██ ██ ██ ██████████ ██████ █████ " ░██ ░██░██░░██░░██░░██░░██░░█ ██░░░██ " ░░██ ░██ ░██ ░██ ░██ ░██ ░██ ░ ░██ ░░ " ░░████ ░██ ░██ ░██ ░██ ░██ ░██ ██ " ░░██ ░██ ███ ░██ ░██░███ ░░█████ " ░░ ░░ ░░░ ░░ ░░ ░░░ ░░░░░ " " " ▓▓▓▓▓▓▓▓▓▓ " ▓ author ▓ Stefan Gaiselmann " ░▓ based ▓ on work of xero " ░▓ code ▓ http://code.xero.nu/dotfiles " ░░░░░░░░░░ " " Use vim settings, rather then vi settings (much better!) " This must be first, because it changes other options as a side effect. set nocompatible filetype plugin indent on " enable detection, plugins and indenting in one step syntax on " Test https://github.com/mintty/mintty/wiki/Tips let &t_ti.="\e[1 q" let &t_SI.="\e[5 q" let &t_EI.="\e[1 q" let &t_te.="\e[0 q" " Inspiried by http://nvie.com/posts/how-i-boosted-my-vim/ " Editing behaviour {{{ set showmode " always show what mode we're currently editing in set nowrap " don't wrap lines set tabstop=4 " a tab is four spaces set softtabstop=4 " when hitting , pretend like a tab is removed, even if spaces set expandtab " expand tabs by default (overloadable per file type later) set shiftwidth=4 " number of spaces to use for autoindenting set shiftround " use multiple of shiftwidth when indenting with '<' and '>' set backspace=indent,eol,start " allow backspacing over everything in insert mode set autoindent " always set autoindenting on set copyindent " copy the previous indentation on autoindenting set number " always show line numbers set showmatch " set show matching parenthesis set ignorecase " ignore case when searching set smartcase " ignore case if search pattern is all lowercase, " case-sensitive otherwise set smarttab " insert tabs on the start of a line according to " shiftwidth, not tabstop set scrolloff=4 " keep 4 lines off the edges of the screen when scrolling set virtualedit=all " allow the cursor to go in to "invalid" places set hlsearch " highlight search terms set incsearch " show search matches as you type " Listchars inspired by Jess Archer " https://github.com/jessarcher/dotfiles/blob/master/nvim/init.vim set list set listchars=tab:▸\ ,trail:· # originally: set nolist " don't show invisible characters by default, " but it is enabled for some file types (see later) set pastetoggle= " when in insert mode, press to go to " paste mode, where you can paste mass data " that won't be autoindented set fileformats="unix,dos,mac" set formatoptions+=1 " When wrapping paragraphs, don't end lines " with 1-letter words (looks stupid) set nrformats= " make and play well with " zero-padded numbers (i.e. don't consider " them octal or hex) set shortmess+=I " hide the launch screen set clipboard=unnamed " normal OS clipboard interaction set autoread " automatically reload files changed outside of Vim " Vim behaviour {{{ set hidden " hide buffers instead of closing them this " means that the current buffer can be put " to background without being written; and " that marks and undo history are preserved set switchbuf=useopen " reveal already opened files from the " quickfix window instead of opening new " buffers set history=1000 " remember more commands and search history set undolevels=1000 " use many muchos levels of undo if v:version >= 730 set undofile " keep a persistent backup file set undodir=~/.vim/.undo,~/tmp,/tmp endif set nobackup " do not keep backup files, it's 70's style cluttering set noswapfile " do not write annoying intermediate swap files, " who did ever restore from swap files anyway? set directory=~/.vim/.tmp,~/tmp,/tmp " store swap files in one of these directories " (in case swapfile is ever turned on) set viminfo='20,\"80 " read/write a .viminfo file, don't store more " than 80 lines of registers set wildmenu " make tab completion for files/buffers act like bash set wildmode=list:full " show a list when pressing tab and complete " first full match set wildignore=*.swp,*.bak,*.pyc,*.class set title " change the terminal's title set visualbell " don't beep set noerrorbells " don't beep set showcmd " show (partial) command in the last line of the screen " this also shows visual selection info set nomodeline " disable mode lines (security measure) set cursorline " underline the current line, for quick orientation " }}} " colorscheme mustang " colorscheme solarized " https://superuser.com/questions/249779/how-to-setup-a-line-length-marker-in-vim-gvim " https://vi.stackexchange.com/questions/356/how-can-i-set-up-a-ruler-at-a-specific-column " set colorcolumn=80 let &colorcolumn="80,".join(range(120,999),",") highlight ColorColumn ctermbg=black " ┏━┓╺┳╸┏━┓╺┳╸╻ ╻┏━┓╻ ╻┏┓╻┏━╸ " ┗━┓ ┃ ┣━┫ ┃ ┃ ┃┗━┓┃ ┃┃┗┫┣╸ " ┗━┛ ╹ ╹ ╹ ╹ ┗━┛┗━┛┗━╸╹╹ ╹┗━╸ " " extension of https://github.com/itchyny/lightline.vim/tree/master set laststatus=2 hi BgColor guibg=#3A3A3A guifg=#ffffff ctermbg=237 ctermfg=255 hi ModColor guibg=#3A3A3A guifg=#afaf00 ctermbg=237 ctermfg=142 hi StatColor guibg=#3a3a3a guifg=#ffffff ctermbg=237 ctermfg=255 hi GitColor guibg=#4e4e4e guifg=#ffffff ctermbg=239 ctermfg=255 hi VoidColor guibg=#222222 guifg=#4e4e4e ctermbg=NONE ctermfg=239 hi TypeColor guibg=#D78700 guifg=#262626 ctermbg=66 ctermfg=235 hi PosColor guibg=#8787AF guifg=#262626 ctermbg=103 ctermfg=235 function! WizardStatus(mode) let statusline="%#BgColor#" if &modified == 1 let statusline.="%#ModColor# »» " else let statusline.=" " endif if &readonly != '' hi StatColor guifg=#af0000 ctermfg=124 endif let statusline.="%#StatColor#%F " let statusline .= '%#VoidColor#▒░ ' let statusline .= "%=%h%w\ %#TypeColor#▓" if &filetype != '' let statusline .="▒ %Y " endif let statusline .="▒ %{&encoding}:%{&fileformat} %#PosColor#▒ %p%% ░ %l/%L\.\%c\ ▒" return statusline endfunction au WinEnter * setlocal statusline=%!WizardStatus('Enter') au WinLeave * setlocal statusline=%!WizardStatus('Leave') set statusline=%!WizardStatus('Enter') function! Colorize(mode) if a:mode == 'i' hi StatColor guibg=#D78700 guifg=#222222 ctermbg=110 ctermfg=235 elseif a:mode == 'r' hi StatColor guibg=#D78700 guifg=#222222 ctermbg=172 ctermfg=235 elseif a:mode == 'v' hi StatColor guibg=#D78700 guifg=#222222 ctermbg=172 ctermfg=235 else hi StatColor guibg=#af0000 guifg=#222222 ctermbg=124 ctermfg=235 endif endfunction au InsertEnter * call Colorize(v:insertmode) au InsertLeave * hi StatColor guibg=#3a3a3a guifg=#ffffff ctermbg=237 ctermfg=255 let g:lightline = { \ 'colorscheme': 'solarized', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'fugitive', 'filename'], ['filesize', 'more' ] ] \ }, \ 'component_function': { \ 'fugitive': 'LightLineFugitive', \ 'readonly': 'LightLineReadonly', \ 'modified': 'LightLineModified', \ 'filename': 'LightLineFilename', \ 'filesize': 'LightLineFilesize', \ 'more': 'AndMore' \ }, \ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" }, \ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" } \ } function! LigthLineModified() if &filetype == "help" return "" elseif &modified return "+" elseif &modifiable return "" else return "" endif endfunction function! LightLineReadonly() if &filetype == "help" return "" elseif &readonly return "" else return "" endif endfunction function! LightLineFugitive() " return exists('*fugitive#head') ? "\ue0a0 ".fugitive#head() : '' " " patched font required " return exists('*fugitive#head') ? "± ".fugitive#head() : '' return exists('*fugitive#head') ? "\ue0a0 ".fugitive#head() : '' endfunction function! LightLineFilename() return ('' != LightLineReadonly() ? LightLineReadonly() . ' ' : '') . \ ('' != expand('%:t') ? expand('%:t') : '[No Name]') . \ ('' != LigthLineModified() ? ' ' .LigthLineModified() : '') endfunction function! LightLineFilesize() let size = getfsize(expand(@%)) return size . ' bytes' endfunction function! AndMore() " return "TODO: more cool stuff!" " return winwidth(0) > 70 ? (&fileformat . ' ' . WebDevIconsGetFileFormatSymbol()) : '' return WebDevIconsGetFileTypeSymbol() "winwidth(0) > 70 ? (&fileformat . ' x ' . WebDevIconsGetFileTypeSymbol()) : 'no ft' endfunction