" This is my vimrc. There are many like it, but this one is mine. set nocompatible " Must come first because it changes other options. execute pathogen#infect() set t_Co=256 " Set terminal colors syntax enable " Turn on syntax highlighting. filetype plugin indent on " Turn on file type detection. runtime macros/matchit.vim " Load the matchit plugin. set showcmd " Display incomplete commands. set showmode " Display the mode you're in. set backspace=indent,eol,start " Intuitive backspacing. set hidden " Handle multiple buffers better. set wildmenu " Enhanced command line completion. set wildmode=list:longest " Complete files like a shell. set ignorecase " Case-insensitive searching. set smartcase " But case-sensitive if expression contains a capital letter. set number " Show line numbers. set ruler " Show cursor position. set incsearch " Highlight matches as you type. " set hlsearch " Highlight matches. set nowrap " Turn off line wrapping. set scrolloff=3 " Show 3 lines of context around the cursor. set title " Set the terminal's title set visualbell " No beeping. set nobackup " Don't make a backup before overwriting a file. set nowritebackup " And again. set directory=$HOME/.vim/tmp//,. " Keep swap files in one location set tabstop=2 " Global tab width. set shiftwidth=2 " And again, related. set expandtab " Use spaces instead of tabs set laststatus=2 " Show the status line all the time " Useful status information at bottom of screen set statusline=[%n]\ %<%.99f\ %h%w%m%r%y\ %{exists('*CapsLockStatusline')?CapsLockStatusline():''}%=%-16(\ %l,%c-%v\ %)%P " Use :make to execute Ruby files" set makeprg=ruby\ % " Use system clipboard " set clipboard=unnamedplus " Tab mappings. " map tt :tabnew map te :tabedit map tc :tabclose map to :tabonly map tn :tabnext map tp :tabprevious map tf :tabfirst map tl :tablast map tm :tabmove let g:livedown_browser = "epiphany" map md :LivedownToggle " Record macros with qq and play them with space :nnoremap @q cnoremap %% =expand('%:h').'/' " map e :edit %% " map v :view %% " Uncomment to use Jamis Buck's file opening plugin "map t :FuzzyFinderTextMate " Controversial...swap colon and semicolon for easier commands "nnoremap ; : "nnoremap : ; "vnoremap ; : "vnoremap : ; " Automatic fold settings for specific files. Uncomment to use. " autocmd FileType ruby setlocal foldmethod=syntax autocmd FileType css setlocal shiftwidth=2 tabstop=2 autocmd FileType html setlocal shiftwidth=2 tabstop=2 autocmd FileType jade setlocal shiftwidth=2 tabstop=2 autocmd FileType md setlocal shiftwidth=2 tabstop=2 " For the MakeGreen plugin and Ruby RSpec. Uncomment to use. autocmd BufNewFile,BufRead *_spec.rb compiler rspec " let ts=4 sw=4 et let g:indent_guides_start_level = 2 let g:indent_guides_guide_size = 1 " au BufRead,BufNewFile *.json set filetype=json " au! Syntax json source ~/.vim/ftplugin/json.vim au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx " Highlight trailing whitespaces highlight ExtraWhitespace ctermbg=red guibg=red au ColorScheme * highlight ExtraWhitespace guibg=red au BufEnter * match ExtraWhitespace /\s\+$/ au InsertEnter * match ExtraWhitespace /\s\+\%#\@vr :VimroomToggle let g:vimroom_width = 120 " CTags map ct :!/usr/bin/ctags -R --extra=+q . set tags+=gems.tags " Color scheme colorscheme smyck let g:syntastic_mode_map = { 'mode': 'active', 'active_filetypes': ['ruby', 'js', 'javascript', 'ts', 'typescript'], 'passive_filetypes': ['puppet'] } let g:syntastic_disabled_filetypes = ['sass', 'scss'] let g:syntastic_javascript_checkers = ['eslint'] " Highlight the current line when in insert mode :autocmd InsertEnter,InsertLeave * set cul! hi CursorLine cterm=NONE ctermbg=black " Spell-checking and automatic line breaks for Git commit messages autocmd Filetype gitcommit setlocal spell textwidth=72 let loaded_matchparen = 1 " au InsertEnter * hi StatusLine term=reverse ctermbg=1 " au InsertLeave * hi StatusLine term=reverse cterm=none ctermbg=8 ctermfg=15 gui=none guibg=#5D5D5D guifg=#FBFBFB " bind control-l to hashrocket imap =>" " xmpfilter map (xmpfilter-mark) map (xmpfilter-run) " Use normal tabs, not spaces, in Makefiles autocmd filetype make setlocal noexpandtab let g:ycm_server_python_interpreter = '/usr/bin/python3' " TypeScript let g:syntastic_typescript_checkers = ['eslint', 'tsuquyomi'] let g:tsuquyomi_disable_quickfix = 1 " Store swap files etc. in a central location instead of next to source files set directory^=$HOME/.vim/tmp// set noballooneval " " vim-fugitive " let g:fugitive_gitea_domains = ['https://gitea.kosmos.org'] " " COC " let g:coc_global_extensions = ['coc-tsserver'] set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " use for trigger completion and navigate to the next complete item function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~ '\s' endfunction inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh()