[共享交流]CU高手们的vimrc(vim配置文件)小全 zt - 软件开发&软件工程 -...

来源:百度文库 编辑:神马文学网 时间:2024/04/29 16:08:16
http://bbs.chinaunix.net/viewthread.php?tid=826707&extra=page%3D1%26filter%3Ddigest
原著:lovesaka
用VIM朋友如果你们愿意的话可以把你们vimrc里的一些常用配置和一些技巧贴出来大家一起共享和学习
以便使我们的vim功能更加强大写程序时更加得心应手
我先来点
基本的缩进和语言加亮
CODE:
[Copy to clipboard]
set syntax=on
set cinoptions+={2,0,p0,t0
set nobackup
set cindent
set syntax=cpp
set formatoptions=tcqr
自定义文件头
CODE:
[Copy to clipboard]
function Mytitle()
call setline(1,"/**********************************************")
call append(line("."),"作者:自己名字")
call append(line(".")+1,"时间:".strftime("%c"))
call append(line(".")+2,"文件名:".expand("%"))
call append(line(".")+3,"描述:")
call append(line(".")+4,"**********************************************/")
endf
map :call Mytitle():$o      "键可改为你喜欢的按键
K&R式代码格式化
CODE:
[Copy to clipboard]
map    :1,$g/^$/dgg=Ggg    "键可改为你喜欢的按键
增加注解
CODE:
[Copy to clipboard]
map    a/**/2ha
如果你原意的话那么就跟贴吧
我以前只用过这句
set cindent
用来自动缩进和加亮C/C++
2.我的:
CODE:
[Copy to clipboard]
set nobackup
set noswapfile
set helplang=Cn
set autoindent
set cindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set smarttab
set foldenable
set fdm=marker
nmap ^W_^W\|
nmap ^W=
imap ^W_^W\|a
imap ^W=a
nmap gF ^Wf
上面是我的 XP 的,Debian 下的 vim 的默认配置是出了名的差,所以就需要多设置几句:
CODE:
[Copy to clipboard]
set expandtab
set shiftwidth=4
set tabstop=4
set softtabstop=4
set nobackup
set cindent
set autoindent
set showcmd
set helplang=Cn
set nofoldenable
set noswapfile
set number
set mouse=nv
set hlsearch
set incsearch
set viminfo+=h
set nocp
filetype plugin on
autocmd FileType perl set keywordprg=perldoc\ -f
nmap ^W_^W\|
nmap ^W=
imap ^W_^W\|a
imap ^W=a
nmap gF ^Wf
syntax on
colorscheme evening
hi Normal ctermfg=grey ctermbg=black
hi Visual ctermfg=green ctermbg=black
hi Search term=reverse cterm=standout ctermfg=green  ctermbg=yellow
hi IncSearch term=reverse cterm=standout ctermfg=green ctermbg=yellow
hi PmenuSel ctermbg=Green ctermfg=Yellow
功能:根椐文件格式加注释你可以自己改一下
CODE:
[Copy to clipboard]
function Mycomment()
if &syntax=="cpp" || &syntax=="c"
execute "normal  \\a\/**/\2ha"
elseif &syntax=="perl" || &syntax=="sh"
execute "normal \\a\#\k\"
endif
endf
map :call Mycomment():$o
set nocompatible
set nobackup
set nu
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set ai
set foldmethod=syntax "按照语法折叠代码,indent为按照缩进折叠代码,zi命令打开/关闭所有折叠
set foldcolumn=3  "设置折叠区域的宽度
set foldclose=all "设置为自动关闭折叠
‘‘对于安装了中文help有效
if version >= 603
set helplang=cn
endif
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
source $vimruntime/colors/darkblue.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
if &sh =~ ‘\silent execute ‘!""C:\Program Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . ‘"‘
else
silent execute ‘!C:\Program" Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3
endif
endfunction
"设置F5为不同文件类型添加注释
filetype plugin indent on
autocmd FileType cpp,java  map 0i//
autocmd FileType c  map! /* */
autocmd FileType sh        map! 0i#
‘‘设置F12为运行python程序,运行前需要保存
map :!c:\python24\python.exe %
哈哈,我弄的注释掉一行的快捷键
CODE:
[Copy to clipboard]
function Mycomm()
let  tmphehe=getline(".")
call setline(line("."),"/*")
call append(line(".")," *".tmphehe."   by xx".strftime("%c"))
call append(line(".")+1," */")endf
map :call Mycomm()
我的
CODE:
[Copy to clipboard]
set encoding=gb2312
set cindent
set ts=4
set sw=4
set foldcolumn=2
abbreviate // // lyd[
abbreviate //m // lyd[ MARK
abbreviate //c // lyd[ CHANGED
abbreviate //a // lyd[ ADD
abbreviate //d // lyd[ DELETE
abbreviate //D // lyd[ DEBUG
abbreviate //j // lyd[ JSSUPPORT
abbreviate //t // lyd[ TODO
abbreviate printf printf ("####Benson debug:"
abbreviate printk printk ("####Benson debug:"
:map :s/^/\/\//
:inoremap( ()i
:inoremap) =ClosePair(‘)‘)
:inoremap{ {}i
:inoremap} =ClosePair(‘}‘)
:inoremap[ []i
:inoremap] =ClosePair(‘]‘)
function ClosePair(char)
if getline(‘.‘)[col(‘,‘) - 1] == a:char
return "\"
else
return a:char
endif
endf
CODE:
[Copy to clipboard]
:inoremap( ()i
:inoremap) =ClosePair(‘)‘)
:inoremap{ {}i
:inoremap} =ClosePair(‘}‘)
:inoremap[ []i
:inoremap] =ClosePair(‘]‘)
function ClosePair(char)
if getline(‘.‘)[col(‘,‘) - 1] == a:char
return "\"
else
return a:char
endif
endf

这一段补全很实用希望还有更多的实用技巧一一都给贴上哈哈VIM真是太强了
一个非常好用的插件能显示当前文件函数,宏,变量
只要把taglist.vim放到VIM插件目录就OK了再到vimrc里加上一个键映射就行了
具体怎么用在taglist.txt里说得很清楚
[ 本帖最后由 lovesaka 于 2006-9-13 23:54 编辑 ]
附件: [VIM插件]taglist_41.zip (2006-9-13 23:48, 46.12 K)
该附件被下载次数 31
修改一下加了一个目录浏览vim自带的功能不过在taglist里面用f键就可以看当前目录
多谢谢楼上兄第脚本提示
小提示:在文件管理器下直接ex可以打开文件比如播放音乐,看电子书等等爽得不得了不过还得要你系统上有文件格式相关连的软件才行
[ 本帖最后由 lovesaka 于 2006-9-16 02:30 编辑 ]
附件: [修改过后taglist]taglist.tar (2006-9-16 02:07, 140 K)
该附件被下载次数 11
我是直接把包解开然后把taglist.vim文件放到VIM安装目录下的plugin目录
再到vimrc里加上一句
CODE:
[Copy to clipboard]
nnoremap :TlistToggle
按F8就可以用了
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=utf-8,latin1
endif
set nocompatible        " Use Vim defaults (much better!)
set bs=2                " allow backspacing over everything in insert mode
set ai                  " always set autoindenting on
"set backup             " keep a backup file
set viminfo=‘20,\"50    " read/write a .viminfo file, don‘t store more
" than 50 lines of registers
set history=50          " keep 50 lines of command line history
set ruler               " show the cursor position all the time
set number              " show the number of lines
set showcmd             " show the cmd
set whichwrap=b,s,<,>   " can use Backspace Space wrap
"set mouse=a             " use mouse in terminal
set helplang=cn         " set the vim helpdoc language
set noignorecase        " set case not sensitivity
vnoremap p :let current_reg = @"gvs=current_reg          " can paste in the VISUAL mode
filetype plugin indent off
" Only do this part when compiled with support for autocommands
if has("autocmd")
" In text files, always limit the width of text to 78 characters
autocmd BufRead *.txt set tw=78
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("‘\"") > 0 && line ("‘\"") <= line("$") |
\   exe "normal g‘\"" |
\ endif
endif
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
if &term=="xterm"
set t_Co=8
set t_Sb=^[4%dm
set t_Sf=^[3%dm
endif
" Open a file managers
map :vsplit:edit `pwd`i
" Open Tlist
map :Tlist
" Close Tlist width resize
let Tlist_Inc_Winwidth=0
" use Alt+; to add comment,like emacs
autocmd filetype cpp,java map ; $a//
autocmd filetype cpp,java imap ; //
autocmd filetype c map ; $a/*   */3hi
autocmd filetype c imap ; /*   */
autocmd filetype sh map ; O#
# 自動判斷 big5 或 utf-8 會自動換編碼(Linux 設以下設定)
兩種方法:
1.
" 檔案存檔會存成utf-8編碼
"set fileencoding=utf-8
"
" 以下四個設下去. vim 編出來都是 utf-8 編碼的.
set fileencoding=utf-8
set fileencodings=big5,utf-8
set termencoding=big5
set enc=utf-8
" iconv -f big5 -t utf8 file.big5
2.
if has("multi_byte")
let $LANG="zh_TW.UTF-8"
set encoding=utf-8
setglobal fileencoding=big5
set fileencoding=big5
set bomb
set termencoding=big5
set fileencodings=utf-8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif
其它還有非常多功能.. 就下面再說囉.. :)
" 我的 _vimrc 部份設定
" 使用環境:windows XP
" vim 版本:7.0-134
" 編輯 _vimrc
map ,v :e!$vim/_vimrc
" 開啟個人備忘錄
map ,m :e!D:\117\Cbackup\memo\MEMO.TXT
" 押日期(map: 命令模式  imap: 搜入模式)
map a=strftime("%c")
imap =strftime("%c")
" 檔案瀏覽(開啟的目錄為目前編輯檔案所在之目錄)
map ,e :e =expand("%:p:h")
" set hidden 始可使用以下二個命令(注意!有修改未存檔之陷阱。)
" 切換檔案編輯
map :bn
" 查詢編輯中的檔案編號,在:b後輸入編號即可編輯該檔;:bd!輸入編號可強行刪除buffer檔案
map ,r :ls:b
" set hlsearch, 字串搜尋吻合者高亮度提示,很好!
" 但用完她還亮著不肯離去,礙眼著很!所以,就 ...
map ,h :nohl
" set wrap 一眼看盡全行,她棒得很!
" 但想要比對上下行時,下行在下邊那一列呢?這時,就 ...
map ,w :set wrap!
" set nu 看著行號變大,成就感猶然而生。
" 但在成就之後的落寞時,不再需要閑雜人等,此時,就 ...
map ,n :set nu!
" set cursorline & set cursorcolumn 人近五十視茫眼瞎,浩瀚字海那點游標,找得辛苦!
" 幸好有了這帖清目丸!
map ,s :set cursorline!:set cursorcolumn!
" run perl script
map ;r :w:!perl -w "%:p"
" debug perl script
map ;d :w:!perl -d "%:p"Sa
mple Text
bsd版主的
" vim:shiftwidth=2:tabstop=8:expandtab
if has(‘autocmd‘)
" Remove ALL autocommands for the current group
" Mark .asm files MASM-type assembly
au BufNewFile,BufReadPre *.asm let b:asmsyntax=‘masm‘
endif
if has(‘gui_running‘)
let do_syntax_sel_menu=1
endif
if has(‘gui_running‘) && $LANG !~ ‘\.‘
set encoding=utf-8
endif
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
set autoindent
set nobackup
set showmatch
set formatoptions+=mM
set fileencodings=ucs-bom,utf-8,gbk
set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ %-14.(%l,%c%V%)\ %P
if has(‘mouse‘)
set mouse=a
endif
if has(‘multi_byte‘) && v:version > 601
if v:lang =~? ‘^\(zh\)\|\(ja\)\|\(ko\)‘
set ambiwidth=double
endif
endif
" Key mappings to ease browsing long lines
noremap gj
noremap gk
noremap gj
noremap gk
inoremap gj
inoremap gk
" Key mappings for quick arithmetic inside Vim
nnoremap ma yypV:!calcu ‘"‘k$
vnoremap ma yopV:!calcu ‘"‘k$
nnoremap mr yyV:!calcu ‘"‘$
vnoremap mr ygvmaomb:r !calcu ‘"‘"ay$dd`bv`a"ap
" Key mapping to stop the search highlight
nmap :nohlsearch
imap :nohlsearch
" Key mapping for the taglist.vim plugin
nmap :Tlist
imap :Tlist
" Key mappings for the quickfix commands
nmap :cn
nmap :cp
" Non-GUI setting
if !has(‘gui_running‘)
" Do not increase the windows width in the taglist.vim plugin
if has(‘eval‘)
let Tlist_Inc_Winwidth=0
endif
" Set text-mode menu
if has(‘wildmenu‘)
set wildmenu
set cpoptions-=<
set wildcharm=
nmap :emenu
imap :emenu
endif
endif
if has(‘autocmd‘)
function! SetFileEncodings(encodings)
let b:my_fileencodings_bak=&fileencodings
let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
let &fileencodings=b:my_fileencodings_bak
unlet b:my_fileencodings_bak
endfunction
function! CheckFileEncoding()
if &modified && &fileencoding != ‘‘
exec ‘e! ++enc=‘ . &fileencoding
endif
endfunction
function! ConvertHtmlEncoding(encoding)
if a:encoding ==? ‘gb2312‘
return ‘gbk‘ " GB2312 imprecisely means GBK in HTML
elseif a:encoding ==? ‘iso-8859-1‘
return ‘latin1‘ " The canonical encoding name in Vim
elseif a:encoding ==? ‘utf8‘
return ‘utf-8‘ " Other encoding aliases should follow here
else
return a:encoding
endif
endfunction
DetectHtmlEncoding()
if &filetype != ‘html‘
return
endif
normal m`
normal gg
if search(‘\c‘) != 0
let reg_bak=@"
normal y$
let charset=matchstr(@", ‘text/html; charset=\zs[-A-Za-z0-9_]\+‘)
let charset=ConvertHtmlEncoding(charset)
normal ``
let @"=reg_bak
if &fileencodings == ‘‘
let auto_encodings=‘,‘ . &encoding . ‘,‘
else
let auto_encodings=‘,‘ . &fileencodings . ‘,‘
endif
if charset !=? &fileencoding &&
\(auto_encodings =~ ‘,‘ . &fileencoding . ‘,‘ || &fileencoding == ‘‘)
silent! exec ‘e ++enc=‘ . charset
endif
else
normal ``
endif
endfunction
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
function! RemoveTrailingSpace()
if $VIM_HATE_SPACE_ERRORS != ‘0‘ &&
\(&filetype == ‘c‘ || &filetype == ‘cpp‘ || &filetype == ‘vim‘)
normal m`
silent! :%s/\s\+$//e
normal ``
endif
endfunction
" Highlight space errors in C/C++ source files (Vim tip #935)
if $VIM_HATE_SPACE_ERRORS != ‘0‘
let c_space_errors=1
endif
" Use Canadian spelling convention in engspchk (Vim script #195)
let spchkdialect=‘can‘
" Show syntax highlighting attributes of character under cursor (Vim
" script #383)
map a :call SyntaxAttr()
" Automatically find scripts in the autoload directory
au FuncUndefined * exec ‘runtime autoload/‘ . expand(‘‘) . ‘.vim‘
" File type related autosetting
au FileType c,cpp setlocal cinoptions=:0,g0,(0,w1 shiftwidth=4 tabstop=4
au FileType diff setlocal shiftwidth=4 tabstop=4
au FileType html setlocal autoindent indentexpr=
au FileType changelog setlocal textwidth=76
" Text file encoding autodetection
au BufReadPre *.gb call SetFileEncodings(‘gbk‘)
au BufReadPre *.big5 call SetFileEncodings(‘big5‘)
au BufReadPre *.nfo call SetFileEncodings(‘cp437‘)
au BufReadPost *.gb,*.big5,*.nfo call RestoreFileEncodings()
au BufWinEnter *.txt call CheckFileEncoding()
" Detect charset encoding in an HTML file
au BufReadPost *.htm* nested call DetectHtmlEncoding()
" 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()
" Remove trailing spaces for C/C++ and Vim files
au BufWritePre * call RemoveTrailingSpace()
endif
"me add
"autocmd BufNewFile *.c exec append(0,"/* */")|exec append(1,"#include ") |exec append(2,"int main(void)")|exec append(3,"{")|exec append(5," return 0;")|exec append(6,"}")| exec ‘:0‘
autocmd BufNewFile *.c exec append(0,"#include ") |exec append(1,"int main(void)")|exec append(2,"{")|exec append(4," return 0;")|exec append(5,"}")| exec ‘:4‘
autocmd BufNewFile *.pl exec append(0,"#!/usr/bin/perl -w") | exec append(1,"use strict;") | exec append(2,"use warnings;") | exec ‘:$‘
"autocmd BufNewFile *.py 0r ~/.vim/skeleton/skeleton.py
map ^i#
map ^x
set viminfo=
[共享交流]CU高手们的vimrc(vim配置文件)小全 zt - 软件开发&软件工程 -... vim配置文件 .vimrc 软件开发工程师:程序员的职业规划就像软件工程 初为项目经理(ZT) 文章查看 【关注VC MFC C# .NET Windows 软件开发技术 软件工程 项目管理的开发人员个人专栏】 初为项目经理(ZT) 文章查看 【关注VC MFC C# .NET Windows 软件开发技术 软件工程 项目管理的开发人员个人专栏】 史上最强的Vim 配置文件|最强,Vim,配置文件-中国源码 史上最强的Vim 配置文件|最强,Vim,配置文件-中国源码zz VS2005让软件开发回归软件工程 VS2005让软件开发回归软件工程 企业网站项目管理与软件工程 文章查看 【关注VC MFC C# .NET Windows 软件开发技术 软件工程 项目管理的开发人员个人专栏】 Javaeye 软件开发交流社区 Spring源码分析-JavaEye做最棒的软件开发交流社区 谈软件项目的价格 - 希赛网软件工程 软件测试的完整分类 - 软件工程专栏 软件工程,软件测试基础知识 宁波高手的指标ZT 架构师核心技能养成计划-工作-海阔天空 -JavaEye做最棒的软件开发交流社区 Spring书籍-Spring-入门讨论 -JavaEye做最棒的软件开发交流社区 Spring声明式事务策略-Spring-Java -JavaEye做最棒的软件开发交流社区 struts2新特性预览-Struts-Java -JavaEye做最棒的软件开发交流社区 Eclipse及其插件介绍和下载-- -JavaEye做最棒的软件开发交流社区 Ruby惯用法-ruby-Ruby -JavaEye做最棒的软件开发交流社区 软件开发的“佛脚” 安全宝典:网络高手推荐的三大系统漏洞扫描工具 - 网络安全交流 - 太平洋电脑网软件论坛 ...