Skip to content

Instantly share code, notes, and snippets.

@JosephKu
Last active November 4, 2016 19:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save JosephKu/2495326 to your computer and use it in GitHub Desktop.
Save JosephKu/2495326 to your computer and use it in GitHub Desktop.
Vimrc
" vim-plug
fun! EnsureVimPlugIsOnDisk(vimplug_install_path)
if !filereadable(a:vimplug_install_path.'/plug.vim')
\&& 1 == confirm("Install vim-plug into ".a:vimplug_install_path."?","&Y\n&N")
execute '!curl -fLo '.a:vimplug_install_path.'/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
endif
endfun
fun! SetupVimPlug()
let vimplug_install_path = expand('$HOME').'/.vim/autoload'
call EnsureVimPlugIsOnDisk(vimplug_install_path)
call plug#begin('~/.vim/plugged')
Plug 'altercation/vim-colors-solarized'
Plug 'airblade/vim-gitgutter'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'wesQ3/vim-windowswap'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'easymotion/vim-easymotion'
" Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'scrooloose/nerdtree'
Plug 'ervandew/supertab'
Plug 'tpope/vim-eunuch'
Plug 'tpope/vim-surround'
Plug 'jiangmiao/auto-pairs'
Plug 'vim-scripts/tComment'
Plug 'junegunn/vim-easy-align'
Plug 'tpope/vim-bundler'
Plug 'vim-ruby/vim-ruby'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-endwise'
Plug 'thoughtbot/vim-rspec'
Plug 'slim-template/vim-slim'
Plug 'asux/vim-capybara'
Plug 'scrooloose/syntastic'
Plug 'kchmck/vim-coffee-script', { 'for': 'coffee' }
Plug 'pangloss/vim-javascript'
Plug 'MarcWeber/vim-addon-mw-utils' | Plug 'tomtom/tlib_vim' | Plug 'garbas/vim-snipmate'
Plug 'honza/vim-snippets'
Plug 'tpope/vim-fugitive'
Plug 'mileszs/ack.vim'
Plug 'rizzatti/dash.vim'
call plug#end()
endfun
call SetupVimPlug()
" vim-colors-solarized
let g:solarized_termcolors = 256
let g:solarized_termtrans = 1
set background=dark
colorscheme solarized
set fileencodings=ucs-bom,utf-8,default,latin1
set nocompatible
set helplang=en
set history=50
set nomodeline
set printoptions=paper:letter
set ruler "show the cursor position
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
set hlsearch
set incsearch
set showmatch
set shiftwidth=4
set tabstop=4
set expandtab "Always expand tabs to spaces
set softtabstop=4
set pastetoggle=<F7>
set autoindent
set smartindent
set showcmd " Display incomplete commands
set scrolloff=7 " Keep a 7-lines 'lookahead' when scrolling
set wildmenu " Show auto-complete matches
set wildignore=*.bdb,*.msu,*.bfi,*.bjk,*.bpk,*.bdm,*.bfm,*.bxi,*.bmi,*.msx,*.lnk,*~,*.bak,*.pyc
set statusline=%<%f%m%r\ %{fugitive#statusline()}%=\|\ Dec:\ %-3b\ Hex:\ 0x%2B\ \|\ %20(%4l,%4c%V\ \|\ %3P%)
set laststatus=2 " Always show the status bar
" Share Mac OS X clipboard
if $TMUX == ''
set clipboard=unnamed
endif
" Set a decent text width. This makes printouts cleaner, and makes it easier
" to read the files on an 80-column screen (f. ex. a server monitor)
set textwidth=78
" Numbers
set number
set numberwidth=5
" Settings for specific file types (shouldn't this go to ftplugin?)
let g:xml_syntax_folding=1
autocmd FileType xml setlocal foldmethod=syntax
" Tweak for Ruby
autocmd FileType ruby set smartindent shiftwidth=2 tabstop=2 softtabstop=2
" Tweak for eRuby
autocmd FileType eruby set smartindent shiftwidth=2 tabstop=2 softtabstop=2 foldmethod=marker foldmarker=<div,</div>
" Tweak for Python
autocmd FileType python set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
"Tweak for Make
autocmd FileType make set noexpandtab
"Tweak for HTML
autocmd FileType html set smartindent shiftwidth=2 tabstop=2 softtabstop=2 foldmethod=marker foldmarker=<div,</div>
" Treat JSON as JavaScript
autocmd BufNewFile,BufRead *.json set filetype=javascript
" Treat RABL as Ruby
autocmd BufRead,BufNewFile *.rabl setf ruby
" Tweak for CoffeeScript
autocmd BufNewFile,BufReadPost *.coffee setl shiftwidth=2 expandtab
" Jump to the last position when reopening a file
if has("autocmd")
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal g'\"" | endif
endif
" auto reload vimrc when editing it
autocmd! BufWritePost .vimrc source ~/.vimrc
" Set <leader>
let mapleader=","
" quickly clear the search string (to clear highlights)
nnoremap <leader><space> :noh<CR>
"map <F12> :set spell!<BAR>set spell?<CR>
"hi Search term=reverse cterm=bold ctermfg=7 ctermbg=2
"Enable and disable mouse use
set mouse=a
noremap <Leader>m :call ToggleMouse() <CR>
function! ToggleMouse()
if &mouse == 'a'
set mouse-=a
set nonumber
echo "-- Mouse disabled --"
else
set mouse=a
set number
echo "-- Mouse enabled --"
endif
endfunction
" new-omni-completion
filetype plugin indent on
set completeopt=longest,menu
" taglist plugin
nnoremap <silent> <F2> :TlistToggle<CR>
let Tlist_WinWidth=30
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
" NERDTree
nnoremap <Leader>n :NERDTreeToggle<CR>
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
autocmd BufEnter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTreeToggle | wincmd w | endif
" CTRL+S saves the buffer
nmap <C-s> :w<CR>
" Close tab
nmap <Leader>w :tabc<CR>
" Ignore case for search operations ...
set ignorecase
" ... but be case sensitive if the search pattern contains uppercase chars
set smartcase
"
" Useful commands
"
command! Marked !open -a Marked.app '%:p'
"command Sudow :w !sudo tee % > /dev/null
"command SW :w !sudo cat > %
" Remember things between sessions
if has('nvim')
" '20 - remember marks for 20 previous files
" <50 - save 50 lines for each register
" :20 - remember 20 items in command-line history
" % - remember the buffer list (if nvim started without a file arg)
set shada='20,<50,:20,%,n~/.config/nvim/.nviminfo
else
" '20 - remember marks for 20 previous files
" \"50 - save 50 lines for each register
" :20 - remember 20 items in command-line history
" % - remember the buffer list (if vim started without a file arg)
" n - set name of viminfo file
set viminfo='20,\"50,:20,%,n~/.vim/.viminfo
endif
" cool~
"inoremap @date <C-R>=strftime("%d.%m.%Y")<CR>
map <F5> :set list!<BAR>set list?<CR>
map <F6> :set hls!<BAR>set hls?<CR>
map <F8> :marks<CR>
"map <F9> :registers<CR>
"map <F10> :map<CR>
"map <C-Right> :tabnext<CR>
"map <C-Left> :tabprevious<CR>
" cursor highlight
set cursorline
"highlight CursorLine cterm=NONE ctermbg=Black
"autocmd InsertEnter * set nocursorline
"autocmd InsertLeave * set cursorline
"
" Line number setting
"
"hi LineNr ctermfg=white ctermbg=darkgreen
" Display extra whitespace
set list listchars=tab:»·,trail:·
" ctrlp
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
" Backward compatible for Command-T...
nmap <leader>t <c-p>
let g:ctrlp_regexp = 1
let g:ctrlp_match_window_reversed = 0
let g:ctrlp_prompt_mappings = { 'PrtAdd(".*")': ['<space>'] }
" Vim Git Gutter
highlight clear SignColumn
" Airline
let g:airline_powerline_fonts = 1
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
let g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.readonly = '⭤'
let g:airline_symbols.linenr = '⭡'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.whitespace = 'Ξ'
" No more arrows!
nnoremap <Left> :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up> :echoe "Use k"<CR>
nnoremap <Down> :echoe "Use j"<CR>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment