Chinaunix首页 | 论坛 | 博客
  • 博客访问: 594541
  • 博文数量: 86
  • 博客积分: 3214
  • 博客等级: 中校
  • 技术积分: 1105
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 18:26
文章分类

全部博文(86)

文章存档

2011年(5)

2010年(49)

2009年(3)

2008年(29)

分类: LINUX

2010-08-17 17:11:08

""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""
"
"Support by yuance Li
"CopyRight @2010.7
"
""""""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""""""

" 把空格键映射成:
nmap :

" 快捷打开编辑vimrc文件的键盘绑定
map ee :e $HOME/.vimrc
autocmd! bufwritepost *.vimrc source $HOME/.vimrc


" 判断操作系统
if (has("win32") || has("win64") || has("win32unix"))
    let g:isWin = 1
else
    let g:isWin = 0
endif

" 判断是终端还是gvim
if has("gui_running")    
    let g:isGUI = 1
else
    let g:isGUI = 0
endif

" tab转化为4个字符
set tabstop=4
set softtabstop=4
set shiftwidth=4
set nocompatible    " 关闭兼容模式
syntax enable       " 语法高亮
filetype plugin on  " 文件类型插件
filetype indent on
set autoindent
autocmd BufEnter * :syntax sync fromstart
set nu              " 显示行号
set cmdheight=2
set showcmd         " 显示命令
set lz              " 当运行宏时,在命令执行完成之前,不重绘屏幕
set hid             " 可以在没有保存的情况下切换buffer
set backspace=eol,start,indent
set whichwrap+=<,>,h,l " 退格键和方向键可以换行
set incsearch       " 增量式搜索
set hlsearch        " 高亮搜索
set ignorecase      " 搜索时忽略大小写
set magic           " 额,自己:h magic吧,一行很难解释
set showmatch       " 显示匹配的括号
set nobackup        " 关闭备份
set wildmenu        
set smartindent     "根据上面的格式对其,智能选择对齐方式
"When you input a } or a {,vim will delete a TABSTOP
set cindent


" 不使用beep或flash
set vb t_vb=

set background=dark
colorscheme desert
"set t_Co=256

set history=400  " vim记住的历史操作的数量,默认的是20
set autoread     " 当文件在外部被修改时,自动重新读取
set mouse=a      " 在所有模式下都允许使用鼠标,还可以是n,v,i,c等

"在gvim中高亮当前行
if (g:isGUI)
    set cursorline
    hi cursorline guibg=#333333
    hi CursorColumn guibg=#333333
    set guifont=Consolas\ 14
    set guifontwide=Consolas\ 14
endif

" 设置字符集编码,默认使用utf8
if (g:isWin)
    let &termencoding=&encoding " 通常win下的encoding为cp936
    set fileencodings=utf8,cp936,ucs-bom,latin1
else
    set encoding=utf8
    set fileencodings=utf8,gb2312,gb18030,ucs-bom,latin1
endif


" 获取当前路径,将$HOME转化为~
function! CurDir()
    let curdir = substitute(getcwd(), $HOME, "~", "g")
    return curdir
endfunction
set statusline=[%n]\ %f%m%r%h\ \|\ \ pwd:\ %{CurDir()}\ \ \|%=\|\ %l,%c\ %p%%\ \|\ ascii=%b,hex=%b%{((&fenc==\"\")?\"\":\"\ \|\ \".&fenc)}\ \|\ %{$USER}\ @\ %{hostname()}\

" 第80列往后加下划线
"au BufWinEnter * let w:m2=matchadd('Underlined', '\%>' . 80 . 'v.\+', -1)



" 用c-j,k在buffer之间切换
nn :bn
nn :bp


" 快捷输入
" 自动完成括号和引号
inoremap 1 ():let leavechar=")"i
inoremap 2 []:let leavechar="]"i
inoremap 3 {}:let leavechar="}"i
inoremap 4 {o}:let leavechar="}"O
inoremap q '':let leavechar="'"i
inoremap w "":let leavechar='"'i

" 缩写
iab idate =strftime("%Y-%m-%d")
iab itime =strftime("%H:%M")
iab imail stephenpcg@gmail.com
iab iname Li Yuance


"快捷键映射
"add  save function
map :q
map :w!
imap :w!i

"插件设置
"set tablist and netrw
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap :WMToggle

"set new-omni-completion
"filetype plugin indent on                   "前面以设置
set completeopt=longest,menu
"匹配标签
imap
"根据头文件内关键字补全
imap
"补全文件名
imap
"根据当前文件里关键字补全
imap
"整行补全
imap
"根据字典补全
imap

"set miniBuf
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowNavArrows=1

"set grep
nnoremap :Grep

"set c/h change
nnoremap :A

"key mapping to stop search highlight
map          :nohlsearch




" 更新ctags和cscope索引
" href: 把vim打造成一个真正的ide2.html
" 稍作修改,提取出DeleteFile函数,修改ctags和cscope执行命令
map :call Do_CsTag()
function! Do_CsTag()
    let dir = getcwd()

    "先删除已有的tags和cscope文件,如果存在且无法删除,则报错。
    if ( DeleteFile(dir, "tags") )
        return
    endif
    if ( DeleteFile(dir, "cscope.files") )
        return
    endif
    if ( DeleteFile(dir, "cscope.out") )
        return
    endif

    if(executable('ctags'))
        silent! execute "!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ."
    endif
    if(executable('cscope') && has("cscope") )
        if(g:isWin)
            silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs >> cscope.files"
        else
            silent! execute "!find . -iname '*.[ch]' -o -name '*.cpp' > cscope.files"
        endif
        silent! execute "!cscope -b"
        execute "normal :"
        if filereadable("cscope.out")
            execute "cs add cscope.out"
        endif
    endif
    " 刷新屏幕
    execute "redr!"
endfunction

function! DeleteFile(dir, filename)
    if filereadable(a:filename)
        if (g:isWin)
            let ret = delete(a:dir."\\".a:filename)
        else
            let ret = delete("./".a:filename)
        endif
        if (ret != 0)
            echohl WarningMsg | echo "Failed to delete ".a:filename | echohl None
            return 1
        else
            return 0
        endif
    endif
    return 0
endfunction

" cscope 绑定
set cscopequickfix=s-,c-,d-,i-,t-,e-,g-,f-
"查找本C符号
nmap :cs find s =expand("")
"查找本定义
nmap :cs find g =expand(""):cw
"调用本函数的函数
nmap :cs find c =expand(""):cw
"查找本字符串
nmap :cs find t =expand(""):cw
"egrep模式
nmap :cs find e =expand(""):cw
"查找本文件
nmap :cs find f =expand(""):cw
"查找包含本文件的文件
nmap :cs find i =expand(""):cw
"本函数调用的函数
nmap :cs find d =expand(""):cw

"添加注释
function AddTitle()
call setline(1,"#****************************************************")
call append(1,"#       Author: Li Yuance - liyuance@gmail.com")
call append(2,"#  " . "Last modified: " . strftime("%Y-%m-%d %H:%M"))
call append(3,"#       Filename: " . expand("%"))
call append(4,"#       Description: ")
call append(5,"#****************************************************")
endf
"set voof
map :Voof
"映射添加注释快捷键
map zg :call AddTitle():$o
"映射修改注释快捷键
map mg :/# *Last modified: /s@:.*$@\=strftime(": %Y-%m-%d %H:%M")@

"全选ctrl+a
map ggvG
"设置gvim字体
set guifont=Monospace\ 14
set guifontwide=Monospace\ 14
"设置gvim不闪烁
set novisualbell
"设置#注释
vmap : s/^/#/
vmap ZZ :s/^##*//


阅读(1470) | 评论(0) | 转发(0) |
0

上一篇:更改gvim默认的字体

下一篇:Audacious播放mp3

给主人留下些什么吧!~~