diff --git a/config/nvim/general.vim b/config/nvim/general.vim index f040ce8..ce3cc5a 100644 --- a/config/nvim/general.vim +++ b/config/nvim/general.vim @@ -1,9 +1,5 @@ -" drop vi-compatibility -set nocompatible " disable autocmd set secure -" use utf8 only -set encoding=utf8 " file/directory matching set wildmode=list:longest,full @@ -19,24 +15,6 @@ set history=1000 " increase count of possible undos set undolevels=1000 -" encrypt buffers when saved to files -if exists('+cryptmethod') - set cryptmethod=blowfish -endif - -" enable fast terminal for tmux but not for ssh connection -if &term =~# '^screen' && !exists('SSH_CONNECTION') - set ttyfast -endif - -" enable automatic file detection, plugin and indention support -if has('autocmd') - filetype plugin indent on -endif - -" use utf8 encoding for all files and recognize latin1 -set fileencodings=utf-8,latin1 - " use unix line-endings and recognize dos endings set fileformats=unix,dos @@ -114,7 +92,7 @@ set number " show cursor position all the time set ruler -" show tabs all the time +" show vim tabs all the time set showtabline=2 " show currently typed command @@ -134,7 +112,6 @@ set updatetime=300 set timeoutlen=500 " copy paste between vim and everything else -" TODO: check whether the 'plus' suffix works with plain vim set clipboard=unnamedplus " Misc diff --git a/setup.sh b/setup.sh index 2aad4a9..4937942 100755 --- a/setup.sh +++ b/setup.sh @@ -44,18 +44,19 @@ link() link pam_environment ~/.pam_environment # application-specific config -if installed nvim || installed vim; then - echo "Setting up nvim:" - - mkdir -p ~/.config - link config/nvim ~/.config/nvim - - echo -fi if installed vim; then echo "Setting up vim:" link vimrc ~/.vimrc + link vim ~/.vim + + echo +fi +if installed nvim; then + echo "Setting up nvim:" + + mkdir -p ~/.config + link config/nvim ~/.config/nvim echo fi diff --git a/vim/colors/dichromatic.vim b/vim/colors/dichromatic.vim new file mode 100644 index 0000000..5011d6e --- /dev/null +++ b/vim/colors/dichromatic.vim @@ -0,0 +1,161 @@ +" dichromatic.vim -- Vim color scheme. +" Author: Romain Lafourcade (romainlafourcade@gmail.com) +" Webpage: https://raw.githubusercontent.com/romainl/vim-dichromatic/master/colors/dichromatic.vim +" Description: A 'dark' colorscheme for color blind vimmers. But not only. + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "dichromatic" + +if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running") + hi Normal ctermbg=232 ctermfg=252 cterm=NONE guibg=#080808 guifg=#D0D0D0 gui=NONE + hi NonText ctermbg=NONE ctermfg=240 cterm=NONE guibg=NONE guifg=#585858 gui=NONE + hi Comment ctermbg=NONE ctermfg=244 cterm=NONE guibg=NONE guifg=#808080 gui=NONE + hi Constant ctermbg=NONE ctermfg=168 cterm=NONE guibg=NONE guifg=#D75F87 gui=NONE + hi Error ctermbg=15 ctermfg=89 cterm=reverse guibg=#FFFFFF guifg=#87005F gui=reverse + hi Identifier ctermbg=NONE ctermfg=133 cterm=NONE guibg=NONE guifg=#AF5FAF gui=NONE + hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE + hi PreProc ctermbg=NONE ctermfg=186 cterm=NONE guibg=NONE guifg=#DFDF87 gui=NONE + hi Special ctermbg=NONE ctermfg=15 cterm=NONE guibg=NONE guifg=#FFFFFF gui=NONE + hi Statement ctermbg=NONE ctermfg=133 cterm=NONE guibg=NONE guifg=#AF5FAF gui=NONE + hi String ctermbg=NONE ctermfg=142 cterm=NONE guibg=NONE guifg=#AFAF00 gui=NONE + hi Todo ctermbg=NONE ctermfg=NONE cterm=reverse guibg=NONE guifg=NONE gui=reverse + hi Type ctermbg=NONE ctermfg=116 cterm=NONE guibg=NONE guifg=#87D7D7 gui=NONE + hi Underlined ctermbg=NONE ctermfg=NONE cterm=underline guibg=NONE guifg=NONE gui=underline + hi Number ctermbg=NONE ctermfg=168 cterm=NONE guibg=NONE guifg=#D75F87 gui=NONE + hi StatusLine ctermbg=15 ctermfg=240 cterm=NONE guibg=#FFFFFF guifg=#585858 gui=NONE + hi StatusLineNC ctermbg=240 ctermfg=15 cterm=NONE guibg=#585858 guifg=#FFFFFF gui=NONE + hi VertSplit ctermbg=240 ctermfg=240 cterm=NONE guibg=#585858 guifg=#585858 gui=NONE + hi TabLine ctermbg=240 ctermfg=15 cterm=NONE guibg=#585858 guifg=#FFFFFF gui=NONE + hi TabLineFill ctermbg=240 ctermfg=240 cterm=NONE guibg=#585858 guifg=#585858 gui=NONE + hi TabLineSel ctermbg=15 ctermfg=240 cterm=NONE guibg=#FFFFFF guifg=#585858 gui=NONE + hi Title ctermbg=NONE ctermfg=72 cterm=NONE guibg=NONE guifg=#5FAF87 gui=NONE + hi LineNr ctermbg=NONE ctermfg=116 cterm=NONE guibg=NONE guifg=#87D7D7 gui=NONE + hi Cursor ctermbg=15 ctermfg=232 cterm=NONE guibg=#FFFFFF guifg=#080808 gui=NONE + hi CursorColumn ctermbg=89 ctermfg=NONE cterm=NONE guibg=#87005F guifg=NONE gui=NONE + hi CursorLine ctermbg=236 ctermfg=NONE cterm=NONE guibg=#303030 guifg=NONE gui=NONE + hi CursorLineNr ctermbg=236 ctermfg=NONE cterm=NONE guibg=#303030 guifg=NONE gui=NONE + hi helpLeadBlank ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE + hi helpNormal ctermbg=NONE ctermfg=NONE cterm=NONE guibg=NONE guifg=NONE gui=NONE + hi Visual ctermbg=116 ctermfg=232 cterm=NONE guibg=#87D7D7 guifg=#080808 gui=NONE + hi VisualNOS ctermbg=133 ctermfg=232 cterm=NONE guibg=#AF5FAF guifg=#080808 gui=NONE + hi Pmenu ctermbg=186 ctermfg=232 cterm=NONE guibg=#DFDF87 guifg=#080808 gui=NONE + hi PmenuSbar ctermbg=142 ctermfg=186 cterm=NONE guibg=#AFAF00 guifg=#DFDF87 gui=NONE + hi PmenuSel ctermbg=133 ctermfg=232 cterm=NONE guibg=#AF5FAF guifg=#080808 gui=NONE + hi PmenuThumb ctermbg=133 ctermfg=133 cterm=NONE guibg=#AF5FAF guifg=#AF5FAF gui=NONE + hi FoldColumn ctermbg=NONE ctermfg=72 cterm=NONE guibg=NONE guifg=#5FAF87 gui=NONE + hi Folded ctermbg=NONE ctermfg=248 cterm=NONE guibg=NONE guifg=#A8A8A8 gui=NONE + hi WildMenu ctermbg=53 ctermfg=15 cterm=NONE guibg=#00005F guifg=#FFFFFF gui=NONE + hi SpecialKey ctermbg=NONE ctermfg=186 cterm=NONE guibg=NONE guifg=#DFDF87 gui=NONE + hi DiffAdd ctermbg=232 ctermfg=111 cterm=reverse guibg=#080808 guifg=#87afff gui=reverse + hi DiffChange ctermbg=232 ctermfg=188 cterm=reverse guibg=#080808 guifg=#dfdfdf gui=reverse + hi DiffDelete ctermbg=232 ctermfg=222 cterm=reverse guibg=#080808 guifg=#ffdf87 gui=reverse + hi DiffText ctermbg=232 ctermfg=145 cterm=reverse guibg=#080808 guifg=#afafaf gui=reverse + hi IncSearch ctermbg=232 ctermfg=133 cterm=reverse guibg=#080808 guifg=#AF5FAF gui=reverse + hi Search ctermbg=186 ctermfg=232 cterm=NONE guibg=#DFDF87 guifg=#080808 gui=NONE + hi Directory ctermbg=NONE ctermfg=72 cterm=NONE guibg=NONE guifg=#5FAF87 gui=NONE + hi MatchParen ctermbg=240 ctermfg=186 cterm=NONE guibg=#585858 guifg=#DFDF87 gui=NONE + hi SpellBad ctermbg=89 ctermfg=232 cterm=NONE guibg=#87005F guifg=#080808 gui=NONE guisp=#87005F + hi SpellCap ctermbg=72 ctermfg=232 cterm=NONE guibg=#5FAF87 guifg=#080808 gui=NONE guisp=#5FAF87 + hi SpellLocal ctermbg=142 ctermfg=232 cterm=NONE guibg=#AFAF00 guifg=#080808 gui=NONE guisp=#AFAF00 + hi SpellRare ctermbg=133 ctermfg=232 cterm=NONE guibg=#AF5FAF guifg=#080808 gui=NONE guisp=#AF5FAF + hi ColorColumn ctermbg=133 ctermfg=NONE cterm=NONE guibg=#AF5FAF guifg=NONE gui=NONE + hi signColumn ctermbg=NONE ctermfg=186 cterm=NONE guibg=NONE guifg=#DFDF87 gui=NONE + hi ErrorMsg ctermbg=89 ctermfg=15 cterm=NONE guibg=#87005F guifg=#FFFFFF gui=NONE + hi ModeMsg ctermbg=142 ctermfg=232 cterm=NONE guibg=#AFAF00 guifg=#080808 gui=NONE + hi MoreMsg ctermbg=NONE ctermfg=142 cterm=NONE guibg=NONE guifg=#AFAF00 gui=NONE + hi Question ctermbg=NONE ctermfg=72 cterm=NONE guibg=NONE guifg=#5FAF87 gui=NONE + hi WarningMsg ctermbg=168 ctermfg=232 cterm=NONE guibg=#D75F87 guifg=#080808 gui=NONE + hi QuickFixLine ctermbg=15 ctermfg=240 cterm=NONE guibg=#FFFFFF guifg=#585858 gui=NONE + +elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16 + set t_Co=16 + + hi Normal ctermbg=black ctermfg=grey cterm=NONE + hi NonText ctermbg=NONE ctermfg=darkgrey cterm=NONE + hi Comment ctermbg=NONE ctermfg=darkgrey cterm=NONE + hi Constant ctermbg=NONE ctermfg=red cterm=NONE + hi Error ctermbg=white ctermfg=darkmagenta cterm=reverse + hi Identifier ctermbg=NONE ctermfg=darkred cterm=NONE + hi Ignore ctermbg=NONE ctermfg=NONE cterm=NONE + hi PreProc ctermbg=NONE ctermfg=yellow cterm=NONE + hi Special ctermbg=NONE ctermfg=white cterm=NONE + hi Statement ctermbg=NONE ctermfg=darkred cterm=NONE + hi String ctermbg=NONE ctermfg=darkyellow cterm=NONE + hi Todo ctermbg=NONE ctermfg=NONE cterm=reverse + hi Type ctermbg=NONE ctermfg=cyan cterm=NONE + hi Underlined ctermbg=NONE ctermfg=NONE cterm=underline + hi Number ctermbg=NONE ctermfg=red cterm=NONE + hi StatusLine ctermbg=white ctermfg=darkgrey cterm=NONE + hi StatusLineNC ctermbg=darkgrey ctermfg=white cterm=NONE + hi VertSplit ctermbg=darkgrey ctermfg=darkgrey cterm=NONE + hi TabLine ctermbg=darkgrey ctermfg=white cterm=NONE + hi TabLineFill ctermbg=darkgrey ctermfg=darkgrey cterm=NONE + hi TabLineSel ctermbg=white ctermfg=darkgrey cterm=NONE + hi Title ctermbg=NONE ctermfg=green cterm=NONE + hi LineNr ctermbg=NONE ctermfg=cyan cterm=NONE + hi Cursor ctermbg=white ctermfg=black cterm=NONE + hi CursorColumn ctermbg=darkmagenta ctermfg=NONE cterm=NONE + hi CursorLine ctermbg=black ctermfg=NONE cterm=NONE + hi CursorLineNr ctermbg=black ctermfg=NONE cterm=NONE + hi helpLeadBlank ctermbg=NONE ctermfg=NONE cterm=NONE + hi helpNormal ctermbg=NONE ctermfg=NONE cterm=NONE + hi Visual ctermbg=cyan ctermfg=black cterm=NONE + hi VisualNOS ctermbg=darkred ctermfg=black cterm=NONE + hi Pmenu ctermbg=yellow ctermfg=black cterm=NONE + hi PmenuSbar ctermbg=darkyellow ctermfg=yellow cterm=NONE + hi PmenuSel ctermbg=darkred ctermfg=black cterm=NONE + hi PmenuThumb ctermbg=darkred ctermfg=darkred cterm=NONE + hi FoldColumn ctermbg=NONE ctermfg=green cterm=NONE + hi Folded ctermbg=NONE ctermfg=grey cterm=NONE + hi WildMenu ctermbg=darkblue ctermfg=white cterm=NONE + hi SpecialKey ctermbg=NONE ctermfg=yellow cterm=NONE + hi DiffAdd ctermbg=black ctermfg=blue cterm=reverse + hi DiffChange ctermbg=black ctermfg=grey cterm=reverse + hi DiffDelete ctermbg=black ctermfg=yellow cterm=reverse + hi DiffText ctermbg=black ctermfg=darkgray cterm=reverse + hi IncSearch ctermbg=black ctermfg=darkred cterm=reverse + hi Search ctermbg=yellow ctermfg=black cterm=NONE + hi Directory ctermbg=NONE ctermfg=green cterm=NONE + hi MatchParen ctermbg=darkgrey ctermfg=yellow cterm=NONE + hi SpellBad ctermbg=darkmagenta ctermfg=black cterm=NONE + hi SpellCap ctermbg=green ctermfg=black cterm=NONE + hi SpellLocal ctermbg=darkyellow ctermfg=black cterm=NONE + hi SpellRare ctermbg=darkred ctermfg=black cterm=NONE + hi ColorColumn ctermbg=darkred ctermfg=NONE cterm=NONE + hi signColumn ctermbg=NONE ctermfg=yellow cterm=NONE + hi ErrorMsg ctermbg=darkmagenta ctermfg=white cterm=NONE + hi ModeMsg ctermbg=darkyellow ctermfg=black cterm=NONE + hi MoreMsg ctermbg=NONE ctermfg=darkyellow cterm=NONE + hi Question ctermbg=NONE ctermfg=green cterm=NONE + hi WarningMsg ctermbg=red ctermfg=black cterm=NONE + hi QuickFixLine ctermbg=white ctermfg=darkgrey cterm=NONE +endif + +hi link StatusLineTerm StatusLine +hi link StatusLineTermNC StatusLineNC + +let g:terminal_ansi_colors = [ + \ '#080808', + \ '#AF5FAF', + \ '#008700', + \ '#AFAF00', + \ '#00005F', + \ '#87005F', + \ '#87D7D7', + \ '#D0D0D0', + \ '#808080', + \ '#D75F87', + \ '#5FAF87', + \ '#DFDF87', + \ '#87D7D7', + \ '#D75F87', + \ '#87D7D7', + \ '#FFFFFF', + \ ] + +" Generated with RNB (https://gist.github.com/romainl/5cd2f4ec222805f49eca) diff --git a/vim/general.vim b/vim/general.vim new file mode 100644 index 0000000..d0ff70b --- /dev/null +++ b/vim/general.vim @@ -0,0 +1,139 @@ +" drop vi-compatibility +set nocompatible +" disable autocmd +set secure +" use utf8 only +set encoding=utf8 + +" file/directory matching +set wildmode=list:longest,full +" ignore case when completing +if exists('+wildignorecase') + set wildignorecase +endif +" ignorelist +set wildignore=*.o,*.d,*.so,*.class,*.aux,*.log,*.out,*.toc,*.pdf,*.pyc + +" increase command history +set history=1000 +" increase count of possible undos +set undolevels=1000 + +" encrypt buffers when saved to files +if exists('+cryptmethod') + set cryptmethod=blowfish +endif + +" enable fast terminal for tmux but not for ssh connection +if &term =~# '^screen' && !exists('SSH_CONNECTION') + set ttyfast +endif + +" enable automatic file detection, plugin and indention support +if has('autocmd') + filetype plugin indent on +endif + +" use utf8 encoding for all files and recognize latin1 +set fileencodings=utf-8,latin1 + +" use unix line-endings and recognize dos endings +set fileformats=unix,dos + +" tabs +set tabstop=4 +set shiftwidth=4 +set autoindent +set smartindent +set smarttab + +" allow backspacing over autoindent and line breaks +set backspace=indent,eol,start + +" already display matches while searching +set incsearch +" only check for case if the searched word contains a capital +set ignorecase +set smartcase +" highlight all matches. use to remove the highlights +set hlsearch + +" treat hyphenated words as a single word +set iskeyword+=- + +" syntax folding +if has('folding') + set foldmethod=syntax + " only use folding when there is enough space +" if &columns > 80 +" set foldcolumn=2 +" endif + set foldlevel=99 + + " dont open fold for block movements + set foldopen-=block +endif + +" allow buffers with changes to be hidden +set hidden + +" correct splitting +if has('vertsplit') + set splitright + set splitbelow +endif + +" Visual +" set text color for dark terminal background +set background=dark + +" activate syntax highlighting +if has('syntax') + syntax enable +endif + +" set colorscheme +colorscheme dichromatic + +" display line at which the current is positioned +if exists('+cursorline') + set cursorline + " remove line and make the line bold instead + highlight CursorLine term=bold cterm=bold + highlight CursorLineNR term=bold cterm=bold ctermbg=darkgrey +endif + +" display warning column at 81 and 121 +let &colorcolumn="81,121" +highlight ColorColumn ctermbg=235 guibg=#2d2d2d + +" display line numbers +set number + +" show cursor position all the time +set ruler + +" show vim tabs all the time +set showtabline=2 + +" show currently typed command +set showcmd + +" define characters to display when using 'set list' +set listchars=tab:→\ ,trail:∙,eol:¬,extends:❯,precedes:❮,nbsp:␣ + +" increase completion performance and reduce time until timeout +set updatetime=300 +set timeoutlen=500 + +" copy paste between vim and everything else +set clipboard=unnamedplus + +" Misc +set mouse=n + +" remove windows ^M when the encoding gets messed up +noremap m mmHmt:%s///ge'tzt'm + +" add convenience command for force-saving read-only files +cmap w!! w !sudo tee % diff --git a/vim/keybindings.vim b/vim/keybindings.vim new file mode 100644 index 0000000..b2ba8bc --- /dev/null +++ b/vim/keybindings.vim @@ -0,0 +1,16 @@ +" allow easier pane switching +nnoremap +nnoremap +nnoremap +nnoremap + +" allow easier pane resizing +nnoremap :resize -2 +nnoremap :resize +2 +nnoremap :vertical resize -2 +nnoremap :vertical resize +2 + +" use TAB to switch to next buffers +nnoremap :bnext +" use Shift-TAB to switch to previous buffers +nnoremap :bprevious diff --git a/vimrc b/vimrc index d2d7526..ce6afd3 100644 --- a/vimrc +++ b/vimrc @@ -1,4 +1,2 @@ -" use existing nvim configuration for vim -set runtimepath^=~/.config/nvim runtimepath+=~/.config/nvim/after -let &packpath = &runtimepath -source ~/.config/nvim/init.vim +source $HOME/.vim/general.vim +source $HOME/.vim/keybindings.vim