标签:
""""""""""""""""""""""""""""""""""""""""" " 基础配置设置 """"""""""""""""""""""""""""""""""""""""" 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
标签:
原文地址:http://www.cnblogs.com/lucasysfeng/p/4854067.html