From a99ac4ac27efecc8b089240742ec29bd1d3e7e49 Mon Sep 17 00:00:00 2001 From: Mikhail Kiselev Date: Thu, 16 Apr 2026 09:51:26 +0300 Subject: [PATCH] init: add vim config --- .gitignore | 1 + README.md | 11 ++ colors/molokai.vim | 276 +++++++++++++++++++++++++++++++++++++++++++++ menu.vim | 5 + vimrc | 212 ++++++++++++++++++++++++++++++++++ 5 files changed, 505 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 colors/molokai.vim create mode 100644 menu.vim create mode 100644 vimrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ddf2379 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +bundle/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..17150cb --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Mike Bell's VIM settings + +Installation: +```sh + git clone https://git.movida.biz/bell/dotvim.git ~/.vim + git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim +``` +Create symlinks: +```sh + ln -s ~/.vim/vimrc ~/.vimrc +``` diff --git a/colors/molokai.vim b/colors/molokai.vim new file mode 100644 index 0000000..6d97053 --- /dev/null +++ b/colors/molokai.vim @@ -0,0 +1,276 @@ +" Vim color file +" +" Author: Tomas Restrepo +" https://github.com/tomasr/molokai +" +" Note: Based on the Monokai theme for TextMate +" by Wimer Hazenberg and its darker variant +" by Hamish Stuart Macpherson +" + +hi clear + +if version > 580 + " no guarantees for version 5.8 and below, but this makes it stop + " complaining + hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="molokai" + +if exists("g:molokai_original") + let s:molokai_original = g:molokai_original +else + let s:molokai_original = 0 +endif + + +hi Boolean guifg=#AE81FF +hi Character guifg=#E6DB74 +hi Number guifg=#AE81FF +hi String guifg=#E6DB74 +hi Conditional guifg=#F92672 gui=bold +hi Constant guifg=#AE81FF gui=bold +hi Cursor guifg=#000000 guibg=#F8F8F0 +hi iCursor guifg=#000000 guibg=#F8F8F0 +hi Debug guifg=#BCA3A3 gui=bold +hi Define guifg=#66D9EF +hi Delimiter guifg=#8F8F8F +hi DiffAdd guibg=#13354A +hi DiffChange guifg=#89807D guibg=#4C4745 +hi DiffDelete guifg=#960050 guibg=#1E0010 +hi DiffText guibg=#4C4745 gui=italic,bold + +hi Directory guifg=#A6E22E gui=bold +hi Error guifg=#E6DB74 guibg=#1E0010 +hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold +hi Exception guifg=#A6E22E gui=bold +hi Float guifg=#AE81FF +hi FoldColumn guifg=#465457 guibg=#000000 +hi Folded guifg=#465457 guibg=#000000 +hi Function guifg=#A6E22E +hi Identifier guifg=#FD971F +hi Ignore guifg=#808080 guibg=bg +hi IncSearch guifg=#C4BE89 guibg=#000000 + +hi Keyword guifg=#F92672 gui=bold +hi Label guifg=#E6DB74 gui=none +hi Macro guifg=#C4BE89 gui=italic +hi SpecialKey guifg=#66D9EF gui=italic + +hi MatchParen guifg=#000000 guibg=#FD971F gui=bold +hi ModeMsg guifg=#E6DB74 +hi MoreMsg guifg=#E6DB74 +hi Operator guifg=#F92672 + +" complete menu +hi Pmenu guifg=#66D9EF guibg=#000000 +hi PmenuSel guibg=#808080 +hi PmenuSbar guibg=#080808 +hi PmenuThumb guifg=#66D9EF + +hi PreCondit guifg=#A6E22E gui=bold +hi PreProc guifg=#A6E22E +hi Question guifg=#66D9EF +hi Repeat guifg=#F92672 gui=bold +hi Search guifg=#000000 guibg=#FFE792 +" marks +hi SignColumn guifg=#A6E22E guibg=#232526 +hi SpecialChar guifg=#F92672 gui=bold +hi SpecialComment guifg=#7E8E91 gui=bold +hi Special guifg=#66D9EF guibg=bg gui=italic +if has("spell") + hi SpellBad guisp=#FF0000 gui=undercurl + hi SpellCap guisp=#7070F0 gui=undercurl + hi SpellLocal guisp=#70F0F0 gui=undercurl + hi SpellRare guisp=#FFFFFF gui=undercurl +endif +hi Statement guifg=#F92672 gui=bold +hi StatusLine guifg=#455354 guibg=fg +hi StatusLineNC guifg=#808080 guibg=#080808 +hi StorageClass guifg=#FD971F gui=italic +hi Structure guifg=#66D9EF +hi Tag guifg=#F92672 gui=italic +hi Title guifg=#ef5939 +hi Todo guifg=#FFFFFF guibg=bg gui=bold + +hi Typedef guifg=#66D9EF +hi Type guifg=#66D9EF gui=none +hi Underlined guifg=#808080 gui=underline + +hi VertSplit guifg=#808080 guibg=#080808 gui=bold +hi VisualNOS guibg=#403D3D +hi Visual guibg=#403D3D +hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold +hi WildMenu guifg=#66D9EF guibg=#000000 + +hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E +hi TabLine guibg=#1B1D1E guifg=#808080 gui=none + +if s:molokai_original == 1 + hi Normal guifg=#F8F8F2 guibg=#272822 + hi Comment guifg=#75715E + hi CursorLine guibg=#3E3D32 + hi CursorLineNr guifg=#FD971F gui=none + hi CursorColumn guibg=#3E3D32 + hi ColorColumn guibg=#3B3A32 + hi LineNr guifg=#BCBCBC guibg=#3B3A32 + hi NonText guifg=#75715E + hi SpecialKey guifg=#75715E +else + hi Normal guifg=#F8F8F2 guibg=#1B1D1E + hi Comment guifg=#7E8E91 + hi CursorLine guibg=#293739 + hi CursorLineNr guifg=#FD971F gui=none + hi CursorColumn guibg=#293739 + hi ColorColumn guibg=#232526 + hi LineNr guifg=#465457 guibg=#232526 + hi NonText guifg=#465457 + hi SpecialKey guifg=#465457 +end + +" +" Support for 256-color terminal +" +if &t_Co > 255 + if s:molokai_original == 1 + hi Normal ctermbg=234 + hi CursorLine ctermbg=235 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + else + hi Normal ctermfg=252 ctermbg=233 + hi CursorLine ctermbg=234 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + endif + hi Boolean ctermfg=135 + hi Character ctermfg=144 + hi Number ctermfg=135 + hi String ctermfg=144 + hi Conditional ctermfg=161 cterm=bold + hi Constant ctermfg=135 cterm=bold + hi Cursor ctermfg=16 ctermbg=253 + hi Debug ctermfg=225 cterm=bold + hi Define ctermfg=81 + hi Delimiter ctermfg=241 + + hi DiffAdd ctermbg=24 + hi DiffChange ctermfg=181 ctermbg=239 + hi DiffDelete ctermfg=162 ctermbg=53 + hi DiffText ctermbg=102 cterm=bold + + hi Directory ctermfg=118 cterm=bold + hi Error ctermfg=219 ctermbg=89 + hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold + hi Exception ctermfg=118 cterm=bold + hi Float ctermfg=135 + hi FoldColumn ctermfg=67 ctermbg=16 + hi Folded ctermfg=67 ctermbg=16 + hi Function ctermfg=118 + hi Identifier ctermfg=208 cterm=none + hi Ignore ctermfg=244 ctermbg=232 + hi IncSearch ctermfg=193 ctermbg=16 + + hi keyword ctermfg=161 cterm=bold + hi Label ctermfg=229 cterm=none + hi Macro ctermfg=193 + hi SpecialKey ctermfg=81 + + hi MatchParen ctermfg=233 ctermbg=208 cterm=bold + hi ModeMsg ctermfg=229 + hi MoreMsg ctermfg=229 + hi Operator ctermfg=161 + + " complete menu + hi Pmenu ctermfg=81 ctermbg=16 + hi PmenuSel ctermfg=255 ctermbg=242 + hi PmenuSbar ctermbg=232 + hi PmenuThumb ctermfg=81 + + hi PreCondit ctermfg=118 cterm=bold + hi PreProc ctermfg=118 + hi Question ctermfg=81 + hi Repeat ctermfg=161 cterm=bold + hi Search ctermfg=0 ctermbg=222 cterm=NONE + + " marks column + hi SignColumn ctermfg=118 ctermbg=235 + hi SpecialChar ctermfg=161 cterm=bold + hi SpecialComment ctermfg=245 cterm=bold + hi Special ctermfg=81 + if has("spell") + hi SpellBad ctermbg=52 + hi SpellCap ctermbg=17 + hi SpellLocal ctermbg=17 + hi SpellRare ctermfg=none ctermbg=none cterm=reverse + endif + hi Statement ctermfg=161 cterm=bold + hi StatusLine ctermfg=238 ctermbg=253 + hi StatusLineNC ctermfg=244 ctermbg=232 + hi StorageClass ctermfg=208 + hi Structure ctermfg=81 + hi Tag ctermfg=161 + hi Title ctermfg=166 + hi Todo ctermfg=231 ctermbg=232 cterm=bold + + hi Typedef ctermfg=81 + hi Type ctermfg=81 cterm=none + hi Underlined ctermfg=244 cterm=underline + + hi VertSplit ctermfg=244 ctermbg=232 cterm=bold + hi VisualNOS ctermbg=238 + hi Visual ctermbg=235 + hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold + hi WildMenu ctermfg=81 ctermbg=16 + + hi Comment ctermfg=59 + hi CursorColumn ctermbg=236 + hi ColorColumn ctermbg=236 + hi LineNr ctermfg=250 ctermbg=236 + hi NonText ctermfg=59 + + hi SpecialKey ctermfg=59 + + if exists("g:rehash256") && g:rehash256 == 1 + hi Normal ctermfg=252 ctermbg=234 + hi CursorLine ctermbg=236 cterm=none + hi CursorLineNr ctermfg=208 cterm=none + + hi Boolean ctermfg=141 + hi Character ctermfg=222 + hi Number ctermfg=141 + hi String ctermfg=222 + hi Conditional ctermfg=197 cterm=bold + hi Constant ctermfg=141 cterm=bold + + hi DiffDelete ctermfg=125 ctermbg=233 + + hi Directory ctermfg=154 cterm=bold + hi Error ctermfg=222 ctermbg=233 + hi Exception ctermfg=154 cterm=bold + hi Float ctermfg=141 + hi Function ctermfg=154 + hi Identifier ctermfg=208 + + hi Keyword ctermfg=197 cterm=bold + hi Operator ctermfg=197 + hi PreCondit ctermfg=154 cterm=bold + hi PreProc ctermfg=154 + hi Repeat ctermfg=197 cterm=bold + + hi Statement ctermfg=197 cterm=bold + hi Tag ctermfg=197 + hi Title ctermfg=203 + hi Visual ctermbg=238 + + hi Comment ctermfg=244 + hi LineNr ctermfg=239 ctermbg=235 + hi NonText ctermfg=239 + hi SpecialKey ctermfg=239 + endif +end + +" Must be at the end, because of ctermbg=234 bug. +" https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ +set background=dark diff --git a/menu.vim b/menu.vim new file mode 100644 index 0000000..3d60e04 --- /dev/null +++ b/menu.vim @@ -0,0 +1,5 @@ +menu Encoding.koi8-r :e ++enc=koi8-r ++ff=unix +menu Encoding.windows-1251 :e ++enc=cp1251 ++ff=dos +menu Encoding.cp866 :e ++enc=cp866 ++ff=dos +menu Encoding.utf-8 :e ++enc=utf8 +menu Encoding.koi8-u :e ++enc=koi8-u ++ff=unix diff --git a/vimrc b/vimrc new file mode 100644 index 0000000..adc7c57 --- /dev/null +++ b/vimrc @@ -0,0 +1,212 @@ +" Required settings +set nocompatible +filetype off + +set rtp+=~/.vim/bundle/Vundle.vim +set rtp+=/opt/homebrew/opt/fzf + +call vundle#begin() + +" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +" Plugins +Plugin 'morhetz/gruvbox' +Plugin 'preservim/nerdtree' +Plugin 'tpope/vim-fugitive' +Plugin 'tpope/vim-surround' +Plugin 'tpope/vim-commentary' +Plugin 'ryanoasis/vim-devicons' +Plugin 'vim-airline/vim-airline' +Plugin 'vim-syntastic/syntastic' + +" All of your Plugins must be added before the following line +call vundle#end() +filetype plugin indent on + +" Search options +set incsearch +set ignorecase +set showmatch +set hlsearch + +" History options +set history=1000 +set showcmd + +" Indent options +set autoindent +set smartindent + +" Common options +set guioptions= +set showmode +set showtabline=0 +set smartcase +set autochdir +set number +set ruler +set wrap linebreak nolist +set textwidth=80 +set cursorline + +" Force 256 color support +set t_Co=256 + +" Enable syntax highlighting +syntax enable +syntax on + +" Set syntax highlight for specified file types +autocmd BufRead,BufNewFile *.conf setf dosini +autocmd BufRead,BufNewFile *.cnf setf dosini + +" Set tab sizes and use spaces instead of tabs +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 +set expandtab +set smarttab + +" Encoding and file format order +set ffs=unix,dos,mac +set fencs=utf-8,cp1251,koi8-r,ucs-2,cp866 + +" Disable mouse support in terminal mode +if !has('gui_running') +set mouse= +endif + +" Fix keyboard mapping for and buttons +map [H +cmap [H +imap [H +map [F +cmap [F +imap [F + +" Save and exit in Insert and Normal mode +inoremap :wq +nnoremap :wq + +" Toggle NERDTree open and close in Normal mode +nnoremap :NERDTreeToggle + +" Have nerdtree ignore certain files and directories. +let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$'] + +" Map to comment line in Normal, Visual and Insert modes. +nmap CommentaryLine +vmap CommentaryLine +imap CommentaryLine + +" Map (Ctrl+u) to undo the changes made since you typed in Insert mode. +" Start a new change before using this mapping. Normally Ctrl+u while in Insert mode +" would delete the text without undo history and it would be lost forever. +inoremap u + +" You can split the window in Vim by typing :split or :vsplit. +" Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l. +nnoremap j +nnoremap k +nnoremap h +nnoremap l + +" Resize split windows using arrow keys by pressing: +" CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT. +noremap + +noremap - +noremap > +noremap < + +" Wildmenu +set wildmenu +set wildmode=full +set wildoptions=pum +runtime! menu.vim +set wildcharm= +nnoremap :emenu + +" Set colorscheme +colorscheme molokai +let g:molokai_original = 1 +let g:rehash256 = 1 + +" Airline options +let g:airline_powerline_fonts = 1 +let g:airline#extensions#keymap#enabled = 0 +let g:airline_section_z = "\ue0a1:%l/%L Col:%c" +let g:Powerline_symbols='unicode' +let g:airline#extensions#xkblayout#enabled = 0 +let g:airline#extensions#syntastic#enabled = 1 + +" Syntastic options +let g:syntastic_always_populate_loc_list = 1 +let g:syntastic_auto_loc_list = 1 +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 0 + +" Change mode cursor color in xterm +if &term =~ "xterm-256color\\|rxvt" + let &t_SI = "\033]Pl00d7ff\033\\" + let &t_SR = "\033]Plf00000\033\\" + let &t_EI = "\033]Plff8708\033\\" + silent !echo -ne "\033]Pla0522d\033\\" + autocmd VimLeave * silent !echo -ne "\033]Plc1ffc1\033\\" +endif + +" Show tabs and trails +set list +set listchars=tab:--,trail:. + +" Override theme color settings for tabs and trails +function! MyHighlights() abort + highlight NonText ctermbg=None ctermfg=DarkGrey + highlight SpecialKey ctermbg=None ctermfg=DarkGrey +endfunction + +augroup MyColors + autocmd! + autocmd ColorScheme * call MyHighlights() +augroup END + +" Jump to the last position when reopening a file +if has("autocmd") + au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") + \| exe "normal! g'\"" | endif +endif + +" Cleaning up tabs and spaces in file +function! RemoveTrailingSpaces() + %s/\s\+$//e + %s/ + //ge +endfunction + +function! ConvertTabsToSpaces() + %retab +endfunction + +function! CleanFile() + call ConvertTabsToSpaces() + call RemoveTrailingSpaces() +endfunction + +" Key binding \f to clean up file +nmap f :call CleanFile() + +" Fold lines starting with input arg +" function! FoldSomething(lnum) +" let line1=getline(a:lnum) +" if line2=~#'^\s*;' +" return >1 +" endif +" return = +" endfunction + +"set foldexpr=FoldSomething(v:lnum) +" set foldmethod=expr +" set foldcolumn=3 +" finish + +" command! FL :call FoldSomething()