开发环境: Go+Vim+AngularJS+HTML+C+Cross GCC+Python+各种脚本... 这么长只为装逼, 上图:
http://ww3.sinaimg.cn/large/82874e85jw1exb9uf1lxmj213z0o6dpt.jpg
" git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
"
set nocompatible "set nocompatible must be the first line
let vimrcLocal = ".vimrc.local"
if has("win32")
let vimrcLocal = "_vimrc.local"
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction
endif
"set rtp+=$GOROOT/misc/vim
set rtp+=$HOME/.vim/bundle/Vundle.vim
set nocompatible " be iMproved, required
filetype off " required
call vundle#begin()
Bundle 'altercation/vim-colors-solarized'
Bundle 'scrooloose/nerdcommenter'
Bundle 'Lokaltog/vim-powerline'
Bundle 'kien/ctrlp.vim'
Bundle 'Shougo/neocomplcache'
Bundle 'Lokaltog/vim-easymotion'
Bundle 'tpope/vim-surround'
Bundle 'terryma/vim-multiple-cursors'
Bundle 'terryma/vim-expand-region'
Bundle 'godlygeek/tabular'
Bundle 'vim-scripts/Emmet.vim'
Bundle 'rosenfeld/conque-term'
Bundle 'nathanaelkane/vim-indent-guides'
Bundle 'fatih/vim-go'
Bundle 'honza/vim-snippets'
Bundle 'sirver/ultisnips'
Bundle 'majutsushi/tagbar'
Bundle 'scrooloose/nerdtree'
let g:UltiSnipsExpandTrigger = '<Tab>'
let g:UltiSnipsJumpForwardTrigger = '<Tab>'
let g:UltiSnipsJumpBackwardTrigger = '<S-Tab>'
let g:UltiSnipsListSnippets = '<C-Tab>'
Bundle 'XPstatusline'
Bundle 'TaskList.vim'
Bundle 'LustyExplorer'
Bundle 'HTML-AutoCloseTag'
Bundle 'workflowish'
Bundle 'burnettk/vim-angular'
call vundle#end()
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
" ------------------------------------------------------------------
" Desc: Vim UI
" ------------------------------------------------------------------
set shortmess=atI " shortens messages to avoid 'press a key' prompt(hidden tip info when open the vim)
set wildmenu " turn on wild menu, try typing :h and press <Tab>
set showcmd " display incomplete commands
set cmdheight=1 " 1 screen lines to use for the command-line
set ruler " show the cursor position all the time
set hid " allow to change buffer without saving
set lazyredraw " do not redraw while executing macros (much faster)
set display+=lastline " for easy browse last line with wrap text
set makeef=error.err " the errorfile for :make and :grep
set visualbell "shut up
set foldmethod=indent
set nofoldenable
"set clipboard=unnamed
set bs=2 " make backspace behave like normal again
set noeb
set tw=79 " width of document (used by gd)
set nowrap " don't automatically wrap on load
set fo-=t " don't automatically wrap text when typing
" set colorcolumn=80
highlight ColorColumn ctermbg=233
" Useful settings
set history=700
set undolevels=700
syntax enable
"set scrolloff=999 " set lines to show top and down in cursor line
set autoread " file change auto load
set autochdir " auto change work directory
set number " show line number
set nowrap " I don't like wrap, cause in split window mode, it feel strange
set cindent shiftwidth=4 " Set cindent on to autoinent when editing C/C++ file, with 4 shift width
"set awa " auto save
set ai " auto indentation
set nobackup " no create backup file with prefix '~'
set nowritebackup
set noswapfile
" Real programmers don't use TABs but spaces
set tabstop=4
set softtabstop=4
set shiftwidth=4
set shiftround
set expandtab
" Make search case insensitive
set hlsearch
set incsearch
set ignorecase
set smartcase
let mapleader = ","
nmap <leader>b :ConqueTermVSplit bash<CR>
nmap <leader>gc :GoDoc<CR>
nmap <leader>p "+P
nmap <leader>w :w<CR>
nnoremap <leader>v <C-w>v
nnoremap <leader>s <C-w>s
nmap <silent> <leader>h :nohlsearch<CR>
map <leader>o :tabnew<CR>
map <leader><space> gt
map <leader>n <esc>:tabprevious<CR>
map <leader>m <esc>:tabnext<CR>
noremap <leader>[ :cprev<cr>
noremap <leader>] :cnext<cr>
map <leader>x :quit<CR> " Quit current window
map <leader>X :qa!<CR> " Quick all windows
nmap <leader>z :%s/\<<c-r>=expand("<cword>")<cr>\>/
" nerdtree
let g:NERDTreeQuitOnOpen = 1
nmap <leader>F :NERDTreeToggle<CR>
" close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
" Execute python file being edited with <leader> + r:
autocmd FileType * map <buffer> <leader>r :call ComplieCode()<CR>
autocmd FileType python map <leader>b Oimport ipdb; ipdb.set_trace() # BREAKPOINT<C-c>
autocmd FileType go map <leader>f :GoImports<CR>
" Strip all whitespace in the current buffer
nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
" map sort function to a key
vnoremap <Leader>s :sort<CR>" map sort function to a key
" Search the current file for what's currently in the search register and display matches
nmap <silent> <leader>gs :vimgrep /<C-r>// %<CR>:ccl<CR>:cwin<CR><C-W>J:nohls<CR>
" Search the current file for the word under the cursor and display matches
nmap <silent> <leader>gw :vimgrep /<C-r><C-w>/ %<CR>:ccl<CR>:cwin<CR><C-W>J:nohls<CR>
" Search the current file for the WORD under the cursor and display matches
nmap <silent> <leader>gW :vimgrep /<C-r><C-a>/ %<CR>:ccl<CR>:cwin<CR><C-W>J:nohls<CR>
" easier moving of code blocks
" Try to go into visual mode (v), thenselect several lines of code here and
" then press ``>`` several times.
" vnoremap < <gv " better indentation
" vnoremap > >gv " better indentation
" Show whitespace
" MUST be inserted BEFORE the colorscheme command
" autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
" au InsertLeave * match ExtraWhitespace /\s\+$/
" bind Ctrl+<movement> keys to move around the windows, instead of ctrl+w ctrl+<movement>
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-l> <c-w>l
map <c-h> <c-w>h
" Bind nohl
" Removes highlight of your last search
" ``<C>`` stands for ``CTRL`` and therefore ``<C-n>`` stands for ``CTRL+n``
"" noremap <C-n> :nohl<CR>
"" vnoremap <C-n> :nohl<CR>
"" inoremap <C-n> :nohl<CR>
" Quicksave command
noremap <C-Z> :update<CR>
vnoremap <C-Z> <C-C>:update<CR>
inoremap <C-Z> <C-O>:update<CR>
" Settings for ctrlp
" cd ~/.vim/bundle
" git clone https://github.com/kien/ctrlp.vim.git
let g:ctrlp_max_height = 30
let g:ctrlp_mruf_max = 200
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_working_path_mode = 'ra'
" Make ctrlp's location sync with nerdtree window
let g:ctrlp_dont_split = 'nerdtree'
set wildignore+=*.o,*~,*.pyc,*_build/*,*/converage/*,*.mo,*.po,*.so
let g:ctrlp_custom_ignore = 'node_modules\|bower_components\|.pyc|DS_Store|(\.(swp|ico|git|svn))'
" Use tab to open new files in split windows
let g:ctrlp_prompt_mappings = {
\ 'AcceptSelection("e")': [],
\ 'AcceptSelection("t")': ['<cr>', '<c-m>'],
\ }
nnoremap <c-b> :CtrlPBuffer<CR>
nnoremap <leader>e :CtrlPMRUFiles<CR>
" Indent Guides
let g:indent_guides_guide_size = 1
map <leader>i :IndentGuidesToggle<CR>
let g:indent_guides_auto_colors = 0
hi IndentGuidesOdd ctermbg=black
hi IndentGuidesEven ctermbg=darkgrey
let g:indent_guides_auto_colors = 0
autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=red ctermbg=3
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4
""""""""""""""""""""""""""""""
" neocomplcache
let g:acp_enableAtStartup = 0
let g:neocomplcache_enable_at_startup = 1 " or run :NeoComplCacheEnable
let g:neocomplcache_enable_smart_case = 1
let g:neocomplcache_enable_camel_case_completion = 1
let g:neocomplcache_enable_underbar_completion = 1
" When you input 'ho-a',neocomplcache will select candidate 'a'.
let g:neocomplcache_enable_quick_match = 1
if !exists('g:neocomplcache_omni_patterns')
let g:neocomplcache_omni_patterns = {}
endif
let g:neocomplcache_omni_patterns.go = '\h\w*\.\?'
""""""""""""""""""""""""""""""
" ------------------------------------------------------------------
" Desc: snipMate
" ------------------------------------------------------------------
map <F7> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
func! CompileRunNasm()
exec "w"
exec "!rm -rf %<.o"
exec "!rm -rf %<"
exec "!nasm -f macho64 % -o %<.o"
exec "!ld %<.o -o %<"
exec "! ./%<"
endfunc
func! ComplieRunObjc()
exec "w"
exec "!gcc -framework Foundation % -o %<"
exec "! ./%<"
echo "OKOK"
endfunc
func! ComplieCode()
exec "w"
if &filetype == "cpp"
elseif &filetype == "nasm"
exec "call CompileRunNasm()"
elseif &filetype == "c"
exec "call CompileRunGcc()"
elseif &filetype == "objc"
exec "call ComplieRunObjc()"
elseif &filetype == "python"
exec "!python \"%\""
elseif &filetype == "ruby"
exec "!ruby %"
elseif &filetype == "perl"
exec "!perl %"
elseif &filetype == "lua"
exec "!lua %"
elseif &filetype == "go"
"exec "!go run %"
exec ":GoRun %"
elseif &filetype == "php"
exec "!php \"%\""
elseif &filetype == "javascript"
exec "!node \"%\""
endif
endfunc
func! Commit()
exec "w"
exec "!git commit % -m 'vim commit for %'"
endfunc
map <C-F9> :call ComplieCode()<CR>
map <leader>c :call Commit()<CR>
nmap <F7> :make<cr>
" set match method, when input a left '(', auto match twinning ')'
set showmatch
" disable beep sound
"set vb t_vb=
" disable cursor blink
set gcr=a:block-blinkon0
" solution chinese encode
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
nnoremap <silent> <F3> :Grep<CR>
autocmd BufReadPost * set tags+=tags;
set completeopt=longest,menuone
autocmd FileType python set omnifunc=pythoncomplete#Complete
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
nnoremap <unique> <silent> <leader>T :TagbarOpenAutoClose<CR>
"Quickfix
nmap \cc :cc<cr>
nmap \cn :cn<cr>
nmap \cp :cp<cr>
nmap \cw :cw 6<cr>
let g:LustyExplorerSuppressRubyWarning = 1
let g:LustyJugglerSuppressRubyWarning = 1
" git clone https://github.com/Lokaltog/vim-easymotion.git
" http://net.tutsplus.com/tutorials/other/vim-essential-plugin-easymotion/
let g:EasyMotion_leader_key = '<Leader><Leader>'
" git clone http://github.com/mattn/zencoding-vim.git
let g:use_zen_complete_tag = 1
let g:user_zen_settings = {
\ 'php' : {
\ 'extends' : 'html',
\ 'filters' : 'c',
\ },
\ 'tpl' : {
\ 'extends' : 'html',
\ },
\}
"javascript 语法高亮脚本的设置
let g:javascript_enable_domhtmlcss=1
map <leader>td <Plug>TaskList
" Tabular.vim
nmap <Leader>a= :Tabularize /^[^=]*\zs=>\?<CR>
vmap <Leader>a= :Tabularize /^[^=]*\zs=>\?<CR>
nmap <Leader>a: :Tabularize /:\zs/l0r1<CR>
vmap <Leader>a: :Tabularize /:\zs/l0r1<CR>
nmap <Leader>a, :Tabularize /,\zs/l1r0<CR>
vmap <Leader>a, :Tabularize /,\zs/l1r0<CR>
vmap <Leader>a :Tabularize / \zs/l1r0<CR>
" vim-go
let g:gofmt_command = "goimports"
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
""""""""""""""""""""""""""""
" set guifont
function s:SetGuiFont()
if has("gui_gtk2")
set guifont=Luxi\ Mono\ 10
elseif has("x11")
" Also for GTK 1
set guifont=*-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-*
elseif has("gui_win32") || has("win32") || has("win64")
let font_name = ""
if getfontname("Monaco") != ""
set guifont=Monaco:h12:w6.5
let font_name = "Inconsolata"
elseif getfontname( "Consolas" ) != ""
set guifont=Consolas:h10.5:cANSI
let font_name = "Consolas"
elseif getfontname( "Bitstream_Vera_Sans_Mono" ) != ""
set guifont=Bitstream_Vera_Sans_Mono:h10:cANSI " this is the default visual studio font
let font_name = "Bitstream_Vera_Sans_Mono"
else
" just make it, health to my eyes
set guifont=Lucida_Console:h10.5:cANSI
"set guifont=Lucida_Console:h15:cANSI
let font_name = "Lucida_Console"
endif
silent exec "nnoremap <unique> <A-F1> :set guifont=".font_name.":h11:cANSI<CR>"
elseif has("unix") && !has('gui_macvim')
set guifont=Courier\ 11\ Pitch\ 12
elseif has("mac") || hash("gui_macvim")
set anti
set guifont=Menlo:h18
set guifontwide=Menlo:h18
endif
endfunction
if has("gui_running")
if has("win32")
map <F11> :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
endif
" check and determine the gui font after GUIEnter.
" NOTE: getfontname function only works after GUIEnter.
au GUIEnter * call s:SetGuiFont()
set lines=40 columns=130
"set guioptions-=m
set guioptions-=T " hide toobar
"set guioptions-=r " hide right scrollbar
"set guioptions-=b " hide bottom scrollbar
set showfulltag " show tag with function protype.
set showtabline=1
set background=light
else
let g:solarized_termcolors=256
set background=light
endif
"set cuc " highlight colum on cursor
"set cul " highlith line on cursor
colorscheme solarized
if filereadable(vimrcLocal)
exec 'source ' . vimrcLocal
endif
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.