Last active
July 22, 2021 16:53
-
-
Save RGBD/a121a9c157bed8ef1293 to your computer and use it in GitHub Desktop.
Well, someone asked for it.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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>=[1;2R | |
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