Skip to content

Instantly share code, notes, and snippets.

@yuq-1s
Created July 7, 2018 10:00
Show Gist options
  • Save yuq-1s/939c82ab2ce4c0af5b8fedca3157b332 to your computer and use it in GitHub Desktop.
Save yuq-1s/939c82ab2ce4c0af5b8fedca3157b332 to your computer and use it in GitHub Desktop.
My vimrc
" Leader
let mapleader = " "
set backspace=2 " Backspace deletes like most programs in insert mode
set nobackup
set nowritebackup
set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287
set history=50
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
set laststatus=2 " Always display the status line
set autowrite " Automatically :write before running commands
set hlsearch
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if ( &t_Co > 2 || has("gui_running")) && !exists("syntax_on")
syntax on
endif
if filereadable(expand("~/.vimrc.bundles"))
source ~/.vimrc.bundles
endif
" Load matchit.vim, but only if the user hasn't installed a newer version.
if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# ''
runtime! macros/matchit.vim
endif
filetype plugin indent on
augroup vimrcEx
autocmd!
" When editing a file, always jump to the last known cursor position.
" Don't do it for commit messages, when the position is invalid, or when
" inside an event handler (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
" Set syntax highlighting for specific file types
autocmd BufRead,BufNewFile Appraisals set filetype=ruby
autocmd BufRead,BufNewFile *.md set filetype=markdown
autocmd BufRead,BufNewFile .{jscs,jshint,eslint}rc set filetype=json
augroup END
" When the type of shell script is /bin/sh, assume a POSIX-compatible
" shell for syntax highlighting purposes.
let g:is_posix = 1
" Softtabs, 2 spaces
set tabstop=2
set shiftwidth=2
set shiftround
set expandtab
" Display extra whitespace
set list listchars=tab:»·,trail:·,nbsp:·
" Use one space, not two, after punctuation.
set nojoinspaces
" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher
if executable('ag')
" Use Ag over Grep
set grepprg=ag\ --nogroup\ --nocolor
" Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
let g:ctrlp_user_command = 'ag -Q -l --nocolor --hidden -g "" %s'
" ag is fast enough that CtrlP doesn't need to cache
let g:ctrlp_use_caching = 0
endif
" Make it obvious where 80 characters is
set textwidth=80
set colorcolumn=+1
" Numbers
set number
set numberwidth=5
" Tab completion
" will insert tab at beginning of line,
" will use completion if not at beginning
set wildmode=list:longest,list:full
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
inoremap <Tab> <c-r>=InsertTabWrapper()<cr>
inoremap <S-Tab> <c-n>
" Switch between the last two files
nnoremap <leader><leader> <c-^>
" " Get off my lawn
" nnoremap <Left> :echoe "Use h"<CR>
" nnoremap <Right> :echoe "Use l"<CR>
" nnoremap <Up> :echoe "Use k"<CR>
" nnoremap <Down> :echoe "Use j"<CR>
" " vim-test mappings
" nnoremap <silent> <Leader>t :TestFile<CR>
" nnoremap <silent> <Leader>s :TestNearest<CR>
" nnoremap <silent> <Leader>l :TestLast<CR>
" nnoremap <silent> <Leader>a :TestSuite<CR>
" nnoremap <silent> <leader>gt :TestVisit<CR>
" Run commands that require an interactive shell
nnoremap <Leader>r :RunInInteractiveShell<space>
" Treat <li> and <p> tags like the block tags they are
let g:html_indent_tags = 'li\|p'
" Open new split panes to right and bottom, which feels more natural
set splitbelow
set splitright
" Quicker window movement
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l
" configure syntastic syntax checking to check on open as well as save
let g:syntastic_check_on_open=1
let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"]
let g:syntastic_eruby_ruby_quiet_messages =
\ {"regex": "possibly useless use of a variable in void context"}
" Set spellfile to location that is guaranteed to exist, can be symlinked to
" Dropbox or kept in Git and managed outside of thoughtbot/dotfiles using rcm.
set spellfile=$HOME/.vim-spell-en.utf-8.add
" Autocomplete with dictionary words when spell check is on
set complete+=kspell
" Always use vertical diffs
set diffopt+=vertical
" Local config
if filereadable($HOME . "/.vimrc.local")
source ~/.vimrc.local
endif
" Config vim syntax checking for c++11 standard
let g:syntastic_cpp_compiler = 'g++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -Wall -Wextra -Wpedantic'
" enabling cpp header file checking
let g:syntastic_cpp_check_header = 1
"Use 256 color
set t_Co=256
" disable Syntastic Checking and check manually with <C-w>+E.
" let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': [],'passive_filetypes': [] }
" nnoremap <C-w>E :SyntasticCheck<CR>
" :SyntasticToggleMode<CR>
let &termencoding=&encoding
set fileencodings=utf-8,gb18030,gbk,gb2312,big5
" python import https://github.com/mgedmin/python-imports.vim
" map <F5> :ImportName <C-R><C-W><CR>
" map <C-F5> :ImportNameHere <C-R><C-W><CR>
" Leave vim if only the nerdtree is opened
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" run Neomake on the current file on every write
autocmd! BufWritePost * Neomake
" Use syntax checker of youcompleteme for C/C++ and disable neomakes'
let g:ycm_global_ycm_extra_conf = "~/.config/dotfiles/vim/plugin/youcompleteme/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"
let g:neomake_c_enabled_makers = []
" let g:neomake_c_clang_maker = {
" \ 'args': ['-Wall', '-Wextra', '-Weverything', '-pedantic'],
" \ }
let g:neomake_cpp_enabled_makers = []
" let g:neomake_cpp_clang_maker = {
" \ 'args': ['-Wall', '-Wextra', '-Weverything', '-pedantic',
" \ '-std=c++1y', '-Wno-sign-conversion'],
" \ }
call plug#begin('~/.config/dotfiles/vim/plugin')
" Plug 'commentary.vim'
Plug 'scrooloose/nerdcommenter'
" Plug 'nginx.vim'
" Plug 'LeonB/vim-nginx'
Plug 'godlygeek/tabular'
Plug 'scrooloose/nerdtree'
Plug 'valloric/youcompleteme'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-fugitive'
Plug 'pbrisbin/vim-mkdir'
Plug 'kien/ctrlp.vim'
Plug 'tpope/vim-surround'
Plug 'slim-template/vim-slim'
Plug 'neomake/neomake'
" Plug 'vim-syntastic/syntastic', {'on': []}
Plug 'vim-airline/vim-airline'
Plug 'Vimjas/vim-python-pep8-indent'
"Plug 'vim-scripts/Conque-GDB'
Plug 'lervag/vimtex'
" Plug 'tpope/vim-commentary'
Plug 'szw/vim-tags'
" Plug 'moll/vim-node'
" Plug 'jelera/vim-javascript-syntax'
Plug 'JuliaEditorSupport/julia-vim'
Plug 'chiphogg/vim-prototxt'
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
call plug#end()
cnoreabbrev <expr> W ((getcmdtype() is# ':' && getcmdline() is# 'W')?('w'):('W'))
let g:ycm_server_python_interpreter = 'python2'
"let g:ycm_server_keep_logfiles = 1
"let g:ycm_server_log_level = 'debug'
set nowrap
set tags=./tags,tags;$HOME
" set my alias of train.py to train
autocmd BufNewFile,BufRead train set filetype=python
" LaTeX template file
autocmd BufNewFile,BufRead *.cls set filetype=tex
au BufRead,BufNewFile *.cls setfiletype=tex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment