Skip to content

Instantly share code, notes, and snippets.

@RGBD
Last active July 22, 2021 16:53
Show Gist options
  • Save RGBD/a121a9c157bed8ef1293 to your computer and use it in GitHub Desktop.
Save RGBD/a121a9c157bed8ef1293 to your computer and use it in GitHub Desktop.
Well, someone asked for it.
set nocompatible
filetype off
call plug#begin('~/.vim/bundle')
"Plug 'gmarik/Vundle.vim'
"# Plugins
"## Appearance
Plug 'altercation/vim-colors-solarized'
"Plug 'vim-scripts/google'
"Plug 'flazz/vim-colorschemes'
"Plug 'file:///home/oleg/projects/vim/railscasts-colorscheme'
"Plug 'jpo/vim-railscasts-theme'
Plug 'nathanaelkane/vim-indent-guides'
"Plug 'jeffkreeftmeijer/vim-numbertoggle'
Plug 'terryma/vim-smooth-scroll'
"## Completion and search
"Plug 'rking/ag.vim'
Plug 'jiangmiao/auto-pairs'
Plug 'kien/ctrlp.vim'
Plug 'tpope/vim-endwise'
Plug 'Valloric/YouCompleteMe' ", { 'for': ['c', 'cpp', 'ruby', 'py'] }
"## Keymaps and improvements
Plug 'junegunn/vim-easy-align'
"Plug 'Lokaltog/vim-easymotion'
Plug 'scrooloose/nerdcommenter'
Plug 'AndrewRadev/splitjoin.vim'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-unimpaired'
"## Integration
"Plug 'tpope/vim-fugitive'
Plug 'christoomey/vim-tmux-navigator'
"Plug 'lyokha/vim-xkbswitch'
Plug 'jamessan/vim-gnupg'
"## Interface
Plug 'bling/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'airblade/vim-gitgutter'
Plug 'majutsushi/tagbar'
Plug 'scrooloose/nerdtree', { 'on': ['NERDTree', 'NERDTreeToggle'] }
"## Language support
"Plug 'sheerun/vim-polyglot'
Plug 'kchmck/vim-coffee-script', { 'for': ['coffee'] }
Plug 'mattn/emmet-vim', { 'for': ['html', 'less', 'slim'] }
"Plug 'git://git.code.sf.net/p/vim-latex/vim-latex'
"Plug 'lervag/vimtex'
Plug 'groenewege/vim-less', { 'for': ['less'] }
Plug 'tpope/vim-markdown', { 'for': ['markdown'] }
Plug 'hynek/vim-python-pep8-indent', { 'for': ['python'] }
Plug 'vim-ruby/vim-ruby', { 'for': ['ruby'] }
Plug 't9md/vim-ruby-xmpfilter', { 'for': ['ruby'] }
"Plug 'vim-scripts/google.vim'
Plug 'vim-scripts/ruby-matchit', { 'for': ['ruby'] }
Plug 'slim-template/vim-slim', { 'for': ['slim'] }
Plug 'vim-scripts/svg.vim', { 'for': ['svg'] }
Plug 'kongo2002/fsharp-vim', { 'for': ['fsharp'] }
"Plug 'pangloss/vim-javascript'
Plug 'leafgarland/typescript-vim' ", { 'for': ['ts'] }
"## Various fixes and patches
"Plug 'file:///home/oleg/projects/vim/fix-sw-indent'
"Plug 'file:///home/oleg/projects/vim/xml-indent'
"Plug 'takac/vim-hardtime'
"Plug 'MarcWeber/vim-addon-local-vimrc'
Plug 'vim-scripts/bufkill.vim'
Plug 'tpope/vim-repeat'
"Plug 'file://' . expand('$HOME/projects/install/web-indent')
call plug#end()
filetype plugin indent on
"# Settings
"## Appearance
set background=dark
set colorcolumn=80
"set cursorcolumn
"set cursorline
set gcr=a:blinkon0 " disable cursor blink
"set history=1000
set laststatus=2 " always have status line
set lazyredraw
"set list listchars=tab:\ \ ,trail:·
set number
set showcmd " show command being entered
set showmode
syntax on
"### Bell
set noerrorbells
set t_vb= " disable blinking
set visualbell
"### Timeout
set timeoutlen=1000 ttimeoutlen=0
"### Gui settings
set guioptions-=m guioptions-=T
set guifont=DejaVu\ Sans\ Mono\ for\ Powerline"\ 11
set mouse=a
set mousemodel=popup_setpos
"## Completion
set wildignorecase
set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
set wildignore+=*vim/backups*
set wildignore+=*sass-cache*
set wildignore+=*DS_Store*
set wildignore+=vendor/rails/**
set wildignore+=vendor/cache/**
set wildignore+=*.gem
"set wildignore+=log/**
set wildignore+=tmp/**
set wildignore+=*.png,*.jpg,*.gif
set wildmenu
set wildmode=longest:full,full " rich command suggestion
"## Folding
set foldmethod=indent
"set foldnestmax=3 " deepest fold is 3 levels
set nofoldenable " dont fold by default
"## Indent
set tabstop=2
set shiftwidth=0
set softtabstop=-1
set expandtab
set cinoptions=g0,N-s,+2s,(0,W2s,j1,J1,:0
"## Scrolling
set scrolloff=3
set sidescrolloff=15
set sidescroll=0
"## Using external files
set secure " don't allow changing files
"set autoread " reload files changed outside vim
set backspace=indent,eol,start " else not working
set hidden " allow hidden buffers
set autoindent
set smartindent
"set smarttab
"let mapleader=","
"set nowrap "Don't wrap lines
"set linebreak "Wrap lines at convenient points
"## Search
set grepprg=git\ grep
let g:grep_cmd_opts = ''
set ignorecase
set smartcase
set incsearch
set hlsearch
"## Temporaty files
"set noswapfile
"set nobackup
"set nowb
" Keep undo history across sessions, by storing in file.
" Only works all the time.
"if has('persistent_undo')
" silent !mkdir ~/.vim/backups > /dev/null 2>&1
" set undodir=~/.vim/backups
" set undofile
"endif
"## Wrapping
set textwidth=79
set nojoinspaces
"# Keybindings
"## Platform specific bindings, add literally
set <S-F3>=
if !has('nvim')
set <A-r>=r
set <A-m>=m
endif
autocmd FileType help,vim nnoremap K :help<Space><C-r><C-w><CR>
noremap ^ 0
noremap 0 ^
"## Auto indent pasted text
nnoremap p p=`]<C-o>
nnoremap P P=`]<C-o>
"## Plain text editor key bindings.
inoremap <silent><S-Tab> <C-o><<
inoremap <F3> <C-o>n
inoremap <S-F3> <C-o>N
nnoremap <Leader><CR> :nohlsearch<CR>
nnoremap <Leader>v :set paste<Cr>i<C-r>+<Esc>:set nopaste<Cr>
"## Moving lines holding Alt
nnoremap <silent><A-j> :m .+1<CR>==
nnoremap <silent><A-k> :m .-2<CR>==
inoremap <silent><A-j> <Esc>:m .+1<CR>==gi
inoremap <silent><A-k> <Esc>:m .-2<CR>==gi
vnoremap <silent><A-j> :m '>+1<CR>gv=gv
vnoremap <silent><A-k> :m '<-2<CR>gv=gv
"## I MUST learn VIM. The hardest way.
:noremap <up> <nop>
:noremap <down> <nop>
:noremap <left> <<
:noremap <right> >>
:inoremap <up> <nop>
:inoremap <down> <nop>
:inoremap <left> <nop>
:inoremap <right> <nop>
"# Plugin Settings
"## vim-airline
let g:airline_powerline_fonts = !(&term=~'linux') " neat arrows
let g:airline#extensions#tabline#enabled = 1 " use buffers
let g:airline_theme = 'solarized'
"## solarized
let g:solarized_contrast = "high"
silent! colorscheme solarized
"## hardtime
let g:hardtime_showmsg=1
let g:hardtime_maxcount=5
"autocmd BufEnter * HardTimeOn
"## vim-indent-guides
if exists(":IndentGuidesEnable")
autocmd Vimenter * IndentGuidesEnable()
endif
"## xkb-switch
let g:XkbSwitchLib = '/usr/local/lib/libxkbswitch.so'
let g:XkbSwitchIMappings = ['ru']
let g:XkbSwitchEnabled=1
"## YouCompleteMe settings
let g:ycm_error_symbol=">>"
let g:ycm_warning_symbol="!!"
let g:ycm_allow_changing_update_time=1
let g:ycm_autoclose_preview_window_after_insertion=1
let g:ycm_confirm_extra_conf=0
let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py'
let g:ycm_collect_identifiers_from_tags_files=1
let g:ycm_server_python_interpreter='/usr/bin/python2'
autocmd FileType c nnoremap <buffer> <silent> <C-]> :YcmCompleter GoTo<cr>
"## EasyMotion
map <Leader> <Plug>(easymotion-prefix)
"## NERDTree
let g:nerdtree_tabs_autoclose=1
"## EasyAlign
vmap <CR> <Plug>(EasyAlign)
"## Gitgutter
let g:gitgutter_max_signs=1000
"## CtrlP
let g:ctrlp_user_command = 'ag %s -i --nocolor --nogroup --hidden
\ --ignore .git
\ --ignore .svn
\ --ignore .hg
\ --ignore .DS_Store
\ --ignore "**/*.pyc"
\ -g ""'
"## smooth-scroll
nnoremap <silent> <C-u> :call smooth_scroll#up (&scroll , 15, 2)<CR>
nnoremap <silent> <C-d> :call smooth_scroll#down(&scroll , 15, 2)<CR>
nnoremap <silent> <C-b> :call smooth_scroll#up (&scroll*2, 15, 4)<CR>
nnoremap <silent> <C-f> :call smooth_scroll#down(&scroll*2, 15, 4)<CR>
"## ruby-xmpfilter
autocmd FileType ruby nmap <buffer> <A-m> <Plug>(xmpfilter-mark)
autocmd FileType ruby xmap <buffer> <A-m> <Plug>(xmpfilter-mark)
autocmd FileType ruby imap <buffer> <A-m> <Plug>(xmpfilter-mark)
autocmd FileType ruby nmap <buffer> <A-r> <Plug>(xmpfilter-run)
autocmd FileType ruby xmap <buffer> <A-r> <Plug>(xmpfilter-run)
autocmd FileType ruby imap <buffer> <A-r> <Plug>(xmpfilter-run)
"# Extra commands
"## Save buffer on exit
autocmd VimLeave * call system("xsel -ib", getreg('+'))
"## Insert date and time
:inoremap <F4> <C-r>=split(system('date -I'), "\n")[0]<CR>
:inoremap <F5> <C-r>=split(system('date -Is'), "\n")[0]<CR>
"## Vimrc specific
au BufRead ~/.vimrc nnoremap <C-x>
\ :exe getline(".")<CR>
au BufRead ~/.vimrc vnoremap <C-x>
\ :<C-w>exe join(getline("'<", "'>"), "\n")<CR>
au BufRead ~/.*rc,~/.tmux.conf nnoremap <C-i>
\ :lvimgrep /^.\?#\+ \w.*$/ % \| lopen <CR>
au FileType qf nnoremap <buffer> <CR> <CR>:lclose<CR>
"# Vim save session and quit
function! SaveSessionAndQuit()
wall
mksession! ~/tmp/mks
quit
endfunction
command! Q :call SaveSessionAndQuit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment