"============================================================================
" A more concise, clear and complete vim config for me.
"============================================================================
" Platform: Linux
" vim: set sw=4 ts=4 sts=4 et tw=78 foldmarker={
,} foldlevel=0 foldmethod=marker :
" 初始化设置 {
"
" 不兼容vi
set nocompatible
" 使用默认shell
set shell=/bin/sh
" }
" 加载插件相关配置 {
"
if has("multi_byte")
" 设置本地通用编码 utf-8
set encoding=utf-8
" 设置通用文件编码格式 utf-8
setglobal fileencoding=utf-8
" 设置文件可用的编码格式
set fileencodings=ucs-bom,utf-8,utf-16le,cp1252,iso-8859-15
endif
"
" 使用Bundle 管理插件
" 关闭文件类型识别,并确保 vundle 能够工作
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#rc()
""""""""""""""""""""""""""""" Bundles """"""""""""""""""""""""""""
" Vundle 管理 Vundle
Plugin 'gmarik/Vundle.vim'
" Vim 中文帮助文档
Plugin 'yianwillis/vimcdoc'
" 代码片段功能
" snipmate lib
Plugin 'MarcWeber/vim-addon-mw-utils'
" snipmate lib
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
" 该插件中包含了各种语言的代码片段,增强snipmate功能
Plugin 'honza/vim-snippets'
Bundle 'vim-scripts/sessionman.vim'
" 显示当前路径目录树
Bundle 'scrooloose/nerdtree'
" solarized 颜色主题
Bundle 'altercation/vim-colors-solarized'
" 对于环境中的 大小括号,引号,XML标签等进行成对映射处理(删除或添加)
Bundle 'tpope/vim-surround'
" 用于协助解决冲突的工具
" 高亮有冲突标记的位置,跳转到有冲突标记的位置,
" 跳转到冲突块中:开始,分隔符,末尾
Bundle 'rhysd/conflict-marker.vim'
" 成对插入/删除大小括号,引号
Bundle 'jiangmiao/auto-pairs'
" Vim中使用%实现括号间的跳转,该插件可以设置任意想要跳转的标记
Bundle 'matchit.zip'
"仅使用顶端显示 buffer smart tab line功能
Bundle 'vim-airline/vim-airline'
Bundle 'vim-airline/vim-airline-themes'
" 显示命令栏中缓冲区的列表
Bundle 'bling/vim-bufferline'
" 整合vim中的 nerdtree 和 tabs
Bundle 'jistr/vim-nerdtree-tabs'
" 撤销操作树
Bundle 'mbbill/undotree'
" 用于在重新启动vim后自动恢复一个文件的光标位置和折叠信息。
Bundle 'vim-scripts/restore_view.vim'
" 使用Vim的符号列显示diff,在符号栏显示 ! 等标志修改等部分。
Bundle 'mhinz/vim-signify'
" 方便搜索,替换和单词等缩写多个变体
Bundle 'tpope/vim-abolish.git'
" 使用替换时有预览
Bundle 'osyo-manga/vim-over'
" 创建自己的文本对象
Bundle 'kana/vim-textobj-user'
" 用于缩进线条的文本对象
Bundle 'kana/vim-textobj-indent'
" 语法检查
Bundle 'scrooloose/syntastic'
" web 的一些 api 插件接口
" 当前支持的协议:
" Basic HTTP,OAuth,Atompub,SOAP (in progress),XMLRPC,MetaWeblog API
" 包含的库:
" XML Parser,HTML Parser(Hack Way),JSON Parser,BASE64 Hash Algorithm,
" SHA1 Hash Algorithm,HMAC HASH Algorithm,Bit Operation Library,Converter for "UTF-8 to Unicode"
Bundle 'mattn/webapi-vim'
" 快速注释
Bundle 'scrooloose/nerdcommenter'
" 也是注释用插件,默认使用 /* ... */ 注释的方式,所以 Python shell 不支持该
" 的注释。
" gcc: 注释当前行(普通模式); gc: 可视模式下注释选中部分;
" gcu: 撤销上次注释的部分; gcgc: 撤销注释当前行和临近的上下两行。
Bundle 'tpope/vim-commentary'
" 文本过滤和对齐,格式化工具
Bundle 'godlygeek/tabular'
" 通过不同的颜色展示不同层次的括号
Bundle 'luochen1990/rainbow'
if executable('ctags')
" 在窗口中显示标签,按范围排序
Bundle 'majutsushi/tagbar'
endif
""""""""" 自动补全
" 根据当前文档,缓存文档等智能自动补全
Bundle 'Shougo/neocomplete.vim.git'
Bundle 'Shougo/neosnippet'
Bundle 'Shougo/neosnippet-snippets'
""""""""" Python
" python-mode 插件,可以帮助使用者通过使用包括
" pylint,rope,pydoc,pyflakes,pep8 和 mccabe 在内的库来快速创建
" python 代码,用于静态分析,重构,折叠,补全,文档等功能。
"Bundle 'python-mode/python-mode'
" 方便编写 Python 脚本的插件,有以下功能:
" 选择一组具有相同缩进的行;
" 选择一个方法,一个类;
" 到达上一个/下一个类/方法;
" 跳转到块的开始或结尾;
" 注释/取消注释的选择;
" 使用相同的缩进跳转到最后/下一行;
" 移动一个块(左/右);
" 创建便于导航的类或方法的列表
Bundle 'yssource/python.vim'
" 该插件重新定义了%的动作,以便它能够循环通过 if/elif/else,
" try/except/catch, for/continue/break 和 while/continue/break 结构。
" 另外两个动作,[% 和 ]% 分别到达当前块的开始和结束。
Bundle 'python_match.vim'
" Pythond 的一些补全功能。
Bundle 'pythoncomplete'
Bundle 'vim-scripts/indentpython.vim'
Bundle 'nvie/vim-flake8'
""""""""" HTML
" 使 vim 支持 css3 的语法
Bundle 'hail2u/vim-css3-syntax'
" 用于在键入颜色的编码后显示对应的颜色背景(如,#fF0000)
Bundle 'gorodinskiy/vim-coloresque'
" 该项目包含与Vim一起提供的Haml,Sass和SCSS的运行时文件。
Bundle 'tpope/vim-haml'
" 提供类似扩展缩写的支持
Bundle 'mattn/emmet-vim'
" Tmux
Bundle 'christoomey/vim-tmux-navigator'
""""""""""""""""""""""""""""" Bundles """"""""""""""""""""""""""""
" }
" 通用设置 {
"
" 暗色背景
set background=dark
" 背景转换触发方法
function! TransformBG()
let s:tbg = &background
" 转换逻辑
if s:tbg == "dark"
set background=light
else
set background=dark
endif
endfunction
" 触发方法
noremap <leader>bg :call TransformBG()<CR>
" 执行了3个动作 filetype on-> filetype plugin on -> filetype indent on
" 开启文件类型检测-> 自动加载相应插件 -> 启用相关缩进插件
filetype plugin indent on
" 语法高亮
syntax on
" 自动使用鼠标,如果使用鼠标复制 粘贴,需要禁用该设置
" 使用Vim时建议尽量少用鼠标
set mouse=a
" 打字时隐藏鼠标光标
set mousehide
" 脚本编码格式 utf-8
scriptencoding utf-8
" Linux 系统一般具有粘贴版:
" unnamed 选择粘贴版,vim 映射到 * 寄存器
" unnamedplus 系统粘贴版,和其其他平台的Ctrl+C,Ctrl+V功能相同,vim映射到 + 寄存器
" 以下设置可以跨平台使用,:reg 查看寄存器详情
if has('clipboard') && has("unnamedplus")
set clipboard=unnamed,unnamedplus
endif
" universal-ctags 替换 exuberant-ctags 并配置
set tags=tags
" 自动切换当前目录为当前编辑文件所在的目录
set autochdir
" 切换到新的文件(新Buffer)后,目录自动切换到当前编辑文件(Buffer)的路径
autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif
" 启动vim时不显示乌干达的信息
set shortmess=alI
" 虚拟编辑,允许光标定位达到每行最后一个字符之后
set virtualedit=onemore
" 保存更多的编辑历史
set history=1000
" 拼写检查
"set spell
" 允许在不保存的情况下切换编辑buffer
set hidden
" _,@,#,$,-连接的字符作为一个整体,选择、换行不分割
set iskeyword+=_,@,#,$,-
" 编辑 git commit 信息时,编辑光标定位最开始
au FileType gitcommit au! BufEnter COMMIT_EDITMSG call setpos('.', [0, 1, 1, 0])
" 再次打开文件光标恢复到最后编辑的位置
function! ResCur()
if line("'\'") <= line("$")
silent! normal! g`"
return 1
endif
endfunction
augroup resCur
autocmd!
autocmd BufWinEnter * call ResCur()
augroup END
"
" 设置备份
set backup
" 持久的保存当前文件的编辑历史,用于可持久性的撤销操作
" 防止再次打开编辑过的文件无法进行之前操作的撤销动作
if has('persistent_undo')
" 激活撤销
set undofile
" 最大撤销的行数
set undolevels=1000
" 重新加载buffer时能够保存的最大撤销行数
set undoreload=10000
endif
" 初始化 vimbackup
01-15
494
12-20
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交