Chinaunix首页 | 论坛 | 博客
  • 博客访问: 551307
  • 博文数量: 116
  • 博客积分: 2063
  • 博客等级: 大尉
  • 技术积分: 1174
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-26 16:44
个人简介

none

文章分类

全部博文(116)

文章存档

2023年(2)

2020年(3)

2019年(4)

2018年(7)

2017年(6)

2016年(17)

2015年(13)

2014年(19)

2013年(6)

2012年(13)

2011年(5)

2010年(11)

2008年(10)

分类: LINUX

2010-12-02 11:43:27

From http://dev.gentoo.org/~bass/configs/vimrc.html


scriptencoding utf-8

"-----------------------------------------------------------------------
"BaSS vimrc based con ciaran
"-----------------------------------------------------------------------

"-----------------------------------------------------------------------
" terminal setup
"-----------------------------------------------------------------------

" Extra terminal things
set termencoding=utf-8

if exists('&t_SI')
    let &t_SI = "\]12;lightgoldenrod\x7"
    let &t_EI = "\]12;grey80\x7"
endif

"-----------------------------------------------------------------------
" settings
"-----------------------------------------------------------------------

" Don't be compatible with vi
set nocompatible

" Enable a nice big viminfo file
set viminfo='1000,f1,:1000,/1000
set history=500

" Make backspace delete lots of things
set backspace=indent,eol,start

" Create backups
set backup

" Show us the command we're typing
set showcmd

" Highlight matching parens
set showmatch

" Search options: incremental search, highlight search
set hlsearch
set incsearch

" Selective case insensitivity
set ignorecase
set infercase

" Show full tags when doing search completion
set showfulltag

" Speed up macros
set lazyredraw

" No annoying error noises
set noerrorbells
set visualbell t_vb=
if has("autocmd")
    autocmd GUIEnter * set visualbell t_vb=
endif

" Try to show at least three lines and two columns of context when
" scrolling
set scrolloff=3
set sidescrolloff=2

" Wrap on these
set whichwrap+=<,>,[,]

" Use the cool tab complete menu
set wildmenu
set wildignore+=*.o,*~
set suffixes+=.in,.a

" Allow edit buffers to be hidden
set hidden

" 1 height windows
set winminheight=1

" Enable syntax highlighting
if has("syntax")
    syntax on
endif

" Set our fonts
if has("gui_kde")
    set guifont=Terminus/12/-1/5/50/0/0/0/0/0
elseif has("gui_gtk")
    set guifont=Terminus\ 12
elseif has("gui_running")
    set guifont=-xos4-terminus-medium-r-normal--12-140-72-72-c-80-iso8859-1
endif

" Try to load a nice colourscheme
color inkpot

" No icky toolbar, menu or scrollbars in the GUI
"if has('gui')
"    set guioptions-=m
"    set guioptions-=T
"    set guioptions-=l
"    set guioptions-=L
"    set guioptions-=r
"    set guioptions-=R
"end

" By default, go for an indent of 4 tab stuff
set expandtab
set shiftwidth=4
set tabstop=4

" Do clever indent things. Don't make a # force column zero.
set autoindent
set smartindent
inoremap # X#

" Enable folds
if has("folding")
    set foldenable
    set foldmethod=indent
endif

" Syntax when printing
set popt+=syntax:y

" Enable filetype settings
if has("eval")
    filetype on
    filetype plugin on
    filetype indent on
endif

" Enable modelines only on secure vim versions
if (v:version >= 604)
    set modeline
else
    set nomodeline
endif

" Nice statusbar
set laststatus=2
set statusline=
set statusline+=%2*%-3.3n%0*\                " buffer number
set statusline+=%f\                          " file name
set statusline+=%h%1*%m%r%w%0*               " flags
set statusline+=\[%{strlen(&ft)?&ft:'none'}, " filetype
set statusline+=%{&encoding},                " encoding
set statusline+=%{&fileformat}]              " file format
if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
    set statusline+=\ %{VimBuddy()}          " vim buddy
endif
set statusline+=%=                           " right align
set statusline+=%2*0x%-8B\                   " current char
set statusline+=%-14.(%l,%c%V%)\ %<%P        " offset

" special statusbar for special windows
if has("autocmd")
    au FileType qf
                \ if &buftype == "quickfix" |
                \     setlocal statusline=%2*%-3.3n%0* |
                \     setlocal statusline+=\ \[Compiler\ Messages\] |
                \     setlocal statusline+=%=%2*\ %<%P |
                \ endif

    fun! FixMiniBufExplorerTitle()
        if "-MiniBufExplorer-" == bufname("%")
            setlocal statusline=%2*%-3.3n%0*
            setlocal statusline+=\[Buffers\]
            setlocal statusline+=%=%2*\ %<%P
        endif
    endfun

    au BufWinEnter *
                \ let oldwinnr=winnr() |
                \ windo call FixMiniBufExplorerTitle() |
                \ exec oldwinnr . " wincmd w"
endif

" Nice window title
if has('title') && (has('gui_running') || &title)
    set titlestring=
    set titlestring+=%f\                     " file name
    set titlestring+=%h%m%r%w                " flags
    set titlestring+=\ -\ %{v:progname}      " program name
endif

" If possible, try to use a narrow number column.
if v:version >= 700
    try
        setlocal numberwidth=3
    catch
    endtry
endif

" Include $HOME in cdpath
if has("file_in_path")
    let &cdpath=','.expand("$HOME").','.expand("$HOME").'/work'
endif

" Better include path
set path+=src/

" Show tabs and trailing whitespace visually
"if (&termencoding == "utf-8") || has("gui_running")
"    if v:version >= 700
"        set list listchars=tab:?·,trail:·,extends:…,nbsp:?
"    else
"        set list listchars=tab:?·,trail:·,extends:…
"    endif
"else
"    if v:version >= 700
"        set list listchars=tab:>-,trail:.,extends:>,nbsp:_
"    else
"        set list listchars=tab:>-,trail:.,extends:>
"    endif
"endif

set fillchars=fold:-

"-----------------------------------------------------------------------
" completion
"-----------------------------------------------------------------------
set dictionary=/usr/share/dict/words

"-----------------------------------------------------------------------
" autocmds
"-----------------------------------------------------------------------

if has("eval")

    " If we're in a wide window, enable line numbers.
    fun! WindowWidth()
        if winwidth(0) > 90
            setlocal foldcolumn=1
            setlocal number
        else
            setlocal nonumber
            setlocal foldcolumn=0
        endif
    endfun
endif

" content creation
if has("autocmd")
    augroup content
        autocmd!

        autocmd BufNewFile *.rb 0put ='# vim: set sw=4 sts=4 et tw=80 :' |
                    \ 0put ='#!/usr/bin/ruby' | set sw=4 sts=4 et tw=80 |
                    \ norm G

        autocmd BufNewFile *.hh 0put ='/* vim: set sw=4 sts=4 et foldmethod=syntax : */' |
                    \ 1put ='' | call MakeIncludeGuards() |
                    \ 5put ='#include \"config.h\"' |
                    \ set sw=4 sts=4 et tw=80 | norm G

        autocmd BufNewFile *.cc 0put ='/* vim: set sw=4 sts=4 et foldmethod=syntax : */' |
                    \ 1put ='' | 2put ='' | call setline(3, '#include "' .
                    \ substitute(expand("%:t"), ".cc$", ".hh", "") . '"') |
                    \ set sw=4 sts=4 et tw=80 | norm G

        autocmd BufNewFile configure.ac
                    \ 0put ='dnl vim: set sw=8 sts=8 noet :' |
                    \ $put ='' |
                    \ call setline(line('$'), 'AC_INIT([' . substitute(expand('%:p:h'),
                    \     '^.\{-}/\([^/]\+\)\(/trunk\)\?$', '\1', '') . '], [0.0])') |
                    \ $put ='AC_PREREQ(2.5)' |
                    \ $put ='AC_CONFIG_SRCDIR([])' |
                    \ $put ='AC_CONFIG_AUX_DIR(config)' |
                    \ $put ='AM_INIT_AUTOMAKE(1.9)' |
                    \ $put ='' |
                    \ $put ='dnl check for required programs' |
                    \ $put ='AC_PROG_CXX' |
                    \ $put ='AC_PROG_INSTALL' |
                    \ $put ='AC_PROG_LN_S' |
                    \ $put ='AC_PROG_RANLIB' |
                    \ $put ='AC_PROG_MAKE_SET' |
                    \ $put ='' |
                    \ $put ='dnl output' |
                    \ $put ='AM_CONFIG_HEADER(config.h)' |
                    \ $put ='AC_OUTPUT(' |
                    \ $put ='   Makefile' |
                    \ $put ='   src/Makefile' |
                    \ $put ='   )' |
                    \ set sw=8 sts=8 noet |
                    \ norm ggjjjjf]

        autocmd BufNewFile autogen.bash
                    \ 0put ='#!/usr/bin/env bash' |
                    \ 1put ='# vim: set sw=4 sts=4 et tw=80 :' |
                    \ $put ='run() {' |
                    \ $put ='echo \">>> $@\"' |
                    \ $put ='    if ! $@ ; then' |
                    \ $put ='        echo \"oops!\" 1>&2' |
                    \ $put ='        exit 127' |
                    \ $put ='    fi' |
                    \ $put ='}' |
                    \ $put ='' |
                    \ $put ='get() {' |
                    \ $put ='    type ${1}-${2}    &>/dev/null && echo ${1}-${2}    && return' |
                    \ $put ='    type ${1}${2//.}  &>/dev/null && echo ${1}${2//.}  && return' |
                    \ $put ='    type ${1}         &>/dev/null && echo ${1}         && return' |
                    \ $put ='    echo \"Could not find ${1} ${2}\" 1>&2' |
                    \ $put ='    exit 127' |
                    \ $put ='}' |
                    \ $put ='' |
                    \ $put ='run mkdir -p config' |
                    \ $put ='run $(get libtoolize 1.5 ) --copy --force --automake' |
                    \ $put ='rm -f config.cache' |
                    \ $put ='run $(get aclocal 1.9 )' |
                    \ $put ='run $(get autoheader 2.59 )' |
                    \ $put ='run $(get autoconf 2.59 )' |
                    \ $put ='run $(get automake 1.9 ) -a --copy' |
                    \ set sw=4 sts=4 et tw=80 |
                    \ norm gg=Ggg

        autocmd BufNewFile Makefile.am
                    \ 0put ='CLEANFILES = *~' |
                    \ if (! filereadable(expand("%:p:h:h") . '/Makefile.am')) |
                    \     $put ='MAINTAINERCLEANFILES = Makefile.in configure config/* aclocal.m4 \' |
                    \     $put ='' |
                    \     call setline(line('$'), "\t\t\tconfig.h config.h.in") |
                    \     $put ='AUTOMAKE_OPTIONS = foreign dist-bzip2' |
                    \     $put ='EXTRA_DIST = autogen.bash' |
                    \ else |
                    \     $put ='MAINTAINERCLEANFILES = Makefile.in' |
                    \ endif

    augroup END
endif

"-----------------------------------------------------------------------
" mappings
"-----------------------------------------------------------------------

nmap    :bnext

" v_K is really really annoying
vmap K k

" Delete a buffer but keep layout
if has("eval")
    command! Kwbd enew|bw #
    nmap     !   :Kwbd
endif

" quickfix things
nmap cwc :cclose
nmap cwo :botright copen 5p
nmap cn  :cnext

" Annoying default mappings
inoremap   gk
inoremap gj
noremap     gk
noremap   gj

" Make in normal mode go down a page rather than left a
" character
noremap

" Useful things from inside imode
inoremap w :w
inoremap q gq}k$

" Commonly used commands
"nmap :silent nohlsearch
"imap :silent nohlsearch
"nmap :Kwbd
"nmap c
"nmap :make check
"nmap :make
"nmap :!svn update
"nmap :!svn status \| grep -v '^?' \| sort -k2

" Insert a single char
noremap i ir

" Split the line
nmap n \i

" Pull the following line to the cursor position
noremap J :s/\%#\(.*\)\n\(.*\)/\2\1

" In normal mode, jj escapes
inoremap jj

" Kill line
noremap "_dd

" Select everything
noremap gg ggVG

" Reformat everything
noremap gq gggqG

" Reformat paragraph
noremap gp gqap

" Clear lines
noremap clr :s/^.*$//:nohls

" Delete blank lines
noremap dbl :g/^$/d:nohls

" Enclose each selected line with markers
noremap enc :execute
            \ substitute(":'<,'>s/^.*/#&#/ \| :nohls", "#", input(">"), "g")

" Enable fancy % matching
if has("eval")
    runtime! macros/matchit.vim
endif

" q: sucks
nmap q: :q

" set up some more useful digraphs
if has("digraphs")
    digraph ., 8230    " ellipsis (…)
endif

if has("eval")
    " GNU format changelog entry
    fun! MakeChangeLogEntry()
        norm gg
        /^\d
        norm 2O
        norm k
        call setline(line("."), strftime("%Y-%m-%d") .
                    \ " J. Alberto Suárez López ")
        norm 2o
        call setline(line("."), "\t* ")
        norm $
    endfun
    noremap cl :call MakeChangeLogEntry()

    " command aliases, can't call these until after cmdalias.vim is loaded
    au VimEnter * if exists("loaded_cmdalias") |
                \       call CmdAlias("mkdir",   "!mkdir") |
                \       call CmdAlias("cvs",     "!cvs") |
                \       call CmdAlias("svn",     "!svn") |
                \       call CmdAlias("commit",  "!svn commit -m \"") |
                \       call CmdAlias("upload",  "make upload") |
                \ endif
endif

" super i_c-y / i_c-e
if v:version >= 700 && has("eval")
    fun! SuperYank(offset)
        let l:cursor_pos = col(".")
        let l:this_line = line(".")
        let l:source_line = l:this_line + a:offset
        let l:this_line_text = getline(l:this_line)
        let l:source_line_text = getline(l:source_line)
        let l:add_text = ""

        let l:motion = "" . nr2char(getchar())
        if -1 != match(l:motion, '\d')
            let l:count = 0
            while -1 != match(l:motion, '\d')
                let l:count = l:count * 10 + l:motion
                let l:motion = "" . nr2char(getchar())
            endwhile
        else
            let l:count = 1
        endif

        if l:motion == "$"
            let l:add_text = strpart(l:source_line_text, l:cursor_pos - 1)
        elseif l:motion == "w"
            let l:add_text = strpart(l:source_line_text, l:cursor_pos - 1)
            let l:add_text = substitute(l:add_text,
                        \ '^\(\s*\%(\S\+\s*\)\{,' . l:count . '}\)\?.*', '\1', '')
        elseif l:motion == "f" || l:motion == "t"
            let l:add_text = strpart(l:source_line_text, l:cursor_pos - 1)
            let l:char = nr2char(getchar())
            let l:pos = matchend(l:add_text,
                        \ '^\%([^' . l:char . ']\{-}' . l:char . '\)\{' . l:count . '}')
            if -1 != l:pos
                let l:add_text = strpart(l:add_text, 0, l:motion == "f" ? l:pos : l:pos - 1)
            else
                let l:add_text = ''
            endif
        else
            echo "Unknown motion: " . l:motion
        endif

        if l:add_text != ""
            let l:new_text = strpart(l:this_line_text, 0, l:cursor_pos - 1) .
                        \ l:add_text . strpart(l:this_line_text, l:cursor_pos - 1)
            call setline(l:this_line, l:new_text)
            call cursor(l:this_line, l:cursor_pos + strlen(l:add_text))
        endif
    endfun

    inoremap y :call SuperYank(-1)
    inoremap e :call SuperYank(1)
endif

" tab completion
if has("eval")
    function! CleverTab()
        if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$'
            return "\"
        else
            return "\"
        endif
    endfun
    inoremap =CleverTab()
    inoremap
endif

"-----------------------------------------------------------------------
" abbreviations
"-----------------------------------------------------------------------

if has("eval") && has("autocmd")
    fun! abbrev_cpp()
        iabbrev raise throw
        iabbrev jci const_iterator
        iabbrev jcl class
        iabbrev jco const
        iabbrev jdb \bug
        iabbrev jde \throws
        iabbrev jdf /** \file/
        iabbrev jdg \ingroup
        iabbrev jdn /** \namespace/
        iabbrev jdp \param
        iabbrev jdt \test
        iabbrev jdx /**/
        iabbrev jit iterator
        iabbrev jns namespace
        iabbrev jpr protected
        iabbrev jpu public
        iabbrev jpv private
        iabbrev jsl std::list
        iabbrev jsm std::map
        iabbrev jss std::string
        iabbrev jsv std::vector
        iabbrev jty typedef
        iabbrev jun using namespace
        iabbrev jvi virtual
    endfun

    augroup abbreviations
        autocmd!
        autocmd FileType cpp :call abbrev_cpp()
    augroup END
endif

"-----------------------------------------------------------------------
" special less.sh and man modes
"-----------------------------------------------------------------------

if has("eval") && has("autocmd")
    fun! check_pager_mode()
        if exists("g:loaded_less") && g:loaded_less
            " we're in vimpager / less.sh / man mode
            set laststatus=0
            set ruler
            set foldmethod=manual
            set foldlevel=99
            set nolist
        endif
    endfun
    autocmd VimEnter * :call check_pager_mode()
endif

"-----------------------------------------------------------------------
" plugin / script / app settings
"-----------------------------------------------------------------------

if has("eval")
    " Perl specific options
    let perl_include_pod=1
    let perl_fold=1
    let perl_fold_blocks=1

    " Vim specific options
    let g:vimsyntax_noerror=1
    let g:vimembedscript=0

    " c specific options
    let g:c_gnu=1
    let g:c_no_curly_error=1

    " eruby options
    au Syntax * hi link erubyRubyDelim Directory

    " Settings for taglist.vim
    let Tlist_Use_Right_Window=1
    let Tlist_Auto_Open=0
    let Tlist_Enable_Fold_Column=0
    let Tlist_Compact_Format=1
    let Tlist_WinWidth=28
    let Tlist_Exit_OnlyWindow=1
    let Tlist_File_Fold_Auto_Close = 1
    nnoremap :Tlist

    " Settings minibufexpl.vim
    let g:miniBufExplModSelTarget = 1
    let g:miniBufExplWinFixHeight = 1
    let g:miniBufExplWinMaxSize = 1
    " let g:miniBufExplForceSyntaxEnable = 1

    " Settings for showmarks.vim
    if has("gui_running")
        let g:showmarks_enable=1
    else
        let g:showmarks_enable=0
        let loaded_showmarks=1
    endif

    let g:showmarks_include="abcdefghijklmnopqrstuvwxyz"

    if has("autocmd")
        fun! FixShowmarksColours()
            if has('gui')
                hi ShowMarksHLl gui=bold guifg=#a0a0e0 guibg=#2e2e2e
                hi ShowMarksHLu gui=none guifg=#a0a0e0 guibg=#2e2e2e
                hi ShowMarksHLo gui=none guifg=#a0a0e0 guibg=#2e2e2e
                hi ShowMarksHLm gui=none guifg=#a0a0e0 guibg=#2e2e2e
                hi SignColumn   gui=none guifg=#f0f0f8 guibg=#2e2e2e
            endif
        endfun
        if v:version >= 700
            autocmd VimEnter,Syntax,ColorScheme * call FixShowmarksColours()
        else
            autocmd VimEnter,Syntax * call FixShowmarksColours()
        endif
    endif

    " Settings for explorer.vim
    let g:explHideFiles='^\.'

    " Settings for netrw
    let g:netrw_list_hide='^\.,\~$'

    " Settings for :TOhtml
    let html_number_lines=1
    let html_use_css=1
    let use_xhtml=1

    " cscope settings
    if has('cscope') && filereadable("/usr/bin/cscope")
        set csto=0
        set cscopetag
        set nocsverb
        if filereadable("cscope.out")
            cs add cscope.out
        endif
        set csverb

        let x = "sgctefd"
        while x != ""
            let y = strpart(x, 0, 1) | let x = strpart(x, 1)
            exec "nmap " . y . " :cscope find " . y .
                        \ " =expand(\"\\")"
            exec "nmap " . y . " :scscope find " . y .
                        \ " =expand(\"\\")"
        endwhile
        nmap i      :cscope find i ^=expand("")
        nmap i :scscope find i ^=expand("")
    endif
endif

"-----------------------------------------------------------------------
" final commands
"-----------------------------------------------------------------------
" mio
let Tlist_Ctags_Cmd="/usr/bin/exuberant-ctags"
" plegado ident para python
au FileType python set foldmethod=indent
" plegado syntax para sgml,htmls,xml y xsl
au Filetype html,xml,xsl,sgml,docbook
" explorador vertical
let g:explVertical=1
" define leader como =
let mapleader = "="

map :vsplit ~/.vim/ref_full.vim
map :11vsplit ~/.vim/ref.vim
map :Sexplore /home/bass/
map :2split ~/.vim/fun_ref.vim
map :set nu
map :set nu!
map ggVGg?
map :set encoding=utf-8 | :set fenc=utf-8
map :set encoding=iso8859-15 | :set fenc=iso8859-15
map :SpellProposeAlternatives
map :SpellCheck
map :let spell_language_list = "english,spanish"
nnoremap :Tlist
nnoremap :TlistSync
map !!date
map :TC
nmap  :X        :x
nmap  :W        :w
nmap  :Q        :q
noremap rg :color relaxedgreen
noremap ip :color inkpot

" CVS
nmap cadd CVSAdd
nmap cci CVSCommit
nmap clog CVSLog
map cre CVSRevert
nmap cup CVSUpdate
nmap cdiff CVSDiff

" Spell
let spell_executable = "aspell"
let spell_language_list = "spanish,english"

" Comentiffy
let g:EnhCommentifyMultiPartBlocks = 'yes'
let g:EnhCommentifyAlignRight = 'yes'
" let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
" let g:EnhCommentifyUserBindings = 'yes'

" turn off any existing search
if has("autocmd")
    au VimEnter * nohls
endif

"-----------------------------------------------------------------------
" vim: set shiftwidth=4 softtabstop=4 expandtab tw=72                  :


From http://dev.gentoo.org/~bass/configs/vimrc.html
阅读(1407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~