• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            vim配置文件及其插件

            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            " 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
            filetype plugin indent on
            " Enable filetype plugin
            filetype plugin on
            filetype indent on
            filetype 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
            autocmd! bufwritepost 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

            " Set font according to system

              set gfn=Monospace\ 10
              set shell=/bin/bash

            if has("gui_running")
              set guioptions-=T
              set t_Co=256
              set background=dark
              colorscheme peaksea
              set nonu
            else
              colorscheme zellner
              set background=dark

              set nonu
            endif

            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


            "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>
            """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
            " 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
            autocmd! bufwritepost 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

            " Set font according to system

              set gfn=Monospace\ 10
              set shell=/bin/bash


            if has("gui_running")
              set guioptions-=T
              set t_Co=256
              set background=dark
              colorscheme peaksea
              set nonu
            else
              colorscheme zellner
              set background=dark

              set nonu
            endif

            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


            "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>

             

            set nocompatible
            syntax on
            set number
            set tabstop=4
            set nowrap
            set hlsearch
            set backspace=indent,eol,start whichwrap+=<,>,[,]
            set incsearch
            set bg=dark
            set t_Co=256
            set cursorline
            "colorscheme anotherdark
            "set autoindent

            if has("autocmd")
                filetype plugin indent on
                augroup vimrcEx
                    au!
                    autocmd FileType text setlocal textwidth=78
                    autocmd BufReadPost *
                                \ if line("'\"") > 1 && line("'\"") <= line("$") |
                                \ exe "normal! g`\"" |
                                \ endif
                augroup END
            else
                set autoindent " always set autoindenting on
            endif

            autocmd BufEnter * lcd %:p:h

            map <F3> :silent! Tlist<CR>
            let Tlist_Ctags_Cmd='ctags'
            let Tlist_Use_Right_Window=1
            let Tlist_Show_One_File=0
            let Tlist_File_Fold_Auto_Close=1
            let Tlist_Exit_OnlyWindow=1
            let Tlist_Process_File_Always=0
            let Tlist_Inc_Winwidth=0

            map <F12> :call Do_CsTag()<CR>
            nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
            nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
            nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
            nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
            nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
            nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
            nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>
            nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
            function Do_CsTag()
                let dir = getcwd()
                if filereadable("tags")
                    let tagsdeleted=delete("./"."tags")
                    if(tagsdeleted!=0)
                        echohl WarningMsg | echo "Fail to do tags! I cannot delete the tags" | echohl None
                        return
                    endif
                endif
                if has("cscope")
                    silent! execute "cs kill -1"
                endif
                if filereadable("cscope.files")
                    let csfilesdeleted=delete("./"."cscope.files")
                    if(csfilesdeleted!=0)
                        echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.files" | echohl None
                        return
                    endif
                endif
                if filereadable("cscope.out")
                    let csoutdeleted=delete("./"."cscope.out")
                    if(csoutdeleted!=0)
                        echohl WarningMsg | echo "Fail to do cscope! I cannot delete the cscope.out" | echohl None
                        return
                    endif
                endif
                if(executable('ctags'))
                    "silent! execute "!ctags -R --c-types=+p --fields=+S *"
                    silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
                endif
                if(executable('cscope') && has("cscope") )
                    silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"
                    silent! execute "!cscope -b"
                    execute "normal :"
                    if filereadable("cscope.out")
                        execute "cs add cscope.out"
                    endif
                endif
            endfunction

            set showmatch

            map <F2> :NERDTreeToggle<CR>
            imap <F2> <ESC>:NERDTreeToggle<CR>


            map <F4> :Tlist<CR>
                let Tlist_Use_Right_Window=1
                    let Tlist_File_Fold_Auto_Close=1
            :nmap <C-a> <C-W>w      
            "set encoding=utf-8
            "set fileencoding=gb2312
            set encoding=utf-8

            set fileencodings=utf-8,chinese,latin-1
            "set termencoding = utf-8,chinese,latin-1
            "-----------------------------------------------------------------
            " plugin - NeoComplCache.vim    自動補全插件
            "-----------------------------------------------------------------
            " ctags 索引文件 (根據(jù)已經(jīng)生成的索引文件添加即可, 這里我額外添加了 hge 和 curl 的索引文件)
            set tags+=/usr/share/vim/cpp
            set tags+=/usr/share/vim/hge
            set tags+=/usr/share/vim/curl

            " OmniCppComplete
            let OmniCpp_NamespaceSearch = 1
            let OmniCpp_GlobalScopeSearch = 1
            let OmniCpp_ShowAccess = 1
            let OmniCpp_ShowPrototypeInAbbr = 1 " 顯示函數(shù)參數(shù)列表
            let OmniCpp_MayCompleteDot = 1   " 輸入 .  后自動補全
            let OmniCpp_MayCompleteArrow = 1 " 輸入 -> 后自動補全
            let OmniCpp_MayCompleteScope = 1 " 輸入 :: 后自動補全
            let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
            " 自動關(guān)閉補全窗口
            au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
            set completeopt=menuone,menu,longest
            smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)


            需要安裝nerdtree、ctag、taglist、OmniComplete插件。
            nerdtree需要用git clone命令下載,git clone https://github.com/scrooloose/nerdtree.git
            git的安裝比較麻煩,需要安裝perl和curl-dev、zlibc等,高版本的redhat默認是安裝了git,在安裝git中,make之前需要執(zhí)行一邊目錄的sh文件,否則會編譯不過,nerdtree.zip
            ,ctags58.zip,nerdtree的使用比較簡單講解壓縮后的doc、syntax、autoload、plugin里的文件分別拷貝到本機安裝的vim目錄的doc、
            syntax、autoload、plugin目錄中,注意不是覆蓋,將nerdtree_plugin文件夾拷貝到vim的目錄下,拷貝 nerdtree/lib 到 vim的安裝路徑,否則 Undefined variable: g:NERDTreeCreator;
            taglist的下載路徑http://sourceforge.net/projects/vim-taglist/files/latest/download?source=directory
            ,這里已經(jīng)下載好的taglist_46.zip,用法和nerdtree類似,將解壓縮后plugin下taglist.vim拷貝到vim的plugin目錄下,將doc目錄下的taglist.txt拷貝到doc目錄下。
            ctag可以再系統(tǒng)安裝盤中找到。下載地址:http://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz,./configure;make;make install安裝
            OmniComplete自動補全功能在以前的博客中發(fā)表過。

            posted on 2013-05-10 23:36 Benjamin 閱讀(819) 評論(0)  編輯 收藏 引用 所屬分類: linux

            久久精品国产半推半就| 久久精品成人欧美大片| 午夜精品久久久久久毛片| 人妻精品久久无码区| 久久青青草原国产精品免费| 91久久香蕉国产熟女线看| 思思久久99热只有频精品66| 日产精品久久久久久久| 久久99国产精品成人欧美| 2020久久精品亚洲热综合一本| 久久99精品久久久久久hb无码 | 久久精品无码免费不卡| 欧美日韩成人精品久久久免费看| 麻豆国内精品久久久久久| 久久国产亚洲精品无码| 久久夜色精品国产亚洲| 亚洲国产精品一区二区久久| 色诱久久久久综合网ywww| 久久国产成人亚洲精品影院| 久久国产色AV免费观看| 久久人人爽人人爽人人爽| 9191精品国产免费久久| 国产成人久久AV免费| 久久人人爽人人爽人人片AV高清| 国产韩国精品一区二区三区久久| 伊人久久免费视频| 国产精品无码久久久久久| 精品久久亚洲中文无码| 性做久久久久久久久久久| 97精品国产97久久久久久免费| 亚洲国产成人精品女人久久久| 国产综合久久久久| 亚洲国产另类久久久精品黑人| 久久亚洲欧美日本精品| 99久久综合狠狠综合久久止| 东方aⅴ免费观看久久av| 国产精品美女久久福利网站| 亚洲日韩欧美一区久久久久我| 国产日产久久高清欧美一区| 久久Av无码精品人妻系列| 久久99精品久久久久久久不卡|