当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 73 篇帖子 ]  前往页数 1, 2, 3, 4, 5  下一页
作者 内容
1 楼 
 文章标题 : [原创]vim配置文件收集(作为c/c++和脚本开发的环境) 6月2日更新
帖子发表于 : 2008-07-23 14:55 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
起因是有些初学者常常问到vim,gvim要怎么配置才可以成为一个正式的开发环境。貌似这些天很多人问道这个问题。我就把基本的配置发一下,最近比较忙。由于本人自己只是使用c/c++,ruby,Mozilla平台,所以其他语言或是开发平台倒是没有思考的很多
:em06
    插件和独立程序
    c.vim
    valgrind.vim
    taglist
    MiniBufExplorer
    Grep
    omni-completion
    SuperTab
    Slippery Snippet ( Textmate-Like )
    clewn(GDB整合)
    colorschemes(上百中颜色配置)
    ctags
    rail.vim
常见插件下载地址
http://www.vim.org/index.php
http://slipperysnippets.blogspot.com/
http://clewn.sourceforge.net/index.html
-----------------------------------------------------------------------------------------
大家可以把,自己的vim配置分享出来,互相学习。
如果方便的话,最好直接把.vim文件夹打包一份。
想想放在哪儿好?回头看看我的主页方便不,可能要翻墙 :em06
-----------------------------------------------------------------------------------------
标有颜色的表示不是必须的插件。
加了个查字典的功能,gui和cli时候分别调用不同的字典工具。
-----------------------------------------------------------------------------------------
有注释的我就不多说了
代码:
"2008年 09月 21日 星期日 01:11:28 CST

" 在处理未保存或只读文件的时候,弹出确认 set confirm " 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-

"Tlist 和 wm的设置
"命令模式输入wm打开Tlist和WM
set showcmd

"Taglist插件的设置
let g:Tlist_Use_Right_Window=1
let g:Tlist_Show_One_File=1
let g:Tlist_Compact_Format=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout='FileExplorer|TagList'

"Tree explorer的设置
let g:treeExplVertical=1
let g:treeExplWinSize=30

"gvim打开以后最大化
"au GUIEnter * simalt ~x

"光标在窗口上下边界时距离边界7行即开始滚屏
set so=7

"配色
" Avoid clearing hilight definition in plugins
if !exists("g:vimrc_loaded")

  " color scheme
  if has("gui_running")
    set guioptions-=T "隐藏工具栏
    set guioptions-=m
    set guioptions-=L
    set guioptions-=r
    color blackboard
    "colorscheme professional
    "set guifont=YaHeiConsolasHybrid\ 13
    set guifont=Monaco\ 13
    "中文字体
    set guifontset=Microsoft\ YaHei\ 13
    "对于html,xml文件,通过ctrl+_来closetag
    if has("autocmd")
      autocmd FileType text,xml,html,perl,shell,bash,python,vim,php,ruby color blackboard
      autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
      autocmd FileType java,c,cpp,cs color desertEx
      autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
      autocmd Filetype html,xml,xsl source ~/.vim/plugin/closetag.vim
    endif " has("autocmd")
  else
    color desert
    "colorscheme zellner
    "对于html,xml文件,通过ctrl+_来closetag
    if has("autocmd")
      autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
      autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
      autocmd Filetype html,xml,xsl source ~/.vim/plugin/closetag.vim
    endif " has("autocmd")
  endif " has
endif " exists(...)
"这个是依赖终端的
"set background=dark

"显示行号
set number

"语法高亮度显示
syntax on

"检测文件的类型 开启codesnip
filetype on
filetype plugin on
filetype indent on
set completeopt=longest,menu
set runtimepath+=~/.vim/textmateOnly
set runtimepath+=/home/hunch/.vim/after
so ~/.vim/plugin/supertab.vim
let g:SuperTabDefaultCompletionType="<C-X><C-O>"

"鼠标支持
if has('mouse')
  set mouse=a
endif

"缩进相关
" 继承前一行的缩进方式,特别适用于多行注释
"set autoindent

" 为C程序提供自动缩进
"set smartindent

" 使用C样式的缩进
set cindent
function! GnuIndent()
  setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,h2,p5,t0,+2,(0,u0,w1,m1
  setlocal shiftwidth=2
  setlocal tabstop=8
endfunction

au FileType c,cpp setlocal cinoptions=:0,g0,(0,w1 shiftwidth=4 tabstop=4 softtabstop=4
au FileType diff  setlocal shiftwidth=4 tabstop=4
au FileType html  setlocal autoindent indentexpr=
au FileType changelog setlocal textwidth=76

" Recognize standard C++ headers
au BufEnter /usr/include/c++/*    setf cpp
au BufEnter /usr/include/g++-3/*  setf cpp

" Setting for files following the GNU coding standard
au BufEnter /usr/*                call GnuIndent()

function! RemoveTrailingSpace()
  if $VIM_HATE_SPACE_ERRORS != '0' &&
        \(&filetype == 'c' || &filetype == 'cpp' || &filetype == 'vim')
    normal m`
    silent! :%s/\s\+$//e
    normal ``
  endif
endfunction
" Remove trailing spaces for C/C++ and Vim files
au BufWritePre *                  call RemoveTrailingSpace()

if &term=="xterm"
  set t_Co=8
  set t_Sb=^[[4%dm
  set t_Sf=^[[3%dm
endif
"set shiftwidth=2
"set tabstop=4
"set softtabstop=4
"set expandtab
" ambiwidth 默认值为 single。在其值为 single 时,
" 若 encoding 为 utf-8,gvim 显示全角符号时就会
" 出问题,会当作半角显示。
set ambiwidth=double
set autoread                " 自动重新加载外部修改内容
set autochdir               " 自动切换当前目录为当前文件所在的目录

"No bell settings {{{
set noerrorbells
set visualbell
if has('autocmd')
  autocmd GUIEnter * set vb t_vb=
endif
"No bell settings End }}}

"在编辑过程中,在右下角显示光标位置的状态行
set ruler
"set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)

" 启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI

set nolinebreak             " 在单词中间断行
" 在状态栏显示目前所执行的指令,未完成的指令片段亦
" 会显示出来
set showcmd
set wrap                    " 自动换行显示
"CmdLine settings {{{
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
"
" 高亮字符,让其不受100列限制
":highlight OverLength ctermbg=red ctermfg=white guibg=grey guifg=white
":match OverLength '\%101v.*'

" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White

"显示匹配括号
set showmatch

"默认无备份
set nobackup
set nowritebackup

"在insert模式下能用删除键进行删除
set backspace=indent,eol,start

"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocp
" 增强模式中的命令行自动完成操作
set wildmenu

"文字编码加入utf8
" 设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set enc=utf-8
let &termencoding=&encoding

" 使用英文菜单,工具条及消息提示
set langmenu=none

"自动缩排
set ai

"搜索不分大小写
set ic

"标识关键字
set hls

" 不要闪烁
set novisualbell

"设置语法折叠
set foldmethod=syntax
set foldcolumn=3 "设置折叠区域的宽度
set foldclose=all "设置为自动关闭折叠

" 用空格键来开关折叠
set foldenable
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>


"设置帮助语言
if version >= 603
  set helplang=cn
  set encoding=utf-8
endif

"编辑状态保存
au BufWinLeave * mkview
au BufWinEnter * silent loadview

" Line highlight 設此標整行會標註顏色
set cursorline
" Column highlight 設此是遊標整列會標註顏色
set cursorcolumn
"highlight CursorLine cterm=none ctermbg=2 ctermfg=0

"ctags设置
set tags=/home/hunch/.vim/stltags
"set tags+=/home/hunch/.vim/sgitag
"set tags+=/home/hunch/.vim/ctags
"set tags+=/home/hunch/.vim/glibctag
"智能补全ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
let OmniCpp_DefaultNamespaces = ["std"]
let OmniCpp_GlobalScopeSearch = 1  " 0 or 1
let OmniCpp_NamespaceSearch = 1   " 0 ,  1 or 2
let OmniCpp_DisplayMode = 1
let OmniCpp_ShowScopeInAbbr = 0
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
highlight Pmenu ctermbg=13 guibg=LightGray
highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White
highlight PmenuSbar ctermbg=7 guibg=DarkGray
highlight PmenuThumb guibg=Black

"打开自己工程的时候自动加载的脚本
if getfsize(".vimscript")>0
  source .vimscript
endif

"rails.vim
runtime! macros/matchit.vim
augroup myfiletypes
  " Clear old autocmds in group
  autocmd!
  " autoindent with two spaces, always expand tabs
  autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et
augroup END

"autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
"if you want buffer/rails/global completion you must add the following:
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
"if you want rails support add the following in addition
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
"if you want classes included in global completions add the following
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

"valgrind 相关
let g:valgrind_arguments='--leak-check=yes --num-callers=5000'

"字典完成
:set dictionary-=/usr/share/dict/words dictionary+=/usr/share/dict/words

"cscope
if has("cscope")
  set csprg=/usr/bin/cscope
  set csto=0
  set nocst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
    cs add cscope.out
    " else add database pointed to by environment
  elseif $CSCOPE_DB != ""
    cs add $CSCOPE_DB
  endif
  set csverb
endif
map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR>
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>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>

" Using 'CTRL-spacebar' then a search type makes the vim window
" split horizontally, with search result displayed in
" the new window.

nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR>

" Hitting CTRL-space *twice* before the search type does a vertical
" split instead of a horizontal one

nmap <C-Space><C-Space>s
      \:vert scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>g
      \:vert scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>c
      \:vert scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>t
      \:vert scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>e
      \:vert scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>i
      \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space><C-Space>d
      \:vert scs find d <C-R>=expand("<cword>")<CR><CR>
"runtime ftplugin/man.vim
let Vimplate = "$HOME/bin/vimplate"
fun! ReadMan()
  " Assign current word under cursor to a script variable:
  let s:man_word = expand('<cword>')

  " Open a new window:
  :exe ":wincmd n"

  " Read in the manpage for man_word (col -b is for formatting):
  :exe ":r!man " . s:man_word . " | col -b"

  " Goto first line...
  :exe ":goto"

  " and delete it:
  :exe ":delete"
endfun

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"加上日期 对应F2
:map <F2> gg:read !date<CR>

" bind :CD to :cd %:h, then change cwd to the dir that includes current file
sil! com -nargs=0 CD exe 'cd %:h'

" F5编译和运行C程序,F6编译和运行C++程序
" 请注意,下述代码在windows下使用会报错
" 需要去掉./这两个字符

" C的编译和运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  exec "!gcc -Wall -g % -o %<"
  exec "! ./%<"
endfunc

" C++的编译和运行
map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
  exec "w"
  exec "!g++ -Wall -g % -o %<"
  exec "! ./%<"
endfunc

" 能够漂亮地显示.NFO文件
set encoding=utf-8
function! SetFileEncodings(encodings)
  let b:myfileencodingsbak=&fileencodings
  let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
  let &fileencodings=b:myfileencodingsbak
  unlet b:myfileencodingsbak
endfunction

au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
au BufReadPost *.nfo call RestoreFileEncodings()

" 高亮显示普通txt文件(需要txt.vim脚本)
"au BufRead,BufNewFile *  setfiletype txt

" Map the M key to the ReadMan function:
map M :call ReadMan()<CR>

"csupport
let g:alternateNoDefaultAlternate = 1

"a.vim
nnoremap <silent> <F12> :A<CR>

nmap wm :WMToggle<cr>

" 双反斜杠\\即可打开bufexplorer
map <leader><leader> \be
" Ctrl+Enter也可以切换buffer
map C-Enter C-Tab
nnoremap <silent> <F4> :tabprevious<CR>

:set cscopequickfix=s-,c-,d-,i-,t-,e-
nnoremap <silent> <F3> :Grep<CR>

":inoremap ( ()<ESC>i
":inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {}<ESC>i
":inoremap } <c-r>=ClosePair('}')<CR>
":inoremap [ []<ESC>i
":inoremap ] <c-r>=ClosePair(']')<CR>
":inoremap < <><ESC>i
":inoremap > <c-r>=ClosePair('>')<CR>

function ClosePair(char)
  if getline('.')[col('.') - 1] == a:char
    return "\<Right>"
  else
    return a:char
  endif
endf

" mapping
" 如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车;
"
" 如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页。否则映射为CTRL-X CTRL-O;
"
" 如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则仍映射为CTRL-K;
"
" 如果下拉菜单弹出,CTRL-U映射为CTRL-E,即停止补全,否则,仍映射为CTRL-U;
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>"a

inoremap <expr> <cr>       pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"
inoremap <expr> <c-n>      pumvisible() ? "\<c-n>" : "\<c-n>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""
inoremap <expr> <m-;>      pumvisible() ? "\<c-n>" : "\<c-x>\<c-o>\<c-n>\<c-p>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""

" minibufexpl插件的一般设置
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplModSelTarget = 1
"实现<C-Tab>     向前循环切换到每个buffer上,并在当前窗口打开
"let g:miniBufExplMapCTabSwitchBufs = 1
"<C-S-Tab>     向后循环切换到每个buffer上,并在当前窗口打开
"可以用<C-h,j,k,l>切换到上下左右的窗口中去
"let g:miniBufExplMapWindowNavVim = 1

"选中一段文字并全文搜索这段文字
:vnoremap <silent> ,/ y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
:vnoremap <silent> ,? y?<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>

" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示

:runtime! ftplugin/man.vim
set keywordprg=dicty
ab ssh #!/bin/bash<CR><CR>
ab ppy #!/usr/bin/python<CR><CR>
ab ppl #!/usr/bin/perl<CR><CR><{}>
ab rru #!/usr/bin/ruby<CR><CR><{}>



-------------------------------------------------------------------------------------


附件:
文件注释: GUI时候的字典,追加一个函数
2008-10-01-111154_1280x800_scrot.png
2008-10-01-111154_1280x800_scrot.png [ 149.4 KiB | 被浏览 10659 次 ]

vim.tar.gz [1.07 MiB]
被下载 1574 次
文件注释: c.vim中必须要会的快捷键列表
My Code Snip.pdf.tar.bz2 [9.7 KiB]
被下载 805 次
文件注释: 类似text-mate的代码模板功能,可以用tab键在&lt;&gt;之间跳转,比c.vim自带的要强大,也可以自己添加常用模板,不需要记忆任何快捷键,按tab时候触发
2008-07-22-164836_479x236_scrot.png
2008-07-22-164836_479x236_scrot.png [ 20.29 KiB | 被浏览 11309 次 ]

文件注释: 基本要求:支持C++的智能补全,在-&gt;,.的时候自动触发,切弹出感知的窗口的每一又绑定了一些快捷键 比如C-N ,C-K,C-L之类的。
2008-07-22-164401_996x497_scrot.png
2008-07-22-164401_996x497_scrot.png [ 122.47 KiB | 被浏览 11317 次 ]



_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


最后由 kofshower 编辑于 2010-06-02 20:44,总共编辑了 12 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-23 15:01 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
如果是刚刚开始用vim的话,水木清华vim版是个不错的地方,其实vim很简单。没有什么需要死记。用多buffer的操作的时候很少用到tabnew之类的,所以这一方面的绑定,我完全没用到.实用clewn的话千万要用svn版本的。不然可能出现一些问题。


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-25 11:14 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
修改了一下,做了很多改进。比如自动对c++代码提示。codesnipet之类。
为了各个插件不冲突。将各个语言独立写了各自的工程配置,比如c,c++就在.vim/cpp中。
去掉minibuf这个麻烦,或是说buggy的插件


附件:
2008-07-25-112001_606x439_scrot.png
2008-07-25-112001_606x439_scrot.png [ 52.2 KiB | 被浏览 11178 次 ]

2008-07-25-111326_562x218_scrot.png
2008-07-25-111326_562x218_scrot.png [ 30.32 KiB | 被浏览 10606 次 ]



_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


最后由 kofshower 编辑于 2008-11-20 9:49,总共编辑了 2 次
页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-08 2:10 
头像

注册: 2008-05-01 11:36
帖子: 17
送出感谢: 0 次
接收感谢: 0 次
:shock:
太强了
五体投地


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-08-08 9:10 
头像

注册: 2006-05-19 9:54
帖子: 1822
地址: Shanghai
送出感谢: 2
接收感谢: 11
内存泄漏用的是什么软件检测的?


_________________
ニンニク入れますか?
x60 with gentoo


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-08-08 14:40 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
上面列出来了
插件和独立程序
c.vim
valgrind.vim
这个对应valgrind


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-08-08 15:36 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
最近开发习惯变了,所以有了一些变更:
1 用cscope取代了原来F3的grep
2 每次开发的时候有一个工程文件,自动加入自己的工程文件
引用:
"打开自己工程的时候自动加载的脚本
if getfsize(".vimscript")>0
source .vimscript
endif


工程文件的名字是.vimscript
主要是绑定了我喜欢的autotools,现在喜欢用cmake
3 代码完成完善了些
由于最近英文信件比较多所以加了一个自动单词补全
代码提示的内容也不一样了
4 建议用terminator起vim而不是gvim,方便编码
5 任意文件按F2加上time stamp
6 gui字体喜欢用hybrid字体 中文是yahei英文是consolas
7 改了一些细节
-----------------------------------------------------------------------------------------------------------------
代码:
"2008年 08月 08日 星期五 15:21:35 HKT
"Tlist 和 wm的设置
"命令模式输入wm打开Tlist和WM
set showcmd                 

let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

:set cscopequickfix=s-,c-,d-,i-,t-,e-
nnoremap <silent> <F3> :Grep<CR>

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
":inoremap < <><ESC>i
":inoremap > <c-r>=ClosePair('>')<CR>

function ClosePair(char)
   if getline('.')[col('.') - 1] == a:char
      return "\<Right>"
   else
      return a:char
   endif
endf

"配色
" 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 fruit
      set guifont=YaHeiConsolasHybrid\ 10
      "hi normal guibg=#294d4a
   else
      colorscheme desertEx
   endif " has
endif " exists(...)
"set background=dark

"显示行号
"set nummber
set nu

"语法高亮度显示
syntax on

"检测文件的类型 开启codesnip
filetype on
filetype plugin on
filetype indent on
set completeopt=longest,menu
set runtimepath+=~/.vim/textmateOnly
set runtimepath+=~/.vim/textmateOnly/after
so ~/.vim/plugin/supertab.vim

"鼠标支持
if has('mouse')
   set mouse=a
endif

"缩进相关
set autoindent
set cindent
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
if &term=="xterm"
   set t_Co=8
   set t_Sb=^[[4%dm
   set t_Sf=^[[3%dm
endif
set shiftwidth=4
set tabstop=4
set softtabstop=4
" ambiwidth 默认值为 single。在其值为 single 时,
" 若 encoding 为 utf-8,gvim 显示全角符号时就会
" 出问题,会当作半角显示。
set ambiwidth=double       
set autoread                " 自动重新加载外部修改内容
set autochdir               " 自动切换当前目录为当前文件所在的目录

"No bell settings {{{
set noerrorbells
set visualbell
if has('autocmd')
   autocmd GUIEnter * set vb t_vb=
endif
"No bell settings End }}}

"在编辑过程中,在右下角显示光标位置的状态行
set ruler
set nolinebreak             " 在单词中间断行
" 在状态栏显示目前所执行的指令,未完成的指令片段亦
" 会显示出来
set showcmd                 
set wrap                    " 自动换行显示
"CmdLine settings {{{
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r,%Y,%{&fileformat}\ \ \ ASCII=\%b,HEX=\%B\ \ \ %l,%c%V\ %p%%\ \ \ [\ %L\ lines\ in\ all\ ]
                            " 设置在状态行显示的信息如下:
                            " %F    当前文件名
                            " %m    当前文件修改状态
                            " %r    当前文件是否只读
                            " %Y    当前文件类型
                            " %{&fileformat}
                            "       当前文件编码
                            " %b    当前光标处字符的 ASCII 码值
                            " %B    当前光标处字符的十六进制值
                            " %l    当前光标行号
                            " %c    当前光标列号
                            " %V    当前光标虚拟列号 (根据字符所占字节数计算)
                            " %p    当前行占总行数的百分比
                            " %%    百分号
                            " %L    当前文件总行数
"CmdLine settings End }}}
"
"显示匹配括号
set showmatch

"默认无备份
set nobackup
set nowritebackup

"在insert模式下能用删除键进行删除
set backspace=indent,eol,start

"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocp

" mapping
" 如果下拉菜单弹出,回车映射为接受当前所选项目,否则,仍映射为回车;
"
" 如果下拉菜单弹出,CTRL-J映射为在下拉菜单中向下翻页。否则映射为CTRL-X CTRL-O;
"
" 如果下拉菜单弹出,CTRL-K映射为在下拉菜单中向上翻页,否则仍映射为CTRL-K;
"
" 如果下拉菜单弹出,CTRL-U映射为CTRL-E,即停止补全,否则,仍映射为CTRL-U;
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>"a

inoremap <expr> <cr>       pumvisible() ? "\<c-y>" : "\<c-g>u\<cr>"
inoremap <expr> <c-n>      pumvisible() ? "\<c-n>" : "\<c-n>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""
inoremap <expr> <m-;>      pumvisible() ? "\<c-n>" : "\<c-x>\<c-o>\<c-n>\<c-p>\<c-r>=pumvisible() ? \"\\<down>\" : \"\\<cr>\""

"文字编码加入utf8
set enc=utf8
set fileencodings=utf-8,gb18030,utf-16,big5
let &termencoding=&encoding

" 使用英文菜单,工具条及消息提示
set langmenu=none

"自动缩排
set ai

"搜索不分大小写
set ic

"标识关键字
set hls

"设置语法折叠
"set foldmethod=syntax
"set foldcolumn=3 "设置折叠区域的宽度
"set foldclose=all "设置为自动关闭折叠

"设置帮助语言
if version >= 603
   set helplang=cn
endif

"自动回到最后编辑的位置
if has("autocmd")
   autocmd BufRead *.txt set tw=78
   autocmd BufReadPost *
            \ if line("'\"") > 0 && line ("'\"") <= line("$") |
            \   exe "normal g'\"" |
            \ endif
endif

" Line highlight 設此是游標整行會標註顏色
set cursorline
" Column highlight 設此是遊標整列會標註顏色
set cursorcolumn
"highlight CursorLine cterm=none ctermbg=2 ctermfg=0

"ctags设置
set tags=./tags
set tags+=/home/hunch/.vim/sgitag
set tags+=/home/hunch/.vim/ctags
"set tags+=/home/hunch/.vim/glibctag
"智能补全ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
let OmniCpp_DefaultNamespaces = ["std"]
let OmniCpp_GlobalScopeSearch = 1  " 0 or 1
let OmniCpp_NamespaceSearch = 1   " 0 ,  1 or 2
let OmniCpp_DisplayMode = 1
let OmniCpp_ShowScopeInAbbr = 0
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
highlight Pmenu ctermbg=13 guibg=LightGray
highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White
highlight PmenuSbar ctermbg=7 guibg=DarkGray
highlight PmenuThumb guibg=Black
"打开自己工程的时候自动加载的脚本
if getfsize(".vimscript")>0
   source .vimscript
endif

"bufferexplorer设置
"实现<C-Tab>     向前循环切换到每个buffer上,并在当前窗口打开
let g:miniBufExplMapCTabSwitchBufs = 1
"<C-S-Tab>     向后循环切换到每个buffer上,并在当前窗口打开

"选中一段文字并全文搜索这段文字
:vnoremap <silent> ,/ y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
:vnoremap <silent> ,? y?<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>

"rails.vim
runtime! macros/matchit.vim
augroup myfiletypes
   " Clear old autocmds in group
   autocmd!
   " autoindent with two spaces, always expand tabs
   autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et
augroup END

"autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
"if you want buffer/rails/global completion you must add the following:
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
"if you want rails support add the following in addition
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
"if you want classes included in global completions add the following 
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

"valgrind 相关
let g:valgrind_arguments='--leak-check=yes --num-callers=5000'

"加上日期 对应F2
:map <F2> gg:read !date<CR>

" bind :CD to :cd %:h, then change cwd to the dir that includes current file
sil! com -nargs=0 CD exe 'cd %:h'

"字典完成
:set dictionary-=/usr/share/dict/words dictionary+=/usr/share/dict/words

"cscope
if has("cscope")
   set csprg=/usr/bin/cscope
   set csto=0
   set nocst
   set nocsverb
   " add any database in current directory
   if filereadable("cscope.out")
      cs add cscope.out
      " else add database pointed to by environment
   elseif $CSCOPE_DB != ""
      cs add $CSCOPE_DB
   endif
   set csverb
endif
map <C-_> :cstag <C-R>=expand("<cword>")<CR><CR>
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>$<CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>

" Using 'CTRL-spacebar' then a search type makes the vim window
" split horizontally, with search result displayed in
" the new window.

nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR>

" Hitting CTRL-space *twice* before the search type does a vertical
" split instead of a horizontal one

nmap <C-Space><C-Space>s
         \:vert scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>g
         \:vert scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>c
         \:vert scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>t
         \:vert scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>e
         \:vert scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>i
         \:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space><C-Space>d
         \:vert scs find d <C-R>=expand("<cword>")<CR><CR>


:em06 :em06 配置有点大了


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-08-08 15:51 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
图2 现在的环境,右边查api,左边是定义和文件目录,下面是编译区,上面是多了buf或是多个tab页
图1 单词提示


附件:
Screenshot-1.png
Screenshot-1.png [ 90.84 KiB | 被浏览 8794 次 ]

Screenshot-2.png
Screenshot-2.png [ 204.39 KiB | 被浏览 8854 次 ]



_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/
页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-08-13 13:31 

注册: 2008-07-26 9:28
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
赞一个,最好是能把用到的插件打包放上来就好了,一个一个找太麻烦的,另外楼主的.vimrc很喜欢,谢谢分享


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-08-14 22:17 

注册: 2007-04-05 16:58
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
非常好的配置文件 希望楼主能够上传分享


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-08-16 11:24 
头像

注册: 2008-05-27 17:30
帖子: 44
送出感谢: 0 次
接收感谢: 0 次
写bash脚本的话bash support插件不错, subvision 版本控制我装了个,不过还不会用.


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-08-17 2:56 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
把.vim的主要部分打包上传了。其他部分主要是tag,这个太大了。


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-08-17 20:29 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
忘了说了环境是vim 7.2
而且一些设置需要python模块的支持


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-09-06 23:09 
头像

注册: 2007-11-23 9:49
帖子: 1021
送出感谢: 0 次
接收感谢: 1
搞了一晚发现

supertab和Slippery Snippet 共用就不能设置
代码:
let g:SuperTabDefaultCompletionType="<C-X><C-O>"


加了
代码:
so ~/.vim/plugin/supertab.vim

也不行

:( 郁闷,怎么能让supertab出来的补全列表用tab是向下选择阿
目前可以用s-tab和^p向下选


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-09-13 6:20 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
是的,确实是冲突的,再看看
http://code.google.com/p/snippetsemu/is ... tail?id=79


_________________
"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 73 篇帖子 ]  前往页数 1, 2, 3, 4, 5  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译