Created
November 23, 2017 15:41
-
-
Save jmarceli/a379d89f07734e0c46a544c61177e672 to your computer and use it in GitHub Desktop.
My .vimrc
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
" RELOAD WITHOUT closing vim | |
" :so ~/.vimrc | |
" | |
set nocompatible | |
""""""""""""""""""" | |
" PLUGINS | |
""""""""""""""""""" | |
" Specify a directory for plugins | |
" - For Neovim: ~/.local/share/nvim/plugged | |
" - Avoid using standard Vim directory names like 'plugin' | |
call plug#begin('~/.vim/plugged') | |
" snippets | |
Plug 'sirver/ultisnips' | |
Plug 'honza/vim-snippets' | |
Plug 'rstacruz/vim-ultisnips-css' | |
" autocomplete | |
Plug 'Valloric/YouCompleteMe' | |
" general | |
Plug 'dbakker/vim-projectroot' | |
" comments and files tree | |
Plug 'scrooloose/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'scrooloose/nerdcommenter' | |
" nice status line | |
"Plug 'bling/vim-airline' | |
" general improvements | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-abolish' | |
Plug 'tpope/vim-unimpaired' | |
" tags list (like methods and variables) | |
Plug 'majutsushi/tagbar' | |
" live syntax check | |
"Plug 'scrooloose/syntastic' | |
" faster search than ACK | |
Plug 'rking/ag.vim' | |
" easier replace in multiple files | |
Plug 'dkprice/vim-easygrep' | |
" tags maching (opening with closing) | |
Plug 'tmhedberg/matchit' | |
" HTML5 support | |
Plug 'othree/html5.vim' | |
" SMARTY | |
Plug 'vim-scripts/smarty-syntax' | |
" JAVASCRIPT | |
Plug 'othree/yajs.vim' | |
Plug 'othree/es.next.syntax.vim' | |
"Plug 'isRuslan/vim-es6.vim' | |
Plug 'mxw/vim-jsx' | |
Plug 'pangloss/vim-javascript' " adds indentation support for .jsx | |
Plug 'leafgarland/typescript-vim' " typescript support | |
" Coffeescript support | |
"Plug 'kchmck/vim-coffee-script' | |
" CJSX support (reactJS + Coffeescript) | |
"Plug 'mtscout6/vim-cjsx' | |
" Markdown support | |
Plug 'tpope/vim-markdown' | |
" CSS | |
Plug 'stephenway/postcss.vim' | |
"Plug 'groenewege/vim-less' | |
" Blade | |
Plug 'jwalton512/vim-blade' | |
" NODEJS | |
Plug 'Slava/vim-spacebars' | |
" RAILS | |
" general rails cmds | |
Plug 'tpope/vim-rails' | |
" rails coding style check | |
Plug 'ngmy/vim-rubocop' | |
" haml, sass, scss | |
"Plug 'tpope/vim-haml' | |
" END | |
" PHP | |
" Twig highlighting | |
Plug 'evidens/vim-twig' | |
" PHP debug | |
Plug 'joonty/vdebug' | |
" END | |
" COLORS | |
" original railscasts colorscheme (too dark IMO) | |
Plug 'jpo/vim-railscasts-theme' | |
"Plug 'flazz/vim-colorschemes' | |
"Plug 'altercation/vim-colors-solarized' | |
" END | |
" plugin from http://vim-scripts.org/vim/scripts.html | |
"Plug 'L9' | |
" Git plugin not hosted on GitHub | |
"Plug 'git://git.wincent.com/command-t.git' | |
" git repos on your local machine (i.e. when working on your own plugin) | |
"Plug 'file:///home/gmarik/path/to/plugin' | |
" The sparkup vim script is in a subdirectory of this repo called vim. | |
" Pass the path to set the runtimepath properly. | |
"Plug 'rstacruz/sparkup', {'rtp': 'vim/'} | |
" Avoid a name conflict with L9 | |
"Plug 'user/L9', {'name': 'newL9'} | |
" Initialize plugin system | |
call plug#end() | |
" Brief help | |
" :PlugList - lists configured plugins | |
" :PlugInstall - installs plugins; append `!` to update or just :PlugUpdate | |
" :PlugSearch foo - searches for foo; append `!` to refresh local cache | |
" :PlugClean - confirms removal of unused plugins; append `!` to auto-approve removal | |
" | |
" see :h vundle for more details or wiki for FAQ | |
" Put your non-Plug stuff after this line | |
""""""""""""""""""""""" | |
" GLOBAL CONFIG | |
""""""""""""""""""""""" | |
let mapleader = "," | |
set isk+=- " add dash to word boundaries (for CSS variables) | |
""""""""""""""""""""""" | |
" PLUGIN CONFIGURATION | |
"""""""""""""""""""""" | |
" ULTISNIPS BEGIN | |
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. | |
let g:UltiSnipsExpandTrigger="<tab>" | |
let g:UltiSnipsJumpForwardTrigger="<c-j>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-k>" | |
" If you want :UltiSnipsEdit to split your window. | |
let g:UltiSnipsEditSplit="vertical" | |
" ULTISNIPS END | |
" PROJECTROOT | |
let g:rootmarkers = ['.projectroot', 'docker-compose.yml', '.git', '.hg', '.svn', '.bzr','_darcs','build.xml'] | |
" | |
" NERDTREE TABS BEGIN | |
" Use nerdtree-tabs plugin | |
map <Leader>n :NERDTreeToggle<CR> | |
" hide selected files/folders | |
let NERDTreeIgnore = ['^__pycache__$'] | |
"g:nerdtree_tabs_open_on_gui_startup (default: 1) | |
"Open NERDTree on gvim/macvim startup | |
let g:nerdtree_tabs_open_on_console_startup=1 "(default: 0) | |
"Open NERDTree on console vim startup | |
"let g:nerdtree_tabs_no_startup_for_diff (default: 1) | |
"Do not open NERDTree if vim starts in diff mode | |
"let g:nerdtree_tabs_smart_startup_focus (default: 1) | |
"On startup, focus NERDTree if opening a directory, focus file if opening a file. (When set to 2, always focus file window after startup). | |
"let g:nerdtree_tabs_open_on_new_tab (default: 1) | |
"Open NERDTree on new tab creation (if NERDTree was globally opened by :NERDTreeTabsToggle) | |
"let g:nerdtree_tabs_meaningful_tab_names (default: 1) | |
"Unfocus NERDTree when leaving a tab for descriptive tab names | |
"let g:nerdtree_tabs_autoclose (default: 1) | |
"Close current tab if there is only one window in it and it's NERDTree | |
let g:nerdtree_tabs_synchronize_view=0 "(default: 1) | |
"Synchronize view of all NERDTree windows (scroll and cursor position) | |
"let g:nerdtree_tabs_synchronize_focus (default: 1) | |
"Synchronize focus when switching windows (focus NERDTree after tab switch if and only if it was focused before tab switch) | |
"let g:nerdtree_tabs_focus_on_files (default: 0) | |
"When switching into a tab, make sure that focus is on the file window, not in the NERDTree window. (Note that this can get annoying if you use NERDTree's feature "open in new tab silently", as you will lose focus on the NERDTree.) | |
"let g:nerdtree_tabs_startup_cd (default: 1) | |
"When given a directory name as a command line parameter when launching Vim, :cd into it. | |
"let g:nerdtree_tabs_autofind (default: 0) | |
"Automatically find and select currently opened file in NERDTree. | |
" NERDTREE END | |
"" AIRLINE BEGIN | |
"" vim-airline configuration | |
"set guifont=Inconsolata\ for\ Powerline\ 12 | |
"set laststatus=2 | |
"set t_Co=256 | |
"let g:airline#extensions#tabline#enabled = 1 | |
"let g:airline_powerline_fonts = 1 | |
"let g:Powerline_symbols = 'fancy' | |
"set encoding=utf-8 | |
""set fillchars+=stl:\ ,stlnc:\ | |
""let g:Powerline_mode_V="V·LINE" | |
""let g:Powerline_mode_cv="V·BLOCK" | |
""let g:Powerline_mode_S="S·LINE" | |
""let g:Powerline_mode_cs="S·BLOCK" | |
""let g:airline_theme = 'tomorrow' " breaks vim so used only in gvimrc | |
"let g:airline#extensions#default#section_truncate_width = { | |
"\ 'b': 80, | |
"\ 'x': 100, | |
"\ 'y': 100, | |
"\ 'z': 100, | |
"\ 'warning': 100, | |
"\ } | |
"" AIRLINE END | |
" VDEBUG BEGIN | |
" don't break automatically on first line | |
let g:vdebug_features = { 'max_children': 128 } | |
let g:vdebug_options = { | |
\ 'port' : 9005, | |
\ 'server' : '', | |
\ 'continuous_mode': 1, | |
\ 'break_on_open': 0, | |
\ 'watch_window_style': 'compact', | |
\ } | |
"let g:vdebug_options = {'debug_file': 'vdebug_log', 'debug_file_level': 2,'watch_window_style': 'expanded','marker_default': '*','continuous_mode': 0,'ide_key': '','break_on_open': 1,'on_close': 'detach','path_maps': {'/var/www': '/home/janek/www'},'marker_closed_tree': '+','timeout': 30,'port': 9001,'marker_open_tree': '-','debug_window_level': 1,'server': 'localhost'} | |
function! SetupDebug() | |
let g:vdebug_options['path_maps'] = {'/app': call('projectroot#get', a:000)} | |
" Hack to override vdebug options | |
source ~/.vim/plugged/vdebug/plugin/vdebug.vim | |
endfunction | |
autocmd VimEnter * :call SetupDebug() | |
"nmap <leader>xd :call SetupDebug()<cr> | |
"let g:vdebug_keymap = { 'run' : '<F1>' } | |
"nnoremap <F5> :call SetupDebug() <bar> :VdebugStart <cr> | |
"nnoremap <F2> <ESC>:echo "test" <bar> :echo "test2" <cr> | |
" VDEBUG END | |
" AG.VIM BEGIN | |
" Ag instead of grep | |
" autocmd QuickFixCmdPost *grep* cwindow | |
"set grepprg=ag " use AG instead of grep | |
set grepprg=ag\ --nocolor\ --nogroup\ --column | |
" change grep format | |
set grepformat=%f:%l:%c%m | |
" mappings | |
nmap <leader>a <Esc>:Ag! | |
"nnoremap \ :Ag<SPACE> | |
" use custom ag path | |
let g:ag_prg="ag --column --nogroup --nocolor" | |
" Commented out because of duplication warning | |
" bind \ (backward slash) to grep shortcut | |
"command -nargs=+ -complete=file -bar Ag silent! grep! <args>|cwindow|redraw! | |
" AG.VIM END | |
" TAGBAR BEGIN | |
nmap <leader>b :TagbarToggle<CR> | |
" TAGBAR END | |
" FUGITIVE BEGIN | |
" force vertical diff split (instead of default horizontal) | |
set diffopt+=vertical | |
" FUGITIVE END | |
" SYNTASTIC BEGIN | |
set statusline+=%#warningmsg# | |
set statusline+=%{SyntasticStatuslineFlag()} | |
set statusline+=%* | |
let g:syntastic_always_populate_loc_list = 1 | |
let g:syntastic_auto_loc_list = 1 | |
let g:syntastic_check_on_open = 0 | |
let g:syntastic_check_on_wq = 0 | |
let g:syntastic_html_checkers=[''] " disable HTML checks | |
let g:syntastic_ruby_checkers = ['rubocop'] | |
" SYNTASTIC END | |
" VIM-JSX BEGIN | |
let g:jsx_ext_required = 0 | |
" VIM-JSX END | |
""""""""""""""""""""""""""" | |
" CUSTOM CONFIG | |
""""""""""""""""""""""""""" | |
" each plugin settings entry begins with two empty lines (for readability) | |
set backspace=indent,eol,start " fix backspace | |
set foldenable " enable folding with (open all-close all) - zM, zR, (next-prev) - zj, zk, (open-close) - za, zc | |
"set foldmethod=syntax " automatically fold based on syntax | |
"set foldlevelstart=1 | |
"let javaScript_fold=1 " JavaScript | |
"let perl_fold=1 " Perl | |
"let php_folding=1 " PHP | |
"let r_syntax_folding=1 " R | |
"let ruby_fold=1 " Ruby | |
"let sh_fold_enabled=1 " sh | |
"let vimsyn_folding='af' " Vim script | |
"let xml_syntax_folding=1 " XML | |
"set foldmethod=indent " automatically fold based on indent level | |
set smartindent | |
set nu | |
set ts=2 | |
set shiftwidth=2 | |
set expandtab | |
set autoindent | |
" disables automatic line wrap (very annoying) | |
set textwidth=0 | |
set wrapmargin=0 | |
map <C-d> :t.<CR> | |
map <C-o> :Breakpoint<CR> | |
" nmap - map for normal mode only | |
" tab switching | |
nmap <C-s> :tabn<CR> | |
nmap <C-a> :tabp<CR> | |
" window switching | |
nmap <C-h> <C-w>h | |
nmap <C-j> <C-w>j | |
nmap <C-k> <C-w>k | |
nmap <C-l> <C-w>l | |
" copy paste from system clipboard | |
map <C-v> "+p | |
map <C-c> "+y | |
" paste multiple times after copy | |
xnoremap p pgvy | |
" replace selected text globally with prompt | |
vnoremap <C-r> "hy:%s/<C-r>h//gc<left><left><left> | |
" disable paste by pressing mouse middle button | |
:map <MiddleMouse> <Nop> | |
:imap <MiddleMouse> <Nop> | |
" disable arrow navigation | |
"noremap <Up> <NOP> | |
"noremap <Down> <NOP> | |
"noremap <Left> <NOP> | |
"noremap <Right> <NOP> | |
" disable column/row navigation | |
noremap h <NOP> | |
" noremap j <NOP> | |
" noremap k <NOP> | |
noremap l <NOP> | |
" diffupdate shortcut | |
"command Dfu diffupdate | |
" USE DEFAULT dp instead | |
" disable automatic search wrapping | |
set nowrapscan | |
" map key to delete to the 'black hole' register | |
map <leader>dd "_dd | |
map <leader>d "_d | |
"set background=dark | |
colorscheme railscasts | |
"colorscheme solarized | |
"candystripe | |
"store swap files in separate directory | |
set backupdir=~/.vim/tmp/backup// | |
set directory=~/.vim/tmp/swap// | |
" copy current file name (relative/absolute) to system clipboard | |
if has("mac") || has("gui_macvim") || has("gui_mac") | |
" relative path (src/foo.txt) | |
nnoremap <leader>cf :let @*=expand("%")<CR> | |
" absolute path (/something/src/foo.txt) | |
nnoremap <leader>cF :let @*=expand("%:p")<CR> | |
" filename (foo.txt) | |
nnoremap <leader>ct :let @*=expand("%:t")<CR> | |
" directory name (/something/src) | |
nnoremap <leader>ch :let @*=expand("%:p:h")<CR> | |
endif | |
" copy current file name (relative/absolute) to system clipboard (Linux version) | |
if has("gui_gtk") || has("gui_gtk2") || has("gui_gnome") || has("unix") | |
" relative path (src/foo.txt) | |
nnoremap <leader>cf :let @+=expand("%")<CR> | |
" absolute path (/something/src/foo.txt) | |
nnoremap <leader>cF :let @+=expand("%:p")<CR> | |
" filename (foo.txt) | |
nnoremap <leader>ct :let @+=expand("%:t")<CR> | |
" directory name (/something/src) | |
nnoremap <leader>ch :let @+=expand("%:p:h")<CR> | |
endif | |
" highlight syntax in .tpl files as Twig | |
au BufNewFile,BufRead *.tpl set filetype=html.twig | |
" highlight syntax in .tpl files as Smarty | |
"au BufNewFile,BufRead *.tpl set filetype=smarty | |
" highlight PHP files | |
au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp,*.inc,*.info setf php | |
" highlight Markdown files | |
autocmd BufNewFile,BufReadPost *.md set filetype=markdown | |
"autocmd BufNewFile,BufReadPost *.jsx set filetype=javascript | |
" MACVIM | |
" (DOESNT WORK!!!) | |
if has("gui_macvim") | |
" mvim specific | |
set guifont=Inconsolata\ for\ Powerline\ 20 | |
endif | |
" POWERLINE integration | |
set rtp+=/usr/local/lib/python2.7/site-packages/powerline/bindings/vim/ | |
" Always show statusline | |
set laststatus=2 | |
" | |
" " Use 256 colours (Use this setting only if your terminal supports 256 | |
" colours) | |
set t_Co=256" | |
" POWERLINE end | |
" EASYGREP | |
let g:EasyGrepCommand=1 | |
let g:EasyGrepRecursive=1 | |
let g:EasyGrepFilesToExclude='*.swp,*~,*.reg' | |
" EASYGREP end | |
" rubocop | |
let g:vimrubocop_keymap = 0 | |
nmap <Leader>r :RuboCop<CR> | |
" rubocop END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment