• amix vim vimrc 3.6 (部分修改)


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Maintainer: amix the lucky stiff
    "             http://amix.dk - amix@amix.dk
    "
    " Version: 3.6 - 25/08/10 14:40:30
    "
    " Blog_post: 
    "       http://amix.dk/blog/post/19486#The-ultimate-vim-configuration-vimrc
    " Syntax_highlighted:
    "       http://amix.dk/vim/vimrc.html
    " Raw_version: 
    "       http://amix.dk/vim/vimrc.txt
    "
    " How_to_Install_on_Unix:
    "    $ mkdir ~/.vim_runtime
    "    $ svn co svn://orangoo.com/vim ~/.vim_runtime
    "    $ cat ~/.vim_runtime/install.sh
    "    $ sh ~/.vim_runtime/install.sh <system>
    "      <sytem> can be `mac`, `linux` or `windows`
    "
    " How_to_Upgrade:
    "    $ svn update ~/.vim_runtime
    "
    " Sections:
    "    -> General
    "    -> VIM user interface
    "    -> Colors and Fonts
    "    -> Files and backups
    "    -> Text, tab and indent related
    "    -> Visual mode related
    "    -> Command mode related
    "    -> Moving around, tabs and buffers
    "    -> Statusline
    "    -> Parenthesis/bracket expanding
    "    -> General Abbrevs
    "    -> Editing mappings
    "
    "    -> Cope
    "    -> Minibuffer plugin
    "    -> Omni complete functions
    "    -> Python section
    "    -> JavaScript section
    "
    "
    " Plugins_Included:
    "     > minibufexpl.vim - http://www.vim.org/scripts/script.php?script_id=159
    "       Makes it easy to get an overview of buffers:
    "           info -> :e ~/.vim_runtime/plugin/minibufexpl.vim
    "
    "     > bufexplorer - http://www.vim.org/scripts/script.php?script_id=42
    "       Makes it easy to switch between buffers:
    "           info -> :help bufExplorer
    "
    "     > yankring.vim - http://www.vim.org/scripts/script.php?script_id=1234
    "       Emacs's killring, useful when using the clipboard:
    "           info -> :help yankring
    "
    "     > surround.vim - http://www.vim.org/scripts/script.php?script_id=1697
    "       Makes it easy to work with surrounding text:
    "           info -> :help surround
    "
    "     > snipMate.vim - http://www.vim.org/scripts/script.php?script_id=2540
    "       Snippets for many languages (similar to TextMate's):
    "           info -> :help snipMate
    "
    "     > mru.vim - http://www.vim.org/scripts/script.php?script_id=521
    "       Plugin to manage Most Recently Used (MRU) files:
    "           info -> :e ~/.vim_runtime/plugin/mru.vim
    "
    "     > Command-T - http://www.vim.org/scripts/script.php?script_id=3025
    "       Command-T plug-in provides an extremely fast, intuitive mechanism for opening filesa:
    "           info -> :help CommandT
    "           screencast and web-help -> http://amix.dk/blog/post/19501
    "
    "
    "  Revisions:
    "     > 3.6: Added lots of stuff (colors, Command-T, Vim 7.3 persistent undo etc.)
    "     > 3.5: Paste mode is now shown in status line  if you are in paste mode
    "     > 3.4: Added mru.vim
    "     > 3.3: Added syntax highlighting for Mako mako.vim 
    "     > 3.2: Turned on python_highlight_all for better syntax
    "            highlighting for Python
    "     > 3.1: Added revisions ;) and bufexplorer.vim
    "
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => General
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Sets how many lines of history VIM has to remember
    set history=700

    " Enable filetype plugin
    filetype plugin on
    filetype indent on

    " Set to auto read when a file is changed from the outside
    set autoread

    " With a map leader it's possible to do extra key combinations
    " like <leader>w saves the current file
    let mapleader = ","
    let g:mapleader = ","

    " Fast saving
    nmap <leader>w :w!<cr>

    " Fast editing of the .vimrc
    map <leader>e :e! ~/.vim_runtime/vimrc<cr>

    " When vimrc is edited, reload it
    autocmdbufwritepost vimrc source ~/.vim_runtime/vimrc


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => VIM user interface
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Set 7 lines to the curors - when moving vertical..
    set so=7

    set wildmenu "Turn on WiLd menu

    set ruler "Always show current position

    set cmdheight=2 "The commandbar height

    set hid "Change buffer - without saving

    " Set backspace config
    set backspace=eol,start,indent
    set whichwrap+=<,>,h,l

    set ignorecase "Ignore case when searching
    set smartcase

    set hlsearch "Highlight search things

    set incsearch "Make search act like search in modern browsers
    set nolazyredraw "Don't redraw while executing macros 

    set magic "Set magic on, for regular expressions

    set showmatch "Show matching bracets when text indicator is over them
    set mat=2 "How many tenths of a second to blink

    " No sound on errors
    set noerrorbells
    set novisualbell
    set t_vb=
    set tm=500


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Colors and Fonts
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    syntax enable "Enable syntax hl

    function! MySys()
      if has("win32")
        return "win32"
      elseif has("unix")
        return "unix"
      else
        return "mac"
      endif
    endfunction

    " Set font according to system
    if MySys() == "mac"
      set gfn=Menlo:h14
      set shell=/bin/bash
    elseif MySys() == "windows"
      "set gfn=Bitstream\ Vera\ Sans\ Mono:h10
      set gfn=YaHeiz:h13
    elseif MySys() == "linux"
      set gfn=Monospace\ 10
      set shell=/bin/bash
    endif

    if has("gui_running")
      "set guioptions-=m
      set guioptions-=T
      "set guioptions-=l
      "set guioptions-=L
      "set guioptions-=r
      "set guioptions-=R
      set t_Co=256
      set background=dark
      colorscheme elflord
      set nonu
    else
      colorscheme zellner
      set background=dark

      set nonu
    endif

    "set encoding=prc
    set encoding=utf8
    try
        lang en_US
    catch
    endtry

    set ffs=unix,dos,mac "Default file types


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Files, backups and undo
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Turn backup off, since most stuff is in SVN, git anyway...
    set nobackup
    set nowb
    set noswapfile

    "Persistent undo
    try
        if MySys() == "windows"
          set undodir=C:\Windows\Temp
        else
          set undodir=~/.vim_runtime/undodir
        endif

        set undofile
    catch
    endtry


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Text, tab and indent related
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    set expandtab
    set shiftwidth=4
    set tabstop=4
    set smarttab

    set lbr
    set tw=500

    set ai "Auto indent
    set si "Smart indet
    set wrap "Wrap lines


    """"""""""""""""""""""""""""""
    " => Visual mode related
    """"""""""""""""""""""""""""""
    " Really useful!
    "  In visual mode when you press * or # to search for the current selection
    vnoremap <silent> * :call VisualSearch('f')<CR>
    vnoremap <silent> # :call VisualSearch('b')<CR>

    " When you press gv you vimgrep after the selected text
    vnoremap <silent> gv :call VisualSearch('gv')<CR>
    map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>


    function! CmdLine(str)
        exe "menu Foo.Bar :" . a:str
        emenu Foo.Bar
        unmenu Foo
    endfunction

    " From an idea by Michael Naumann
    function! VisualSearch(direction) range
        let l:saved_reg = @"
        execute "normal! vgvy"

        let l:pattern = escape(@"'\\/.*$^~[]')
        let l:pattern = substitute(l:pattern, "\n$""""")

        if a:direction == 'b'
            execute "normal ?" . l:pattern . "^M"
        elseif a:direction == 'gv'
            call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.')
        elseif a:direction == 'f'
            execute "normal /" . l:pattern . "^M"
        endif

        let @/ = l:pattern
        let @" = l:saved_reg
    endfunction



    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Command mode related
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Smart mappings on the command line
    cno $h e ~/
    cno $d e ~/Desktop/
    cno $j e ./
    cno $c e <C-\>eCurrentFileDir("e")<cr>

    " $q is super useful when browsing on the command line
    cno $q <C-\>eDeleteTillSlash()<cr>

    " Bash like keys for the command line
    cnoremap <C-A>      <Home>
    cnoremap <C-E>      <End>
    cnoremap <C-K>      <C-U>

    cnoremap <C-P> <Up>
    cnoremap <C-N> <Down>

    " Useful on some European keyboards
    map ½ $
    imap ½ $
    vmap ½ $
    cmap ½ $


    func! Cwd()
      let cwd = getcwd()
      return "e " . cwd 
    endfunc

    func! DeleteTillSlash()
      let g:cmd = getcmdline()
      if MySys() == "linux" || MySys() == "mac"
        let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*""\\1""")
      else
        let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\]\\).*""\\1""")
      endif
      if g:cmd == g:cmd_edited
        if MySys() == "linux" || MySys() == "mac"
          let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*/""\\1""")
        else
          let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\\]\\).*\[\\\\\]""\\1""")
        endif
      endif
      return g:cmd_edited
    endfunc

    func! CurrentFileDir(cmd)
      return a:cmd . " " . expand("%:p:h") . "/"
    endfunc


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Moving around, tabs and buffers
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Map space to / (search) and c-space to ? (backgwards search)
    map <space> /
    map <c-space> ?
    map <silent> <leader><cr> :noh<cr>

    " Smart way to move btw. windows
    map <C-j> <C-W>j
    map <C-k> <C-W>k
    map <C-h> <C-W>h
    map <C-l> <C-W>l

    " Close the current buffer
    map <leader>bd :Bclose<cr>

    " Close all the buffers
    map <leader>ba :1,300 bd!<cr>

    " Use the arrows to something usefull
    map <right> :bn<cr>
    map <left> :bp<cr>

    " Tab configuration
    map <leader>tn :tabnew<cr>
    map <leader>te :tabedit
    map <leader>tc :tabclose<cr>
    map <leader>tm :tabmove

    " When pressing <leader>cd switch to the directory of the open buffer
    map <leader>cd :cd %:p:h<cr>


    command! Bclose call <SID>BufcloseCloseIt()
    function<SID>BufcloseCloseIt()
       let l:currentBufNum = bufnr("%")
       let l:alternateBufNum = bufnr("#")

       if buflisted(l:alternateBufNum)
         buffer #
       else
         bnext
       endif

       if bufnr("%") == l:currentBufNum
         new
       endif

       if buflisted(l:currentBufNum)
         execute("bdelete! ".l:currentBufNum)
       endif
    endfunction

    " Specify the behavior when switching between buffers 
    try
      set switchbuf=usetab
      set stal=2
    catch
    endtry


    """"""""""""""""""""""""""""""
    " => Statusline
    """"""""""""""""""""""""""""""
    " Always hide the statusline
    set laststatus=2

    " Format the statusline
    set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c


    function! CurDir()
        let curdir = substitute(getcwd()'/Users/amir/'"~/""g")
        return curdir
    endfunction

    function! HasPaste()
        if &paste
            return 'PASTE MODE  '
        else
            return ''
        endif
    endfunction


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Parenthesis/bracket expanding
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    vnoremap $1 <esc>`>a)<esc>`<i(<esc>
    vnoremap $2 <esc>`>a]<esc>`<i[<esc>
    vnoremap $3 <esc>`>a}<esc>`<i{<esc>
    vnoremap $$ <esc>`>a"<esc>`<i"<esc>
    vnoremap $q <esc>`>a'<esc>`<i'<esc>
    vnoremap $e <esc>`>a"<esc>`<i"<esc>

    " Map auto complete of (, ", ', [
    inoremap $1 ()<esc>i
    inoremap $2 []<esc>i
    inoremap $3 {}<esc>i
    inoremap $4 {<esc>o}<esc>O
    inoremap $q ''<esc>i
    inoremap $e ""<esc>i
    inoremap $t <><esc>i


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => General Abbrevs
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Editing mappings
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Remap VIM 0
    map 0 ^

    "Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
    nmap <M-j> mz:m+<cr>`z
    nmap <M-k> mz:m-2<cr>`z
    vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
    vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

    if MySys() == "mac"
      nmap <D-j> <M-j>
      nmap <D-k> <M-k>
      vmap <D-j> <M-j>
      vmap <D-k> <M-k>
    endif

    "Delete trailing white space, useful for Python ;)
    func! DeleteTrailingWS()
      exe "normal mz"
      %s/\s\+$//ge
      exe "normal `z"
    endfunc
    autocmd BufWrite *.py :call DeleteTrailingWS()

    set guitablabel=%t


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Cope
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Do :help cope if you are unsure what cope is. It's super useful!
    map <leader>cc :botright cope<cr>
    map <leader>n :cn<cr>
    map <leader>p :cp<cr>


    """"""""""""""""""""""""""""""
    " => bufExplorer plugin
    """"""""""""""""""""""""""""""
    let g:bufExplorerDefaultHelp=0
    let g:bufExplorerShowRelativePath=1
    map <leader>o :BufExplorer<cr>


    """"""""""""""""""""""""""""""
    " => Minibuffer plugin
    """"""""""""""""""""""""""""""
    let g:miniBufExplModSelTarget = 1
    let g:miniBufExplorerMoreThanOne = 2
    let g:miniBufExplModSelTarget = 0
    let g:miniBufExplUseSingleClick = 1
    let g:miniBufExplMapWindowNavVim = 1
    let g:miniBufExplVSplit = 25
    let g:miniBufExplSplitBelow=1

    let g:bufExplorerSortBy = "name"

    autocmd BufRead,BufNew :call UMiniBufExplorer

    map <leader>u :TMiniBufExplorer<cr>


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Omni complete functions
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    autocmd FileType css set omnifunc=csscomplete#CompleteCSS


    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Spell checking
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "Pressing ,ss will toggle and untoggle spell checking
    map <leader>ss :setlocal spell!<cr>

    "Shortcuts using <leader>
    map <leader>sn ]s
    map <leader>sp [s
    map <leader>sa zg
    map <leader>s? z=


    """"""""""""""""""""""""""""""
    " => Python section
    """"""""""""""""""""""""""""""
    let python_highlight_all = 1
    au FileType python syn keyword pythonDecorator True None False self

    au BufNewFile,BufRead *.jinja set syntax=htmljinja
    au BufNewFile,BufRead *.mako set ft=mako

    au FileType python inoremap <buffer> $r return
    au FileType python inoremap <buffer> $i import
    au FileType python inoremap <buffer> $p print
    au FileType python inoremap <buffer> $f #--- PH ----------------------------------------------<esc>FP2xi
    au FileType python map <buffer> <leader>1 /class
    au FileType python map <buffer> <leader>2 /def
    au FileType python map <buffer> <leader>C ?class
    au FileType python map <buffer> <leader>D ?def


    """"""""""""""""""""""""""""""
    " => JavaScript section
    """""""""""""""""""""""""""""""
    au FileType javascript call JavaScriptFold()
    au FileType javascript setl fen
    au FileType javascript setl nocindent

    au FileType javascript imap <c-t> AJS.log();<esc>hi
    au FileType javascript imap <c-a> alert();<esc>hi

    au FileType javascript inoremap <buffer> $r return
    au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xi

    function! JavaScriptFold()
        setl foldmethod=syntax
        setl foldlevelstart=1
        syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend

        function! FoldText()
        return substitute(getline(v:foldstart)'{.*''{...}''')
        endfunction
        setl foldtext=FoldText()
    endfunction


    """"""""""""""""""""""""""""""
    " => MRU plugin
    """"""""""""""""""""""""""""""
    let MRU_Max_Entries = 400
    map <leader>f :MRU<CR>


    """"""""""""""""""""""""""""""
    " => Command-T
    """"""""""""""""""""""""""""""
    let g:CommandTMaxHeight = 15
    set wildignore+=*.o,*.obj,.git,*.pyc
    noremap <leader>j :CommandT<cr>
    noremap <leader>y :CommandTFlush<cr>


    """"""""""""""""""""""""""""""
    " => Vim grep
    """"""""""""""""""""""""""""""
    let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated'
    set grepprg=/bin/grep\ -nH



    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => MISC
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " Remove the Windows ^M - when the encodings gets messed up
    noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm

    "Quickly open a buffer for scripbble
    map <leader>q :e ~/buffer<cr>
    au BufRead,BufNewFile ~/buffer iab <buffer> xh1 ===========================================

    map <leader>pp :setlocal paste!<cr>

    map <leader>bb :cd ..<cr>

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " => Z@is2120.csdn
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    let g:calendar_focus_today = 1
    let g:calendar_diary = "D:\\mydoc\\doc\\Ediary"

    let Tlist_Show_One_File=1
    let Tlist_Exit_OnlyWindow=1
    "let Tlist_Ctags_Cmd = "/sw/bin/ctags-exuberant"
    "let Tlist_Sort_Type = "name"
    "let Tlist_Show_Menu = 1
    "map <leader>t :Tlist<cr>
    map <F3> :Tlist<cr>

    set tags=tags;
    set autochdir

    " turn off nice effect on status bar title
    let performance_mode=1

    "Get out of VI's compatible mode..
    set nocompatible

    "Have the mouse enabled all the time:
    if exists("&mouse")
      set mouse=a
    endif

    set fileencodings=ucs-bom,utf-8,cp936,gb2312,gbk,gb18030,chinese,big5,euc-jp,euc-kr,latin1 

    highlight menu font=YaHeiz
    language messages en_US
    set langmenu=en_US
    let $LANG = 'en_US'
    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim

    "if you use vim in tty,
    "'uxterm -cjk' or putty with option 'Treat CJK ambiguous characters as wide' on
    if exists("&ambiwidth")
      set ambiwidth=double
    endif

    "Highlight current
    if has("gui_running")
      if exists("&cursorline")
        set cursorline
      endif
    endif

    "Switch to current dir
    map <leader>cd :cd %:p:h<cr>

    "Comment for C like language
    if has("autocmd")
      au BufNewFile,BufRead *.js,*.htc,*.c,*.tmpl,*.css ino $c /**<cr> **/<esc>O
    endif

    "My information
    ia xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
    "iab xname Amir Salihefendic

    "Enable folding, I find it very useful
    if exists("&foldenable")
      set fen
    endif

    if exists("&foldlevel")
      set fdl=0
    endif

    set nofen
    set fdl=0
    "set lbr
    "set si
    "set wrap

    autocmd FileType c,cpp,cs set shiftwidth=4 | set tabstop=4 |set expandtab

    "au BufNewFile,BufRead *.todo so ~/vim_local/syntax/amido.vim

    if has("autocmd") && v:version>600
      au BufRead,BufNew *.vim map <buffer> <leader><space> :w!<cr>:source %<cr>
    endif

    " HTML entities - used by xml edit plugin
    let xml_use_xhtml = 1
    "let xml_no_auto_nesting = 1

    "To HTML
    let html_use_css = 0
    let html_number_lines = 0
    let use_xhtml = 1
    set autoindent

    "set fileencodings=utf-8,gb2312,gbk,cp936
    "set termencoding=utf-8
    "set fileformats=dos,unix
    "set language=chinese_china
    "set encoding=prc
    set fenc=utf-8
    set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

    "charset=utf-8
    let g:html_use_css = 0
    let g:html_use_encoding = "utf-8"
    "let g:html_use_encoding = "gb2312"
    let g:html_use_xhtml = 0

    let g:fencview_autodetect = 1
    set guifont=YaHeiz:h13
    set guifontwide=YaHeiz:h13

    "c# compiler
    "auto save the file before compile
    set autowrite
    set makeprg=csc\ /nologo\ %
    set efm+=%A%f(%l\\,%c):%m
    nnoremap <silent> <F5> :!start cmd /c "%:p:r:s,$,.exe," & pause<CR>

    "最大化窗口
    if has("gui_running")
      if MySys()=="win32"
        "start gvim maximized
        if has("autocmd")
          au GUIEnter * simalt ~x
        endif
      endif
    endif

    set hls
    syntax on
    set showcmd
    set nomagic

  • 相关阅读:
    回顾Oracle几个用到的基本语句
    JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
    JDBC连接数据库步骤及Class.forName()(转)
    Web开发的编码解决中文乱码
    Filter,Listener(转)
    web.xml 中的listener、 filter、servlet 加载顺序及其详解(转)
    算法训练 比赛安排
    算法训练 字符串编辑
    算法训练 最大值与最小值的计算
    算法训练 判定数字
  • 原文地址:https://www.cnblogs.com/IS2120/p/6746028.html
Copyright © 2020-2023  润新知