您的位置:首页 > 其它

VIM配置文件vimrc

2014-08-12 12:00 316 查看
VIM配置文件vimrc

Ubuntu 默认情况下只安装tiny-vim , 只要运行 sudo apt-get install vim 安装完整的vim就好了

.vimrc 下载

[python] view
plaincopyprint?

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"

" Author: sunboy_2050

" Version: 1.0

" Last Change: 2011-11-11 11:11:11

" http://blog.csdn.net/sunboy_2050

"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" General

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Get out of VI's compatible mode..

set nocompatible



" Platform

function! MySys()

return "linux"

endfunction



"Sets how many lines of history VIM har to remember

set history=400



" Chinese

if MySys() == "windows"

"set encoding=utf-8

"set langmenu=zh_CN.UTF-8

"language message zh_CN.UTF-8

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

endif



"Enable filetype plugin

filetype plugin on

filetype indent on



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

set autoread



"Have the mouse enabled all the time:

set mouse=a



"Set mapleader

let mapleader = ","

let g:mapleader = ","



"Fast saving

nmap <silent> <leader>ww :w<cr>

nmap <silent> <leader>wf :w!<cr>



"Fast quiting

nmap <silent> <leader>qw :wq<cr>

nmap <silent> <leader>qf :q!<cr>

nmap <silent> <leader>qq :q<cr>

nmap <silent> <leader>qa :qa<cr>



"Fast remove highlight search

nmap <silent> <leader><cr> :noh<cr>



"Fast redraw

nmap <silent> <leader>rr :redraw!<cr>



" Switch to buffer according to file name

function! SwitchToBuf(filename)

"let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")

" find in current tab

let bufwinnr = bufwinnr(a:filename)

if bufwinnr != -1

exec bufwinnr . "wincmd w"

return

else

" find in each tab

tabfirst

let tab = 1

while tab <= tabpagenr("{1}quot;)

let bufwinnr = bufwinnr(a:filename)

if bufwinnr != -1

exec "normal " . tab . "gt"

exec bufwinnr . "wincmd w"

return

endif

tabnext

let tab = tab + 1

endwhile

" not exist, new tab

exec "tabnew " . a:filename

endif

endfunction



"Fast edit vimrc

if MySys() == 'linux'

"Fast reloading of the .vimrc

map <silent> <leader>ss :source ~/.vimrc<cr>

"Fast editing of .vimrc

map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>

"When .vimrc is edited, reload it

autocmd! bufwritepost .vimrc source ~/.vimrc

elseif MySys() == 'windows'

" Set helplang

set helplang=cn

"Fast reloading of the _vimrc

map <silent> <leader>ss :source ~/_vimrc<cr>

"Fast editing of _vimrc

map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr>

"When _vimrc is edited, reload it

autocmd! bufwritepost _vimrc source ~/_vimrc

"Fast copying from linux

func! CopyFromZ()

autocmd! bufwritepost _vimrc

exec 'split y:/.vimrc'

exec 'normal 17G'

exec 's/return "linux"/return "windows"/'

exec 'w! ~/_vimrc'

exec 'normal u'

exec 'q'

endfunc

nnoremap <silent> <leader>uu :call CopyFromZ()<cr>:so ~/_vimrc<cr>

endif



" For windows version

if MySys() == 'windows'

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



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Colors and Fonts

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



"Set font

"if MySys() == "linux"

" set gfn=Monospace\ 11

"endif



" Avoid clearing hilight definition in plugins

if !exists("g:vimrc_loaded")

"Enable syntax hl

syntax enable



" color scheme

if has("gui_running")

set guioptions-=T

set guioptions-=m

set guioptions-=L

set guioptions-=r

colorscheme darkblue_my

"hi normal guibg=#294d4a

else

"colorscheme desert_my"

endif " has

endif " exists(...)



"Some nice mapping to switch syntax (useful if one mixes different languages in one file)

map <leader>1 :set syntax=c<cr>

map <leader>2 :set syntax=xhtml<cr>

map <leader>3 :set syntax=python<cr>

map <leader>4 :set ft=javascript<cr>

map <leader>$ :syntax sync fromstart<cr>



autocmd BufEnter * :syntax sync fromstart



"Highlight current

"if has("gui_running")

" set cursorline

" hi cursorline guibg=#333333

" hi CursorColumn guibg=#333333

"endif



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Fileformats

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Favorite filetypes

set ffs=unix,dos



nmap <leader>fd :se ff=dos<cr>

nmap <leader>fu :se ff=unix<cr>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" VIM userinterface

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Set 7 lines to the curors - when moving vertical..

"set so=7



" Maximum window when GUI running

if has("gui_running")

set lines=9999

set columns=9999

endif



"Turn on WiLd menu

set wildmenu



"Always show current position

set ruler



"The commandbar is 2 high

set cmdheight=2



"Show line number

set nu



"Do not redraw, when running macros.. lazyredraw

set lz



"Change buffer - without saving

"set hid



"Set backspace

set backspace=eol,start,indent



"Bbackspace and cursor keys wrap to

"set whichwrap+=<,>,h,l

set whichwrap+=<,>



"Ignore case when searching

"set ignorecase



"Include search

set incsearch



"Highlight search things

set hlsearch



"Set magic on

set magic



"No sound on errors.

set noerrorbells

set novisualbell

set t_vb=



"show matching bracets

"set showmatch



"How many tenths of a second to blink

"set mat=2



""""""""""""""""""""""""""""""

" Statusline

""""""""""""""""""""""""""""""

"Always hide the statusline

set laststatus=2



function! CurDir()

let curdir = substitute(getcwd(), '/home/easwy/', "~/", "g")

return curdir

endfunction



"Format the statusline

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







""""""""""""""""""""""""""""""

" Visual

""""""""""""""""""""""""""""""

" 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{1}quot;, "", "")

if a:direction == 'b'

execute "normal ?" . l:pattern . "^M"

else

execute "normal /" . l:pattern . "^M"

endif

let @/ = l:pattern

let @" = l:saved_reg

endfunction



"Basically you press * or # to search for the current selection !! Really useful

vnoremap <silent> * :call VisualSearch('f')<CR>

vnoremap <silent> # :call VisualSearch('b')<CR>





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Moving around and tabs

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Map space to / and c-space to ?

"map <space> /

"map <c-space> ?



"Smart way to move btw. windows

nmap <C-j> <C-W>j

nmap <C-k> <C-W>k

nmap <C-h> <C-W>h

nmap <C-l> <C-W>l



"Actually, the tab does not switch buffers, but my arrows

"Bclose function can be found in "Buffer related" section

map <leader>bd :Bclose<cr>

"map <down> <leader>bd



"Use the arrows to something usefull

"map <right> :bn<cr>

"map <left> :bp<cr>



"Tab configuration

map <leader>tn :tabnew

map <leader>te :tabedit

map <leader>tc :tabclose<cr>

map <leader>tm :tabmove

try

set switchbuf=useopen

set stal=1

catch

endtry



"Moving fast to front, back and 2 sides ;)

imap <m-{1}gt; <esc>$a

imap <m-0> <esc>0i



"Switch to current dir

map <silent> <leader>cd :cd %:p:h<cr>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 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 @w <esc>`>a"<esc>`<i"<esc>



"Map auto complete of (, ", ', [

inoremap @1 ()<esc>:let leavechar=")"<cr>i

inoremap @2 []<esc>:let leavechar="]"<cr>i

inoremap @3 {}<esc>:let leavechar="}"<cr>i

inoremap @4 {<esc>o}<esc>:let leavechar="}"<cr>O

inoremap @q ''<esc>:let leavechar="'"<cr>i

inoremap @w ""<esc>:let leavechar='"'<cr>i

"au BufNewFile,BufRead *.\(vim\)\@! inoremap " ""<esc>:let leavechar='"'<cr>i

"au BufNewFile,BufRead *.\(txt\)\@! inoremap ' ''<esc>:let leavechar="'"<cr>i



"imap <m-l> <esc>:exec "normal f" . leavechar<cr>a

"imap <d-l> <esc>:exec "normal f" . leavechar<cr>a





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" General Abbrevs

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"My information

iab xdate <c-r>=strftime("%c")<cr>

iab xname Easwy Yang





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Editing mappings etc.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



func! DeleteTrailingWS()

exe "normal mz"

%s/\s\+$//ge

nohl

exe "normal `z"

endfunc



" do not automaticlly remove trailing whitespace

"autocmd BufWrite *.[ch] :call DeleteTrailingWS()

"autocmd BufWrite *.cc :call DeleteTrailingWS()

"autocmd BufWrite *.txt :call DeleteTrailingWS()

nmap <silent> <leader>ws :call DeleteTrailingWS()<cr>:w<cr>

"nmap <silent> <leader>ws! :call DeleteTrailingWS()<cr>:w!<cr>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Command-line config

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Bash like

cnoremap <C-A> <Home>

cnoremap <C-E> <End>

cnoremap <C-K> <C-U>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Buffer realted

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Open a dummy buffer for paste

map <leader>es :tabnew<cr>:setl buftype=nofile<cr>

if MySys() == "linux"

map <leader>ec :tabnew ~/tmp/scratch.txt<cr>

else

map <leader>ec :tabnew $TEMP/scratch.txt<cr>

endif



"Restore cursor to file position in previous editing session

set viminfo='10,\"100,:20,n~/.viminfo

au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("{1}quot;)|exe("norm '\"")|else|exe "norm {1}quot;|endif|endif



" Don't close window, when deleting a buffer

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



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Session options

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set sessionoptions-=curdir

set sessionoptions+=sesdir



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Files and backups

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Turn backup off

set nobackup

set nowb

"set noswapfile





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Folding

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Enable folding, I find it very useful

"set fen

"set fdl=0

nmap <silent> <leader>zo zO

vmap <silent> <leader>zo zO





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Text options

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set expandtab

set shiftwidth=4



map <leader>t2 :set shiftwidth=2<cr>

map <leader>t4 :set shiftwidth=4<cr>

au FileType html,python,vim,javascript setl shiftwidth=2

"au FileType html,python,vim,javascript setl tabstop=2

au FileType java,c setl shiftwidth=4

"au FileType java setl tabstop=4

au FileType txt setl lbr

au FileType txt setl tw=78



set smarttab

"set lbr

"set tw=78



""""""""""""""""""""""""""""""

" Indent

""""""""""""""""""""""""""""""

"Auto indent

set ai



"Smart indet

set si



"C-style indeting

set cindent



"Wrap lines

set wrap





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Spell checking

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

map <leader>sn ]s

map <leader>sp [s

map <leader>sa zg

map <leader>s? z=



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Complete

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" options

set completeopt=menu

set complete-=u

set complete-=i



" mapping

inoremap <expr> <CR> pumvisible()?"\<C-Y>":"\<CR>"

inoremap <expr> <C-J> pumvisible()?"\<PageDown>\<C-N>\<C-P>":"\<C-X><C-O>"

inoremap <expr> <C-K> pumvisible()?"\<PageUp>\<C-P>\<C-N>":"\<C-K>"

inoremap <expr> <C-U> pumvisible()?"\<C-E>":"\<C-U>"

inoremap <C-]> <C-X><C-]>

inoremap <C-F> <C-X><C-F>

inoremap <C-D> <C-X><C-D>

inoremap <C-L> <C-X><C-L>



" Enable syntax

if has("autocmd") && exists("+omnifunc")

autocmd Filetype *

\if &omnifunc == "" |

\ setlocal omnifunc=syntaxcomplete#Complete |

\endif

endif



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" cscope setting

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if has("cscope")

if MySys() == "linux"

set csprg=/usr/bin/cscope

else

set csprg=cscope

endif

set csto=1

set cst

set nocsverb

" add any database in current directory

if filereadable("cscope.out")

cs add cscope.out

endif

set csverb

endif



nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><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>

nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>

nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>

nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>

nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR>

nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Plugin configuration

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""

" Super Tab

""""""""""""""""""""""""""""""

"let g:SuperTabDefaultCompletionType = "<C-X><C-O>"

let g:SuperTabDefaultCompletionType = "<C-P>"



""""""""""""""""""""""""""""""

" yank ring setting

""""""""""""""""""""""""""""""

map <leader>yr :YRShow<cr>



""""""""""""""""""""""""""""""

" file explorer setting

""""""""""""""""""""""""""""""

"Split vertically

let g:explVertical=1



"Window size

let g:explWinSize=35



let g:explSplitLeft=1

let g:explSplitBelow=1



"Hide some files

let g:explHideFiles='^\.,.*\.class$,.*\.swp$,.*\.pyc$,.*\.swo$,\.DS_Store

[python] view
plaincopyprint?

"Hide the help thing..

let g:explDetailedHelp=0









""""""""""""""""""""""""""""""

" minibuffer setting

""""""""""""""""""""""""""""""

let loaded_minibufexplorer = 1 " *** Disable minibuffer plugin

let g:miniBufExplorerMoreThanOne = 2 " Display when more than 2 buffers

let g:miniBufExplSplitToEdge = 1 " Always at top

let g:miniBufExplMaxSize = 3 " The max height is 3 lines

let g:miniBufExplMapWindowNavVim = 1 " map CTRL-[hjkl]

let g:miniBufExplUseSingleClick = 1 " select by single click

let g:miniBufExplModSelTarget = 1 " Dont change to unmodified buffer

let g:miniBufExplForceSyntaxEnable = 1 " force syntax on

"let g:miniBufExplVSplit = 25

"let g:miniBufExplSplitBelow = 0





autocmd BufRead,BufNew :call UMiniBufExplorer





""""""""""""""""""""""""""""""

" bufexplorer setting

""""""""""""""""""""""""""""""

let g:bufExplorerDefaultHelp=1 " Do not show default help.

let g:bufExplorerShowRelativePath=1 " Show relative paths.

let g:bufExplorerSortBy='mru' " Sort by most recently used.

let g:bufExplorerSplitRight=0 " Split left.

let g:bufExplorerSplitVertical=1 " Split vertically.

let g:bufExplorerSplitVertSize = 30 " Split width

let g:bufExplorerUseCurrentWindow=1 " Open in new window.

let g:bufExplorerMaxHeight=13 " Max height





""""""""""""""""""""""""""""""

" taglist setting

""""""""""""""""""""""""""""""

if MySys() == "windows"

let Tlist_Ctags_Cmd = 'ctags'

elseif MySys() == "linux"

let Tlist_Ctags_Cmd = '/usr/bin/ctags'

endif

let Tlist_Show_One_File = 1

let Tlist_Exit_OnlyWindow = 1

let Tlist_Use_Right_Window = 1

nmap <silent> <leader>tl :Tlist<cr>





""""""""""""""""""""""""""""""

" winmanager setting

""""""""""""""""""""""""""""""

let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"

let g:winManagerWidth = 30

let g:defaultExplorer = 0

nmap <C-W><C-F> :FirstExplorerWindow<cr>

nmap <C-W><C-B> :BottomExplorerWindow<cr>

nmap <silent> <leader>wm :WMToggle<cr>

autocmd BufWinEnter \[Buf\ List\] setl nonumber





""""""""""""""""""""""""""""""

" netrw setting

""""""""""""""""""""""""""""""

let g:netrw_winsize = 30

nmap <silent> <leader>fe :Sexplore!<cr>





""""""""""""""""""""""""""""""

" LaTeX Suite things

""""""""""""""""""""""""""""""

set grepprg=grep\ -nH\ $*

let g:Tex_DefaultTargetFormat="pdf"

let g:Tex_ViewRule_pdf='xpdf'





"Bindings

autocmd FileType tex map <silent><leader><space> :w!<cr> :silent! call Tex_RunLaTeX()<cr>





"Auto complete some things ;)

autocmd FileType tex inoremap $i \indent

autocmd FileType tex inoremap $* \cdot

autocmd FileType tex inoremap $i \item

autocmd FileType tex inoremap $m \[<cr>\]<esc>O









""""""""""""""""""""""""""""""

" lookupfile setting

""""""""""""""""""""""""""""""

let g:LookupFile_MinPatLength = 2

let g:LookupFile_PreserveLastPattern = 0

let g:LookupFile_PreservePatternHistory = 0

let g:LookupFile_AlwaysAcceptFirst = 1

let g:LookupFile_AllowNewFiles = 0

if filereadable("./filenametags")

let g:LookupFile_TagExpr = '"./filenametags"'

endif

nmap <silent> <leader>lk <Plug>LookupFile<cr>

nmap <silent> <leader>ll :LUBufs<cr>

nmap <silent> <leader>lw :LUWalk<cr>





" lookup file with ignore case

function! LookupFile_IgnoreCaseFunc(pattern)

let _tags = &tags

try

let &tags = eval(g:LookupFile_TagExpr)

let newpattern = '\c' . a:pattern

let tags = taglist(newpattern)

catch

echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE

return ""

finally

let &tags = _tags

endtry





" Show the matches for what is typed so far.

let files = map(tags, 'v:val["filename"]')

return files

endfunction

let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'





""""""""""""""""""""""""""""""

" markbrowser setting

""""""""""""""""""""""""""""""

nmap <silent> <leader>mk :MarksBrowser<cr>





""""""""""""""""""""""""""""""

" showmarks setting

""""""""""""""""""""""""""""""

" Enable ShowMarks

let showmarks_enable = 1

" Show which marks

let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

" Ignore help, quickfix, non-modifiable buffers

let showmarks_ignore_type = "hqm"

" Hilight lower & upper marks

let showmarks_hlline_lower = 1

let showmarks_hlline_upper = 1





""""""""""""""""""""""""""""""

" mark setting

""""""""""""""""""""""""""""""

nmap <silent> <leader>hl <Plug>MarkSet

vmap <silent> <leader>hl <Plug>MarkSet

nmap <silent> <leader>hh <Plug>MarkClear

vmap <silent> <leader>hh <Plug>MarkClear

nmap <silent> <leader>hr <Plug>MarkRegex

vmap <silent> <leader>hr <Plug>MarkRegex





""""""""""""""""""""""""""""""

" FeralToggleCommentify setting

""""""""""""""""""""""""""""""

let loaded_feraltogglecommentify = 1

"map <silent> <leader>tc :call ToggleCommentify()<CR>j

"imap <M-c> <ESC>:call ToggleCommentify()<CR>j





""""""""""""""""""""""""""""""

" vimgdb setting

""""""""""""""""""""""""""""""

let g:vimgdb_debug_file = ""

run macros/gdb_mappings.vim





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Filetype generic

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Todo

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

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





""""""""""""""""""""""""""""""

" HTML related

""""""""""""""""""""""""""""""

" HTML entities - used by xml edit plugin

let xml_use_xhtml = 1

"let xml_no_auto_nesting = 1





"To HTML

let html_use_css = 1

let html_number_lines = 0

let use_xhtml = 1





"""""""""""""""""""""""""""""""

" Vim section

"""""""""""""""""""""""""""""""

autocmd FileType vim set nofen

autocmd FileType vim map <buffer> <leader><space> :w!<cr>:source %<cr>





""""""""""""""""""""""""""""""

" HTML

"""""""""""""""""""""""""""""""

au FileType html set ft=xml

au FileType html set syntax=html









""""""""""""""""""""""""""""""

" C/C++

"""""""""""""""""""""""""""""""

autocmd FileType c,cpp map <buffer> <leader><space> :make<cr>

"autocmd FileType c,cpp setl foldmethod=syntax | setl fen





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" MISC

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"Quickfix

nmap <leader>cn :cn<cr>

nmap <leader>cp :cp<cr>

nmap <leader>cw :cw 10<cr>

"nmap <leader>cc :botright lw 10<cr>

"map <c-u> <c-l><c-j>:q<cr>:botright cw 10<cr>





function! s:GetVisualSelection()

let save_a = @a

silent normal! gv"ay

let v = @a

let @a = save_a

let var = escape(v, '\\/.$*')

return var

endfunction





" Fast grep

nmap <silent> <leader>lv :lv /<c-r>=expand("<cword>")<cr>/ %<cr>:lw<cr>

vmap <silent> <leader>lv :lv /<c-r>=<sid>GetVisualSelection()<cr>/ %<cr>:lw<cr>





" Fast diff

cmap @vd vertical diffsplit

set diffopt+=vertical





"Remove the Windows ^M

noremap <Leader>dm mmHmn:%s/<C-V><cr>//ge<cr>'nzt'm





"Paste toggle - when pasting something in, don't indent.

set pastetoggle=<F3>





"Remove indenting on empty lines

"map <F2> :%s/\s*$//g<cr>:noh<cr>''





"Super paste

"inoremap <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>





"Fast Ex command

nnoremap ; :





"For mark move

nnoremap <leader>' '





"Fast copy

nnoremap ' "





"A function that inserts links & anchors on a TOhtml export.

" Notice:

" Syntax used is:

" Link

" Anchor

function! SmartTOHtml()

TOhtml

try

%s/"\s\+\*> \(.\+\)</" <a href="#\1" style="color: cyan">\1<\/a></g

%s/"\(-\|\s\)\+\*> \(.\+\)</" \ \  <a href="#\2" style="color: cyan;">\2<\/a></g

%s/"\s\+=> \(.\+\)</" <a name="\1" style="color: #fff">\1<\/a></g

catch

endtry

exe ":write!"

exe ":bd"

endfunction









""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Mark as loaded

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

let g:vimrc_loaded = 1

===========================================================================

vimrc配置文件详解

"set encoding=chinese

"set langmenu=zh_CN.UTF-8"

if version >= 603

set helplang=cn

endif

set langmenu=zh_CN.UTF-8

"set imcmdline "这一句导致字体大小、颜色设置失效

"set guifont=Monospace/ 12

set guifont=DejaVu/ Sans/ Mono/ 12

source $VIMRUNTIME/delmenu.vim

source $VIMRUNTIME/menu.vim

"下一行为语法高亮,彩色的

syntax on

"添加自动缩进

set tabstop=4

set shiftwidth=4

set softtabstop=4

set ai "开启自动缩进

"set expandtab "自动把tab转化为空格

"retab "将已存在的tab都转化为空格

set list "显示tab和行尾空格

set lcs=tab:+-,trail:- "显示tab为+---和行尾空格(只在输入时才显示)

"折叠python代码

"set foldmethod=indent

"let Tlist_Auto_Open=1 "auto open taglist自动打开taglist

set autoindent "自动缩进?

"添加python字典,实现自动补全(字典目录为~/.vim/pydiction,里面有字典和一个脚本),快捷键:ctrl+n(20080320 ~/.vim/tools/也可以)

if has("autocmd")

autocmd FileType python set complete+=k~/.vim/tools/pydiction

endif

"安F8智能补全

inoremap <F8> <C-x><C-o>

map <F5>:!/usr/bin/python2.5 %

set nobackup "不自动备份

set nu "开启行号

"搜索字高亮

set hlsearch

"取消 Vim 对 HTML 标记自动产生的缩进,但打开自动缩进选项

au FileType html setlocal autoindent indentexpr=

" multi-encoding setting

if has("multi_byte")

"set bomb

set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1

" CJK environment detection and corresponding setting

if v:lang =~ "^zh_CN"

" Use cp936 to support GBK, euc-cn == gb2312

set encoding=cp936

set termencoding=cp936

set fileencoding=cp936

elseif v:lang =~ "^zh_TW"

" cp950, big5 or euc-tw

" Are they equal to each other?

set encoding=big5

set termencoding=big5

set fileencoding=big5

elseif v:lang =~ "^ko"

" Copied from someone's dotfile, untested

set encoding=euc-kr

set termencoding=euc-kr

set fileencoding=euc-kr

elseif v:lang =~ "^ja_JP"

" Copied from someone's dotfile, untested

set encoding=euc-jp

set termencoding=euc-jp

set fileencoding=euc-jp

endif

" Detect UTF-8 locale, and replace CJK setting if needed

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"

set encoding=utf-8

set termencoding=utf-8

set fileencoding=utf-8

endif

else

echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"

endif

*************************************

//////////////////////////////////////////

1.tabstop (ts-数值型): 设定文件中制表位占的空格个数,默认是8

:set ts=4 (表示一个插入一个<Tab>占4个空格位)

2.expandtab (et-布尔型): 插入<Tab>时使用相应数量的空格,而不用制表位,默认关闭

:set ts=10 et (此时插入一个tab时,真正插入的是10个空格)

注: 当'et'打开,要插入实际的制表位,需用CTRL-V<Tab>,win下加载了mswin.vim插件的用CTRL-Q<Tab>

3.softtabstop (sts-数值型): 当插入一个<Tab>时,若'ts'值大于'sts',则此时就插入'sts'值那么多空格;

而当'ts'值小于'sts',则此时就插入几个制表位(制表位的个数是'sts'整除'ts'之商)

和几个空格(空格的个数是'sts'整除'ts'之余数),默认是0,表示关闭

:set ts=8 sts=6 (此时插入一个<Tab>,就会插入6个空格;若连续插入两个<Tab>,则会插入一个制表位和4个空格)

在此设置下这样输入: 一个<Tab>,3个空格,一个<Tab>,大家想想实际会输入什么?

:set ts=3 sts=8 (此时插入一个<Tab>,就会插入2个制表位和2个空格)

4.retab (ret-ex下的命令,前面3个是选项): 把制表位和空格组成的连续序列替换成新的制表位或空格

格式是 :[range]ret[!] [ts值] (不是指定range,默认是全文;不指定'ts'值,就用原来的'ts'值)



(1) 当'et'为关闭状态时,retab会尽量把由"制表位和空格组成的连续空白序列"替换成尽可能多的制表位,如:

有一个连续"空白序列"是由: 3个空格,两个制表位,5个空格组成,这时设置如下命令

:ret 6 (原来的"空白序列"变为由: 3个制表位,2个空格组成的新的"空白序列")

(2) 当'et'为开启状态时,retab会把所有的制表位换成当前'ts

(3) :ret! 命令则会把纯粹由空格组成的"空白序列"强制替换为尽可能多的制表位加空格

注:retab命令对文本的处理,不会引起视觉上的变化

5.smarttab (sta-布尔型): 它确定行首插入<Tab>时的情况,它跟选项'shiftwidth'(sw)相关联,默认关闭.

:set sta (则若行首插入一个<Tab>,会根据'sw'的值来插入"空白序列",其余的地方还是插入一个制表位;

而这里的"空白序列"是由什么组成,是由'sw','ts'值的相对大小,以及是否开启了'et'决定的.

若'sw'小于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就直接插入'sw'值所代表的空格数;

若'sw'大于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就插入尽可能多的制表位加空格;

若'et'是开启的,若行首插入一个<Tab>就直接插入'sw'值所代表的空格数

注:选项'sw'只用于normal下的左右移动命令: > , >> , < , <<

************************ 说 明 *********************************

*

* (a) 文中的<Tab>表示动作:敲击键盘上的Tab制表键(位于Q键左边),

* 而文中的"制表位"表示前面那个动作后的输入;

* (b) 为了便于制表位和空格的区分,也就是让它们成为"可见"模式:

* :set list

* :set lcs=eol:&,tab<+

set list "显示tab和行尾空格

set lcs=tab:>-,trail:- "显示tab为---和行尾空格(只在输入时才显示)

* 这样每行结尾有字符"&",制表位若是4,则为:<+++ ,

* 而若制表位是8,则为:<+++++++

* (c) <Backspace>在插入模式下可以删除整个'sts'和'sta'下的'sw'

* 但象normal下"x"这样的命令就只能删除真正的制表位和空格

==========================================================================

20090123

" 自动补全命令时候使用菜单式匹配列表

set wildmenu

" 允许退格键删除

set backspace=2

" 启用鼠标

set mouse=a

" 文件类型

filetype on

filetype plugin on

filetype indent on

" 设置编码自动识别, 中文引号显示

"set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom

set fileencodings=utf-8,gbk,ucs-bom

set ambiwidth=double

" 移动长行

nnoremap <Down> gj

nnoremap <Up> gk

" 让编辑模式可以中文输入法下按:转到命令模式

nnoremap : :

" 高亮

syntax on

" 设置高亮搜索

set hlsearch

" 输入字符串就显示匹配点

set incsearch

" 输入的命令显示出来,看的清楚些。

set showcmd

" 打开当前目录文件列表

map <F3> :e .<CR>

" Taglist

let Tlist_File_Fold_Auto_Close=1

set updatetime=1000

map <F4> :Tlist<CR>

" 按 F8 智能补全

inoremap <F8> <C-x><C-o>

" vim 自动补全 Python 代码

" 来自http://vim.sourceforge.net/scripts/script.php?script_id=850

autocmd FileType python set complete+=k~/.vim/tools/pydiction

autocmd FileType python set shiftwidth=4 tabstop=4 "expandtab "把tab转化为空格

set list

set lcs=tab:+-,trail:-

" 自动使用新文件模板

autocmd BufNewFile *.py 0r ~/.vim/template/simple.py

autocmd FileType html set shiftwidth=4 tabstop=4 expandtab

autocmd BufNewFile *.html 0r ~/.vim/template/simple.html

"要在命令行上实现 Emacs 风格的编辑操作: >

" 至行首

:cnoremap <C-A> <Home>

" 后退一个字符

:cnoremap <C-B> <Left>

" 删除光标所在的字符

:cnoremap <C-D> <Del>

" 至行尾

:cnoremap <C-E> <End>

" 前进一个字符

:cnoremap <C-F> <Right>

" 取回较新的命令行

:cnoremap <C-N> <Down>

" 取回以前 (较旧的) 命令行

:cnoremap <C-P> <Up>

" 后退一个单词

:cnoremap <Esc><C-B> <S-Left>

" 前进一个单词

:cnoremap <Esc><C-F> <S-Right>

"Format the statusline

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

set statusline+=[

if v:version >= 600

set statusline+=%{strlen(&ft)?&ft:'none'}, " filetype

set statusline+=%{&encoding}, " encoding

endif

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+=0x%-8B/ " current char

set statusline+=%-14.(%l,%c%V%)/ %<%P " offset



参考拓展:

vim配置文件vimrc



Vim的分屏功能



vim encoding and font



vim技巧快捷键学习



vim实用功能总结



VIM编辑代码时的一些技巧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: