突然想让大家把 Vim 配置跟撸码的时候的截图发一下, 看谁的更好玩.

2015-10-23 19:08:38 +08:00
 china521

开发环境: 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
3320 次点击
所在节点    分享发现
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/230563

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX