Skip to content

Instantly share code, notes, and snippets.

@seungdols
Created July 8, 2016 01:00
Show Gist options
  • Save seungdols/d43bea19ccf5fd8b85c1b726b5f6dc24 to your computer and use it in GitHub Desktop.
Save seungdols/d43bea19ccf5fd8b85c1b726b5f6dc24 to your computer and use it in GitHub Desktop.
now vimrc info
" ----------------------------------------------------------------------
" | General Settings |
" ----------------------------------------------------------------------
set nocompatible " Don't make vim vi-compatibile
syntax on " Enable syntax highlighting
if has("autocmd")
filetype plugin indent on
" │ │ └──── Enable file type detection
" │ └───────── Enable loading of indent file
" └─────────────── Enable loading of plugin files
endif
set autoindent " Copy indent to the new line
set backspace=indent " ┐
set backspace+=eol " │ Allow `backspace`
set backspace+=start " ┘ in insert mode
set backupdir=~/.vim/backups " Set directory for backup files
set backupskip=/tmp/* " ┐ Don't create backups
set backupskip+=/private/tmp/* " ┘ for certain files
set clipboard=unnamed " ┐
" │ Use the system clipboard
if has("unnamedplus") " │ as the default register
set clipboard+=unnamedplus " │
endif " ┘
set cpoptions+=$ " When making a change, don't
" redisplay the line, and instead,
" put a `$` sign at the end of
" the changed text
set colorcolumn=73 " Highlight certain column(s)
set cursorline " Highlight the current line
set directory=~/.vim/swaps " Set directory for swap files
set encoding=utf-8 nobomb " Use UTF-8 without BOM
set history=5000 " Increase command line history
set hlsearch " Enable search highlighting
set ignorecase " Ignore case in search patterns
set incsearch " Highlight search pattern as
" it is being typed
set laststatus=2 " Always show the status line
set lazyredraw " Do not redraw the screen while
" executing macros, registers
" and other commands that have
" not been typed
set listchars=tab:▸\ " ┐
set listchars+=trail:· " │ Use custom symbols to
set listchars+=eol:↴ " │ represent invisible characters
set listchars+=nbsp:_ " ┘
set magic " Enable extended regexp
set mousehide " Hide mouse pointer while typing
set noerrorbells " Disable error bells
set nojoinspaces " When using the join command,
" only insert a single space
" after a `.`, `?`, or `!`
set nostartofline " Kept the cursor on the same column
set number " Show line number
set numberwidth=5 " Increase the minimal number of
" columns used for the `line number`
set report=0 " Report the number of lines changed
set ruler " Show cursor position
set scrolloff=5 " When scrolling, keep the cursor
" 5 lines below the top and 5 lines
" above the bottom of the screen
set shortmess=aAItW " Avoid all the hit-enter prompts
set showcmd " Show the command being typed
set showmode " Show current mode
set spelllang=en_us " Set the spellchecking language
set smartcase " Override `ignorecase` option
" if the search pattern contains
" uppercase characters
set synmaxcol=2500 " Limit syntax highlighting (this
" avoids the very slow redrawing
" when files contain long lines)
set tabstop=4 " ┐
set softtabstop=4 " │ Set global <TAB> settings
set shiftwidth=4 " │ http://vimcasts.org/e/2
set expandtab " ┘
set ttyfast " Enable fast terminal connection
set undodir=~/.vim/undos " Set directory for undo files
set undofile " Automatically save undo history
set virtualedit=all " Allow cursor to be anywhere
set visualbell " ┐
set noerrorbells " │ Disable beeping and window flashing
set t_vb= " ┘ https://vim.wikia.com/wiki/Disable_beeping
set wildmenu " Enable enhanced command-line
" completion (by hitting <TAB> in
" command mode, Vim will show the
" possible matches just above the
" command line with the first
" match highlighted)
set winminheight=0 " Allow windows to be squashed
" ----------------------------------------------------------------------
" | Plugins |
" ----------------------------------------------------------------------
" Use Vundle to manage the vim plugins
" https://github.com/gmarik/Vundle.vim
" Disable file type detection
" (required by Vundle)
filetype off
" Set the runtime path to include Vundle
set runtimepath+=~/.vim/plugins/Vundle.vim
" Initialize Vundle and specify the path
" where the plugins should be installed
call vundle#begin("~/.vim/plugins")
" Let Vundle manage Vundle (this is important!)
Plugin 'gmarik/Vundle.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'ap/vim-css-color'
Plugin 'chrisbra/unicode.vim'
Plugin 'editorconfig/editorconfig-vim'
Plugin 'godlygeek/tabular'
Plugin 'jelera/vim-javascript-syntax'
Plugin 'kien/ctrlp.vim'
Plugin 'marijnh/tern_for_vim'
Plugin 'mattn/emmet-vim'
Plugin 'mattn/webapi-vim'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'othree/html5.vim'
Plugin 'plasticboy/vim-markdown'
Plugin 'raimondi/delimitmate'
Plugin 'scrooloose/nerdtree'
Plugin 'scrooloose/syntastic'
Plugin 'shougo/neocomplcache.vim'
Plugin 'shougo/neosnippet'
Plugin 'shougo/neosnippet-snippets'
Plugin 'shutnik/jshint2.vim'
Plugin 'tomtom/tcomment_vim'
Plugin 'tpope/vim-commentary'
Plugin 'tpope/vim-fugitive'
Plugin 'tpope/vim-repeat'
Plugin 'tpope/vim-surround'
call vundle#end()
filetype on
" ----------------------------------------------------------------------
" | Plugins - Emmet |
" ----------------------------------------------------------------------
" Redefine trigger key for Emmet
" http://docs.emmet.io/cheat-sheet/
let g:user_emmet_leader_key="<C-E>"
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" Load custom Emmet snippets
" http://docs.emmet.io/customization/snippets/
let g:user_emmet_settings = webapi#json#decode(join(readfile(expand("~/.vim/snippets/emmet.json")), "\n"))
" ----------------------------------------------------------------------
" | Plugins - Indent Guides |
" ----------------------------------------------------------------------
" Set custom indent colors
" https://github.com/nathanaelkane/vim-indent-guides#setting-custom-indent-colors
let g:indent_guides_auto_colors = 0
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd
\ guibg=#00323D
\ ctermbg=Magenta
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven
\ guibg=#073642
\ ctermbg=DarkMagenta
" ----------------------------------------------------------------------
" | Plugins - Markdown |
" ----------------------------------------------------------------------
" Disable Folding
" https://github.com/plasticboy/vim-markdown#disable-folding
let g:vim_markdown_folding_disabled=1
" ----------------------------------------------------------------------
" | Plugins - NeoComplCache |
" ----------------------------------------------------------------------
" Enable `neocomplcache` by default
" https://github.com/Shougo/neocomplcache.vim#installation
let g:neocomplcache_enable_at_startup=1
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" Make `<TAB>` autocomplete
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" ----------------------------------------------------------------------
" | Plugins - Syntastic |
" ----------------------------------------------------------------------
" Inform Syntastic which checkers to use based on file types
" https://github.com/scrooloose/syntastic#3-faq
let g:syntastic_html_checkers = [ "jshint" ]
let g:syntastic_javascript_checkers = [ "jshint" ]
" Disable syntax checking by default
let g:syntastic_mode_map = {
\ "active_filetypes": [],
\ "mode": "passive",
\ "passive_filetypes": []
\}
" ----------------------------------------------------------------------
" | Helper Functions |
" ----------------------------------------------------------------------
function! GetGitBranchName()
let branchName = ""
if exists("g:loaded_fugitive")
let branchName = "[" . fugitive#head() . "]"
endif
return branchName
endfunction
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function! StripTrailingWhitespaces()
" Save last search and cursor position
let searchHistory = @/
let cursorLine = line(".")
let cursorColumn = col(".")
" Strip trailing whitespaces
%s/\s\+$//e
" Restore previous search history and cursor position
let @/ = searchHistory
call cursor(cursorLine, cursorColumn)
endfunction
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function! ToggleLimits()
" [51,73]
" - git commit message
" http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
" [81]
" - general use
if ( &colorcolumn == "73" )
set colorcolumn+=51,81
else
set colorcolumn-=51,81
endif
endfunction
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function! ToggleRelativeLineNumbers()
if ( &relativenumber == 1 )
set number
else
set relativenumber
endif
endfunction
" ----------------------------------------------------------------------
" | Automatic Commands |
" ----------------------------------------------------------------------
if has("autocmd")
" Autocommand Groups
" http://learnvimscriptthehardway.stevelosh.com/chapters/14.html
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" Automatically reload the configurations from
" the `~/.vimrc` file whenever they are changed
augroup auto_reload_vim_configs
autocmd!
autocmd BufWritePost vimrc source $MYVIMRC
augroup END
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" Use relative line numbers
" http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/
augroup relative_line_numbers
autocmd!
" Automatically switch to absolute line numbers when vim loses focus
autocmd FocusLost * :set number
" Automatically switch to relative line numbers when vim gains focus
autocmd FocusGained * :set relativenumber
" Automatically switch to absolute line numbers when vim is in insert mode
autocmd InsertEnter * :set number
" Automatically switch to relative line numbers when vim is in normal mode
autocmd InsertLeave * :set relativenumber
augroup END
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" Automatically strip the trailing whitespaces when files are saved
augroup strip_trailing_whitespaces
" List of file types that use the trailing whitespaces:
"
" * Markdown
" https://daringfireball.net/projects/markdown/syntax#block
let excludedFileTypes = [
\ "markdown",
\ "mkd.markdown"
\]
" Only strip the trailing whitespaces if the file type is
" not in the excluded file types list
autocmd!
autocmd BufWritePre * if index(excludedFileTypes, &ft) < 0 | :call StripTrailingWhitespaces()
augroup END
endif
" ----------------------------------------------------------------------
" | Color Scheme |
" ----------------------------------------------------------------------
set t_Co=256 " Enable full-color support
set background=dark " Use colors that look good
" on a dark background
" Set custom configurations for when the
" Solarized theme is used from vim's Terminal mode
" http://ethanschoonover.com/solarized/vim-colors-solarized#advanced-configuration
if !has("gui_running")
let g:solarized_contrast = "high"
let g:solarized_termcolors = 256
let g:solarized_termtrans = 1
let g:solarized_visibility = "high"
endif
colorscheme solarized " Use custom color scheme
" ----------------------------------------------------------------------
" | Key Mappings |
" ----------------------------------------------------------------------
" Use a different mapleader (default is "\")
let mapleader = ","
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,* ] Search and replace the word under the cursor
nmap <leader>* :%s/\<<C-r><C-w>\>//<Left>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,cc] Toggle code comments
" https://github.com/tomtom/tcomment_vim
map <leader>cc :TComment<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,cr] Calculate result
" http://vimcasts.org/e/56
nmap <leader>cr 0yt=A<C-r>=<C-r>"<CR><Esc>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,cs] Clear search
map <leader>cs <Esc>:noh<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,h ] JSHint the code
" https://github.com/Shutnik/jshint2.vim
nmap <leader>h :JSHint<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,l ] Toggle `set list`
nmap <leader>l :set list!<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,n ] Toggle `set relativenumber`
nmap <leader>n :call ToggleRelativeLineNumbers()<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,ss] Strip trailing whitespace
nmap <leader>ss :call StripTrailingWhitespaces()<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,t ] Toggle NERDTree
map <leader>t :NERDTreeToggle<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,ti] Toggle indent
nmap <leader>ti <Plug>IndentGuidesToggle
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,tl] Toggle show limits
nmap <leader>tl :call ToggleLimits()<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,ts] Toggle Syntastic
nmap <leader>ts :SyntasticToggleMode<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,v ] Make the opening of the `.vimrc` file easier
nmap <leader>v :vsp $MYVIMRC<CR>
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" [,W ] Sudo write
map <leader>W :w !sudo tee %<CR>
" ----------------------------------------------------------------------
" | Status Line |
" ----------------------------------------------------------------------
" Terminal types:
"
" 1) term (normal terminals, e.g.: vt100, xterm)
" 2) cterm (color terminals, e.g.: MS-DOS console, color-xterm)
" 3) gui (GUIs)
highlight ColorColumn
\ term=NONE
\ cterm=NONE ctermbg=237 ctermfg=NONE
\ gui=NONE guibg=#073642 guifg=NONE
highlight CursorLine
\ term=NONE
\ cterm=NONE ctermbg=235 ctermfg=NONE
\ gui=NONE guibg=#073642 guifg=NONE
highlight CursorLineNr
\ term=bold
\ cterm=bold ctermbg=NONE ctermfg=178
\ gui=bold guibg=#073642 guifg=Orange
highlight LineNr
\ term=NONE
\ cterm=NONE ctermfg=241 ctermbg=NONE
\ gui=NONE guifg=#839497 guibg=#073642
highlight User1
\ term=NONE
\ cterm=NONE ctermbg=237 ctermfg=Grey
\ gui=NONE guibg=#073642 guifg=#839496
" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
set statusline=
set statusline+=%1* " User1 highlight
set statusline+=\ [%n] " Buffer number
set statusline+=\ %{GetGitBranchName()} " Git branch name
set statusline+=\ [%f] " Path to the file
set statusline+=%m " Modified flag
set statusline+=%r " Readonly flag
set statusline+=%h " Help file flag
set statusline+=%w " Preview window flag
set statusline+=%y " File type
set statusline+=[
set statusline+=%{&ff} " File format
set statusline+=:
set statusline+=%{strlen(&fenc)?&fenc:'none'} " File encoding
set statusline+=]
set statusline+=%= " Left/Right separator
set statusline+=%c " File encoding
set statusline+=,
set statusline+=%l " Current line number
set statusline+=/
set statusline+=%L " Total number of lines
set statusline+=\ (%P)\ " Percent through file
" Example result:
"
" [1] [master] [vim/vimrc][vim][unix:utf-8] 17,238/381 (59%)
" ----------------------------------------------------------------------
" | Local Settings |
" ----------------------------------------------------------------------
" Load local settings if they exist
"
" Note: The following needs to remain at the end of this file in
" order to allow any of the above settings to be overwritten
" by the local ones
if filereadable(glob("~/.vimrc.local"))
source ~/.vimrc.local
endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment