码迷,mamicode.com
首页 > 系统相关 > 详细

vim 配置(当前版本) 2015.10.4

时间:2015-10-04 01:31:37      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:

"""""""""""""""""""""""""""""""""""""""""
" 基础配置设置
"""""""""""""""""""""""""""""""""""""""""
filetype on                      "检测文件类型
filetype indent on               "针对不同的文件类型采用不同的缩进格式
filetype plugin on               "允许插件
filetype plugin indent on        "启动自动补全

set nu
"set relativenumber number        "相对行号,可用Ctrl+n在相对/绝对行号间切换
set history=2000                 "history存储长度
set nocompatible                 "非兼容vi模式,避免以前版本的一些bug和局限
set autoread                     "文件修改之后自动载入
set shortmess=atI                "启动的时候不显示那个援助索马里儿童的提示
set t_ti= t_te=                  "退出vim后,内容显示在终端屏幕
set title                        "change the terminal‘s title
set novisualbell                 "don‘t beep
set noerrorbells                 "don‘t beep
set t_vb=
set tm=500
set mat=2                        "Blink times every second when matching brackets
set showmatch                    "括号配对情况
set hidden                       "A buffer becomes hidden when it is abandoned
set wildmode=list:longest
set ttyfast
set wildignore=*.swp,*.,*.pyc,*.class
set scrolloff=7                  "至少有7行在光标所在行上下
"set mouse=a                      "为所有模式启用鼠标
set selection=old
set selectmode=mouse,key
set viminfo^=%                   "Remember info about open buffers on close
set magic                        "正则表达式匹配形式
set backspace=eol,start,indent   "Configure backspace so it acts as it should act
set whichwrap+=<,>,h,l

" 搜索
"""""""""""""""""""""""""""""""""""""""""
set hlsearch                     "高亮search命中的文本。
set ignorecase                   "搜索时忽略大小写
set incsearch                    "随着键入即时搜索
set smartcase                    "有一个或以上大写字母时仍大小写敏感

" 折叠
"""""""""""""""""""""""""""""""""""""""""
"set foldenable
"set foldmethod=indent
"set foldlevel=99

" 缩进
"""""""""""""""""""""""""""""""""""""""""
set smartindent                  "智能缩进
set autoindent                   "总是自动缩进
set tabstop=4                    "设置Tab键的宽度(等同的空格个数)
set shiftwidth=4                 "自动对齐的空格数
set softtabstop=4                "按退格键时可以一次删掉4个空格
set smarttab                     "insert tabs on the start of a line according to shiftwidth, not tabstop
set expandtab                    "将Tab自动转化成空格(需要输入真正的Tab键时,使用Ctrl+V+Tab)
set shiftround                   "Use multiple of shiftwidth when indenting with ‘<‘ and ‘>‘

" 编码
"""""""""""""""""""""""""""""""""""""""""
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,chinese,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
set helplang=cn
set termencoding=utf-8           "这句只影响普通模式 (非图形界面) 下的Vim
set ffs=unix,dos,mac             "Use Unix as the standard file type
set formatoptions+=m             "如遇Unicode值大于255的文本,不必等到空格再折行。
set formatoptions+=B             "合并两行中文时,不在中间加空格:

" 语法
"""""""""""""""""""""""""""""""""""""""""
syntax enable                    "打开语法高亮
syntax on

" 撤销
"""""""""""""""""""""""""""""""""""""""""
"set undolevels=1000              "How many undos
"set undoreload=10000             "number of lines to save for undo
"if v:version >= 730
"    set undofile                 "keep a persistent backup file
"    set undodir=~/bak/vimundo/
"endif

" 状态栏
"""""""""""""""""""""""""""""""""""""""""
set ruler                        "显示当前的行号列号
set showcmd                      "在状态栏显示正在输入的命令
set showmode
set statusline=%<%f\ %h%m%r%=%k[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ %-14.(%l,%c%V%)\ %P
set laststatus=2                 "命令行(在状态行下)的高度,默认为1,这里是2

" 相对绝对行号
"""""""""""""""""""""""""""""""""""""""""
"autocmd FocusLost * :set norelativenumber number
"autocmd FocusGained * :set relativenumber
"autocmd InsertEnter * :set norelativenumber number
"autocmd InsertLeave * :set relativenumber

"set cursorline                  "突出显示当前行,可用Ctrl+m切换是否显示
"set cursorcolumn                "突出显示当前列,可用Ctrl+m切换是否显示
"set backup                       "备份
" 退出插入模式时自动保存
"autocmd InsertLeave * :w!<ESC>

"""""""""""""""""""""""""""""""""""""""""
" 自定义快捷键
"""""""""""""""""""""""""""""""""""""""""
" 前导符号
"""""""""""""""""""""""""""""""""""""""""
let mapleader = ‘,‘
let g:mapleader = ‘,‘

" 常用快捷键
"""""""""""""""""""""""""""""""""""""""""
" 到行首行尾
noremap H ^
noremap L $

" 粘贴格式
noremap <leader>p :set paste<CR>i
noremap <leader>n :set nopaste<CR>


" 到光标所在行第一个非空字符
"map 0 ^

" 从光标处复制到行尾,不包括行尾结束符
map Y y$

" t/T增加空行
nmap t o<ESC>
nmap T O<ESC>

" 恢复撤销
nnoremap U <C-r>

" 保存
map <leader>w :w!<cr>

" 保存并退出当前窗口
map <leader>q :q<CR>

" 保存并挂起
map <leader>z :wa!<cr><C-z>

" 全选
map <C-a> ggVG

" 相对/绝对行号转换
noremap <C-n> :call NumberToggle()<cr>
cnoremap <C-n> :call NumberToggle()<cr>:

" 突出显示当前行/列开关
" map <C-m> :call CusorCulLineToggle()<cr>

" 打开/关闭全部折叠
map <leader>o zR
map <leader>c zM

" 连续按jf退出插入/命令行/可视模式
inoremap jk <ESC>l
cnoremap jk <ESC>l
vnoremap jf <ESC>l

" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y

" 按;直接进入命令行模式
"nnoremap ; :

" 将光标所在行上移或下移一行
"nmap <S-k> :m-2<cr>
"nmap <S-j> :m+1<cr>
"vmap <S-k> :m-2<cr>
"vmap <S-j> :m+1<cr>

" 搜索查找快捷键
"""""""""""""""""""""""""""""""""""""""""
" 替换,匹配模式采用very magic
map \ :%s/\v

" 查找,匹配模式采用very magic
nnoremap / /\v
vnoremap / /\v

" 去掉查找后的高亮显示
noremap <silent><leader>/ :nohls<CR>

" 搜索的内容总是在屏幕中心显示
nnoremap <silent> n nzz
nnoremap <silent> N Nzz
nnoremap <silent> * *zz
nnoremap <silent> # #zz
nnoremap <silent> g* g*zz

" 普通模式(Nomal Mode)下快捷键
"""""""""""""""""""""""""""""""""""""""""
" 快速编辑重vimrc
nmap <silent> <leader>ev :e $MYVIMRC<CR>
nmap <silent> <leader>sv :so $MYVIMRC<CR>

" 快速滚屏
nnoremap <C-e> 2<C-e>
nnoremap <C-y> 2<C-y>

" 命令行模式(Command Line Mode)下快捷键
"""""""""""""""""""""""""""""""""""""""""
cnoremap <C-j> <t_kd>
cnoremap <C-k> <t_ku>
cnoremap <C-a> <Home>
cnoremap <C-e> <End>

" 功能键
"""""""""""""""""""""""""""""""""""""""""
" F6语法高亮快捷键
nnoremap <F6> :exec exists(‘syntax_on‘) ? ‘syn off‘ : ‘syn on‘<CR>
" F7标签导航
"nnoremap <silent> <F7> :TlistToggle<CR>
nnoremap <leader>m :TlistToggle<CR>
" F8标签导航
"nmap <F8> :TagbarToggle<CR>

" 多窗口标签快捷键
"""""""""""""""""""""""""""""""""""""""""
" 在多个窗口间切换
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

" Disbale paste mode when leaving insert mode
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove<cr>

" Opens a new tab with the current buffer‘s path
" Super useful when editing files in the same directory
map <leader>te :tabedit <C-r>=expand("%:p:h")<cr>/

" 杂项
"""""""""""""""""""""""""""""""""""""""""
" Disbale paste mode when leaving insert mode
set paste
"autocmd InsertLeave * set nopaste

" w!! to sudo & write a file
cmap w!! w !sudo tee >/dev/null %

" Swap implementations of ` and ‘ jump to markers
" By default, ‘ jumps to the marked line, ` jumps to the marked line and
" column, so swap them
nnoremap ‘ `
nnoremap ` ‘

" Automatically reload vimrc when it‘s saved
autocmd BufWritePost .vimrc so ~/.vimrc

" ; can repeat fx/tx. so do not map it
nnoremap <leader>v V`}

"""""""""""""""""""""""""""""""""""""""""
" 主题颜色显示
"""""""""""""""""""""""""""""""""""""""""
" Set extra options when running in GUI mode
if has("gui_running")
    set guifont=Monaco:h14
    set guioptions-=T
    set guioptions+=e
    set guioptions-=r
    set guioptions-=L
    set guitablabel=%M\ %t
    set showtabline=1
    set linespace=2
    set noimd
    set t_Co=256
endif

" 修改主题和颜色展示
" colorscheme solarized
set background=dark
set t_Co=256
" colorscheme molokai
 colorscheme desert

" 设置标记一列的背景颜色和数字一行颜色一致
hi! link SignColumn   LineNr
hi! link ShowMarksHLl DiffAdd
hi! link ShowMarksHLu DiffChange

" 防止错误整行标红导致看不清
highlight clear SpellBad
highlight SpellBad term=standout ctermfg=1 term=underline cterm=underline
highlight clear SpellCap
highlight SpellCap term=underline cterm=underline
highlight clear SpellRare
highlight SpellRare term=underline cterm=underline
highlight clear SpellLocal
highlight SpellLocal term=underline cterm=underline

" settings for kien/rainbow_parentheses.vim
"autocmd VimEnter * RainbowParenthesesToggle
"autocmd Syntax * RainbowParenthesesLoadRound
"autocmd Syntax * RainbowParenthesesLoadSquare
"autocmd Syntax * RainbowParenthesesLoadBraces

"""""""""""""""""""""""""""""""""""""""""
" 其它杂项配置
"""""""""""""""""""""""""""""""""""""""""
autocmd! bufwritepost _vimrc source %     "vimrc文件修改之后自动加载。 windows。
autocmd! bufwritepost .vimrc source %     "vimrc文件修改之后自动加载。 linux。
"set completeopt=longest,menu              "自动补全配置,让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)

" 离开插入模式后自动关闭预览窗口
"autocmd InsertLeave * if pumvisible() == 0|pclose|endif

" 回车即选中当前项
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"

" 增强模式中的命令行自动完成操作
set wildmenu

" Ignore compiled files
" set wildignore=*.o,*~,*.pyc,*.class

" Python 文件的一般设置,比如不要tab等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab ai
" 如果不起作用,确定.viminfo是否可写
if has("autocmd")
  au BufReadPost * if line("‘\"") > 1 && line("‘\"") <= line("$") | exe "normal! g‘\"" | endif
endif

" 删除多余空格
func! DeleteTrailingWS()
  exe "normal mz"
  %s/\s\+$//ge
  exe "normal `z"
endfunc
autocmd BufWrite *.py :call DeleteTrailingWS()

"""""""""""""""""""""""""""""""""""""""""
" 插件管理配置开始
"""""""""""""""""""""""""""""""""""""""""
" 开启目录树
nnoremap <silent> <F2> :NERDTreeToggle<CR>
  
" 标签导航
nnoremap <silent> <F10> :TlistToggle<CR>
let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘
"let Tlist_Show_One_File        = 1             " 只显示当前文件的tags
let Tlist_Exit_OnlyWindow      = 1             " 如果Taglist窗口是最后一个窗口则退出Vim
let Tlist_Use_Right_Window     = 1             " 在右侧窗口中显示
let Tlist_File_Fold_Auto_Close = 1             " 自动折叠
let Tlist_Sort_Type = "name"                   " items in tags sorted by name

"""""""""""""""""""""""""""""""""""""""""
" 插件管理配置结束
"""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""
" 自定义的函数
"""""""""""""""""""""""""""""""""""""""""
" 相对绝对行号转换
function! NumberToggle()
  if(&relativenumber == 1)
    set norelativenumber number
  else
    set relativenumber
  endif
endfunc

" 突出显示当前行列转换
function! CusorCulLineToggle()
  if(&cursorcolumn == 1)
    set nocursorcolumn
    set nocursorline
  else
    set cursorcolumn
    set cursorline
  endif
endfunc
function! GoToFileEnd()
    normal G
endfunc

""定义函数SetTitle,自动插入文件头
autocmd BufNewFile *.py,*.cpp,*.c,*.sh,*.java exec ":call SetTitle()"
function! SetTitle()
    "如果文件类型为.sh文件
    if &filetype == ‘sh‘
        call setline(1,"\#!/bin/bash")
        call append(line("."), "\#############################################")
        call append(line(".")+1, "\# Copyright(c) 2015 Tencent, all rights reserved")
        call append(line(".")+2, "\# File        : ".expand("%"))
        call append(line(".")+3, "\# Author      : lucasysfeng")
        call append(line(".")+4, "\# Revision    : ".strftime("%Y-%m-%-d %H:%M:%S"))
        call append(line(".")+5, "\# Description :")
        call append(line(".")+6, "\#############################################")
    elseif &filetype == ‘h‘
        call setline(1,"/****************************************************")
        call append(line("."), "\# Copyright(c) 2015 Tencent, all rights reserved")
        call append(line(".")+1, "\# File        : ".expand("%"))
        call append(line(".")+2, "\# Author      : lucasysfeng")
        call append(line(".")+3, "\# Revision    : ".strftime("%Y-%m-%-d %H:%M:%S"))
        call append(line(".")+4, "\# Description :")
        call append(line(".")+5, "****************************************************/")
        call append(line(".")+6, "#pragma once")
        call append(line(".")+7, "")
    elseif &filetype == ‘cpp‘ || &filetype == ‘c‘
        call setline(1,"/****************************************************")
        call append(line("."), "\# Copyright(c) 2015 Tencent, all rights reserved")
        call append(line(".")+1, "\# File        : ".expand("%"))
        call append(line(".")+2, "\# Author      : lucasysfeng")
        call append(line(".")+3, "\# Revision    : ".strftime("%Y-%m-%-d %H:%M:%S"))
        call append(line(".")+4, "\# Description :")
        call append(line(".")+5, "****************************************************/")
        call append(line(".")+6, "#include <stdio.h>")
        call append(line(".")+7, "#include <iostream>")
        call append(line(".")+8, "#include <string>")
        call append(line(".")+9, "")
        call append(line(".")+10, "using namespace std;")
        call append(line(".")+11, "")
        call append(line(".")+12, "int main()")
        call append(line(".")+13, "{")
        call append(line(".")+14, "")
        call append(line(".")+15, "    return 0;")
        call append(line(".")+16,"}")
    elseif &filetype == ‘python‘
        call setline(1,"\#!/usr/bin/env python")
        call append(line("."), "\# -*- coding: utf-8 -*-")
        call append(line(".")+1, "\#############################################")
        call append(line(".")+2, "\# Copyright(c) 2015 Tencent, all rights reserved")
        call append(line(".")+3, "\# File        : ".expand("%"))
        call append(line(".")+4, "\# Author      : lucasysfeng")
        call append(line(".")+5, "\# Revision    : ".strftime("%Y-%m-%-d %H:%M:%S"))
        call append(line(".")+6, "\# Description :")
        call append(line(".")+7, "\#############################################")
    endif
    "新建文件后,自动定位到文件末尾
    "autocmd BufNewFile * exec ":call GoToFileEnd()"
    call GoToFileEnd() 
endfunc

  

vim 配置(当前版本) 2015.10.4

标签:

原文地址:http://www.cnblogs.com/lucasysfeng/p/4854067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!