vim配置文件的说明

用于说明《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""""""""""""""""""""""""""""""""""""""""


你可能感兴趣的:(linux,vim配置,vim说明)