用于说明《vim配置文件》
"create by perofu
"
"Email:[email protected]
"1.在一般模式下,【,/】可以注释一行
"2.ctrl+a,选中全部
"3.ctrl+b,粘贴
"4.ctrl+x,剪切
"5.ctrl+c,复制
"""""""""""""""""""""""""""""context"""""""""""""""""""""""""""""
" 多字节编码设置,必须放在.vimrc顶部
"
if has("multi_byte")
" When 'fileencodings' starts with 'ucs-bom', don't do this manually
"set bomb
set fileencodings=ucs-bom,chinese,taiwan,japan,korea,utf-8,latin1
" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
" Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
set encoding=chinese
set termencoding=chinese
if &fileencoding == ''
set fileencoding=chinese
endif
elseif v:lang =~ "^zh_TW"
" Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
set encoding=taiwan
set termencoding=taiwan
if &fileencoding == ''
set fileencoding=taiwan
endif
elseif v:lang =~ "^ja_JP"
" Japanese, on Unix euc-jp, on MS-Windows cp932
set encoding=japan
set termencoding=japan
if &fileencoding == ''
set fileencoding=japan
endif
elseif v:lang =~ "^ko"
" Korean on Unix euc-kr, on MS-Windows cp949
set encoding=korea
set termencoding=korea
if &fileencoding == ''
set fileencoding=korea
endif
endif
" Detect UTF-8 locale, and override CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set encoding=utf-8
endif
else
echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
endif
" 设定默认解码
set encoding=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set fileencodings=utf-8,ucs-bom,chinese
"帮助中文支持
set helplang=cn
" 关闭旧版兼容性
set nocompatible
" 英文单词在换行时不被截断
set linebreak
" 设定行首tab为灰色
highlight LeaderTab guifg=#666666
" 自动语法高亮
syntax on
" history文件中需要记录的行数
set history=100
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 与windows共享剪贴板
set clipboard+=unnamed
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
"当文件在外部被修改,自动更新该文件
set autoread
" 为特定文件类型载入相关缩进文件
filetype indent on
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 高亮字符,让其不受100列限制
:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '\%101v.*'
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 不要闪烁
set novisualbell
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
" 自动格式化
set formatoptions=tcrqn
"关闭部分匹配模式
set noincsearch
" 在搜索的时候忽略大小写
set ignorecase
" 不要高亮被搜索的句子(phrases)
set nohlsearch
" 搜索时高亮显示被找到的文本
set hlsearch
" 设置魔术
set magic
" 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set hidden
" 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
" 输入:set list命令是应该显示些啥?
set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$
" 插入模式按 F4 插入当前时间
imap <f4> <C-r>=GetDateStamp()<cr>
"设置自动补全
filetype plugin indent on "打开文件类型检测
set completeopt=longest,menu "关掉智能补全时的预览窗口
"智能补全
imap <M-/> <C-X><C-O>
"智能补全
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType java set omnifunc=javacomplete#Complete
""""""""""""""""""""""""""""visual""""""""""""""""""""""""""""""""
"设置静音模式
set noerrorbells
set novisualbell
set t_vb=
""""""""""""""""""""""""""""end visual""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""mouse""""""""""""""""""""""""""""""""""
"可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
"""""""""""""""""""""""""""""""end mouse""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""indentation""""""""""""""""""""""""""""""""""
"设置缩进
set tabstop=4
set softtabstop=4
set shiftwidth=4
"自动缩进功能,不用每次换行不用动手对齐
set autoindent
set cindent
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
" 为C程序提供自动缩进
set smartindent
" 不要用空格代替制表符
set noexpandtab
" 不要换行
set nowrap
" 在行和段开始处使用制表符
set smarttab
"""""""""""""""""""""""""""""""end indentation""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""line number""""""""""""""""""""""""""""""""
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
autocmd FileType java,c,cpp,cs vmap <C-o> <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 $VIMRUNTIME/plugin/closetag.vim
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
endif " has("autocmd")
"""""""""""""""""""""""""""""""end line number""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""status line""""""""""""""""""""
" 总是显示状态行
set laststatus=2
" 我的状态行显示的内容(包括文件类型和解码)
"set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime("%d/%m/%y\ -\ %H:%M")}
set statusline=%F\ %h%1*%m%r%w%0*[%{strlen(&filetype)?&filetype:'none'},%{&encoding},%{&fileformat}]%=%-14.(%l,%c%V%)\ %<%p%%\ \ \ [%L]\ \ \ %{strftime('%Y-%m-%d\ -\ %H:%M\ %A')}
" 在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)
" 状态行颜色
highlight StatusLine guifg=SlateBlue guibg=Yellow
highlight StatusLineNC guifg=Gray guibg=White
"""""""""""""""""""""""""""""end status""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""load tags"""""""""""""""""""""""""""""""""""
"启动vim时如果存在tags则自动加载
if exists("tags")
set tags=./tags
endif
"设置taglist
let Tlist_Show_One_File=0 "显示多个文件的tags
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "在taglist是最后一个窗口时退出vim
let Tlist_Use_SingleClick=1 "单击时跳转
let Tlist_GainFocus_On_ToggleOpen=1 "打开taglist时获得输入焦点
let Tlist_Process_File_Always=1 "不管taglist窗口是否打开,始终解析文件中的tag
""""""""""""""""""""""""""""""""end tags"""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""backup""""""""""""""""""""""""""""""""""""
" 不要备份文件(根据自己需要取舍)
"set nobackup
" 不要生成swap文件,当buffer被丢弃的时候隐藏它
"setlocal noswapfile
"set bufhidden=hide
""""""""""""""""""""""""""""""end backup""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""keyboard"""""""""""""""""""""""""""""""""
"映射按键:a:全选,b:粘贴,c:复制,x:剪切,,vim内部有效
vmap <C-c> "yy
nmap <C-c> "yy
vmap <C-x> "yd
nmap <C-b> "yp
vmap <C-b> "yp
nmap <C-a> ggvG$
"设置控制键为,逗号
let mapleader = ","
let g:mapleader = ","
"noremap <space> :
",/ 注释当前行 #...
noremap <leader>/ ^i#
"打开tlist"
noremap <leader>t :TlistToggle<CR>
"切换到下一个标签页
noremap <leader>n :tabnext<CR>
"切换上一个标签页"
noremap <leader>b :tabprev<CR>
"打开文件在显示页显示"
noremap <leader>o :browse tabnew<CR>
""""""""""""""""""""""""""""""end keyboard"""""""""""""""""""""""""""""""""
" 括号自动补全
"function! AutoClose()
:inoremap ( ()<ESC>i
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
:inoremap { {}<ESC>i
:inoremap [ []<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap ] <c-r>=ClosePair(']')<CR>
"endf
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
""""""""""""""""""""""""""""""end contex""""""""""""""""""""""""""""""""""""""""