Skip to content

Instantly share code, notes, and snippets.

@xurenlu
Created April 25, 2013 07:09
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save xurenlu/5458034 to your computer and use it in GitHub Desktop.
Save xurenlu/5458034 to your computer and use it in GitHub Desktop.
vim 配置文件
"vimim 相关
let g:vimim_enable_static_enu=1
"let g:vimim_enable_sexy_input_style=1
" 关闭中文标点
let g:vimim_disable_chinese_punctuation=1
"中英文之间不加空格
let g:vimim_disable_seamless_english_input=1
set dictionary-=/etc/funclist.txt dictionary+=/etc/funclist.txt
"Use the dictionary completion
set complete-=k complete+=k
"自动补全..
set completeopt=longest,menu
imap <C-L> <C-x><C-o>
set nu
autocmd FileType python set complete+=k~/.vim/tools/pydiction
filetype plugin indent on
set nocp
filetype plugin on
set helplang=cn
map <F6> :Project<CR>
"autocmd BufNewFile *.py 0r ~/.vim/template/simple.py
"
"
set ignorecase
set shiftwidth=4
set softtabstop=4
set tabstop=4
set nocompatible " Use Vim defaults (much better!)
"set ai " always set autoindenting on
"set backup " keep a backup file
set viminfo='200,f1,<1500 " read/write a .viminfo file, don't store more
" than 50 lines of registers
set history=1500 " keep 50 lines of command line history
set ruler " show the cursor position all the time
if has("autocmd")
filetype plugin indent on
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType ruby set omnifunc=rubycomplete#Complete
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType ada set omnifunc=adacomplete#Complete
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
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 sql set omnifunc=sqlcomplete#Complete
endif
set ru
"该命令打开 VIM 的状态栏标尺。 默认情况下, VIM 的状态栏标尺在屏幕底部, 它能即时显示当前光标所在位置在文件中的行号、列号, 以及对应的整个文件的百分比。 打开标尺可以给文件的编辑工作带来一定方便。
set nocp
"该命令指定让 VIM 工作在不兼容模式下。 在 VIM 之前, 出现过一个非常流行的编辑器叫 vi。 VIM 许多操作与 vi 很相似,但也有许多操作与 vi 是不一样的。 如果使用“:set cp”命令打开了兼容模式开关的话, VIM 将尽可能地模仿 vi 的操作模式。
"也许有许多人喜欢“最正统的 vi”的操作模式, 对于初学者来说, vi 里许多操作是比较不方便的。
"举一个例子, VIM 里允许在 Insert 模式下使用方向键移动光标, 而 vi 里在 Insert 模式下是不能移动光标的, 必须使用 ESC 退回到 Normal 模式下才行。
"再举一个例子, vi 里使用 u 命令可以撤消一次先前的操作, 再次按下 u 时, 将撤消“撤消”这个动作本身,也就是我们常说的“重复”(redo)。 而 VIM 里可以使用 u 命令撤消多步操作, “重复”使用的快捷键是 Ctrl + R。
"使用兼容模式后, VIM 将放弃这些新的功能, 尽量模仿 vi 的各种操作方式。 只有在不兼容模式下, 才能更好地发挥 VIM 自身的特点。 Bram 爷爷强烈推荐大家使用 VIM 的不兼容模式, 滇狐也是这样推荐的。 请务必在你的 .vimrc 中的第一行写上: “set nocp”。
set hls
"搜索时高亮显示被找到的文本。 该指令的功能在 vimtutor 中已经有过介绍, 这里就不多说了。 其实似乎许多人并不喜欢这个功能。
"set is
"搜索时在未完全输入完毕要检索的文本时就开始检索。 vimtutor 对该命令也有过介绍, 滇狐并不喜欢这个功能, 因此滇狐自己的配置文件里是没有这条命令的。 但是周围有朋友很喜欢这个, 因此滇狐还是将它列在这里。
syntax on
"打开关键字上色。 进行程序设计的朋友应该都知道关键字上色是什么东西, 因此这里就不多说了。 不进行程序设计的朋友不妨也打开这个功能, 虽然不一定能够用得着, 但这个功能其实也是很好玩的。
set backspace=indent,eol,start
"设想这样一个情况: 当前光标前面有若干字母, 我们按下 i 键进入了 Insert 模式, 然后输入了 3 个字母, 再按 5 下删除(Backspace)。 默认情况下, VIM 仅能删除我们新输入的 3 个字母, 然后喇叭“嘟嘟”响两声。 如果我们“set backspace=start”, 则可以在删除了新输入的 3 个字母之后, 继续向前删除原有的两个字符。
"再设想一个情况: 有若干行文字, 我们把光标移到中间某一行的行首, 按 i 键进入 Insert 模式, 然后按一下 Backspace。默认情况下, 喇叭会“嘟”一声, 然后没有任何动静。 如果我们“set backspace=eol”, 则可以删除前一行行末的回车,也就是说将两行拼接起来。
"当我们设置了自动缩进后, 如果前一行缩进了一定距离, 按下回车后, 下一行也会保持相同的缩进。 默认情况下, 我们不能在 Insert 模式下直接按 Backspace 删除行首的缩进。 如果我们“set backspace=indent”, 则可以开启这一项功能。
"上述三项功能, 你可以根据自己的需要, 选择其中一种或几种, 用逗号分隔各个选项。 建议把这三个选项都选上。
set whichwrap=b,s,<,>,[,]
"默认情况下, 在 VIM 中当光标移到一行最左边的时候, 我们继续按左键, 光标不能回到上一行的最右边。 同样地, 光标到了一行最右边的时候,我们不能通过继续按右跳到下一行的最左边。 但是, 通过设置 whichwrap 我们可以对一部分按键开启这项功能。如果想对某一个或几个按键开启到头后自动折向下一行的功能, 可以把需要开启的键的代号写到 whichwrap 的参数列表中,各个键之间使用逗号分隔。 以下是 whichwrap 支持的按键名称列表:
" * b
" 在 Normal 或 Visual 模式下按删除(Backspace)键。
" * s
" 在 Normal 或 Visual 模式下按空格键。
" * h
" 在 Normal 或 Visual 模式下按 h 键。
" * l
" 在 Normal 或 Visual 模式下按 l 键。
" * <
" 在 Normal 或 Visual 模式下按左方向键。
" * >
" 在 Normal 或 Visual 模式下按右方向键。
" * ~
" 在 Normal 模式下按 ~ 键(翻转当前字母大小写)。
" * [
" 在 Insert 或 Replace 模式下按左方向键。
" * ]
" 在 Insert 或 Replace 模式下按右方向键。
set encoding=utf-8
"设置当前字符编码为 UTF-8。 UTF-8 是支持字符集最多的编码之一, 在 UTF-8 下进行工作, 会带来许多方便之处。 由于 VIM 在运行过程中切换 encoding 会造成许多问题, 如提示信息乱码、 register 丢失等, 因此强烈建议大家在启动 VIM 的时候把 encoding 设置为 UTF-8, 在编辑非 UTF-8 的文件时, 通过 fileencoding 来进行转码。
set langmenu=zh_CN.UTF-8
"使用中文菜单, 并使用 UTF-8 编码。 如果没有这句的话, 在非 UTF-8 的系统, 如 Windows 下, 用了 UTF-8 的 encoding 后菜单会乱码。
"language message en_US.UTF-8
"使用中文提示信息, 并使用 UTF-8 编码。 如果没有这句的话, 在非 UTF-8 的系统, 如 Windows 下, 用了 UTF-8 的 encoding 后系统提示会乱码。
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
"设置编码的自动识别。 关于这条设置的详细含义, 请参看这篇文章。
"set ambiwidth=double
"防止特殊符号无法正常显示。 在 Unicode 中, 许多来自不同语言的字符, 如果字型足够近似的话, 会把它们放在同一个编码中。但在不同编码中, 字符的宽度是不一样的。 例如中文汉语拼音中的 ā 就很宽, 而欧洲语言中同样的字符就很窄。 当 VIM 工作在 Unicode 状态时, 遇到这些宽度不明的字符时, 默认使用窄字符, 这会导致中文的破折号“——”非常短, 五角星“★”等符号只能显示一半。因此, 我们需要设置 ambiwidth=double 来解决这个问题。
filetype plugin indent on
"开启文件类型自动识别, 启用文件类型插件, 启用针对文件类型的自动缩进
set smarttab
"当使用 et 将 Tab 替换为空格之后, 按下一个 Tab 键就能插入 4 个空格,
"但要想删除这 4 个空格, 就得按 4 下 Backspace, 很不方便。 设置 smarttab
"之后, 就可以只按一下 Backspace 就删除 4 个空格了。
"set spell
"打开拼写检查。 拼写有错的单词下方会有红色波浪线, 将光标放在单词上, 按 z= 就会出现拼写建议, 按 ]s 可以直接跳到下一个拼写错误处。
"set tw=78
"设置光标超过 78 列的时候折行。
set lbr
"不在单词中间断行。 设置了这个选项后, 如果一行文字非常长, 无法在一行内显示完的话, 它会在单词与单词间的空白处断开, 尽量不会把一个单词分成两截放在两个不同的行里。
set fo+=mB
"打开断行模块对亚洲语言支持。 m 表示允许在两个汉字之间断行, 即使汉字之间没有出现空格。 B 表示将两行合并为一行的时候, 汉字与汉字之间不要补空格。 该命令支持的更多的选项请参看用户手册。
"
"
"
" c/c++
set sm
"显示括号配对情况。 打开这个选项后, 当输入后括号 (包括小括号、中括号、大括号)
"的时候, 光标会跳回前括号片刻, 然后跳回来, 以此显示括号的配对情况。
set ai
"打开普通文件类型的自动缩进。 该自动缩进不如 cindent 智能, 但它可以为你编辑非
"C/C++ 文件提供一定帮助。
set selectmode=
"不使用 selectmode。
set keymodel=
"不使用“Shift + 方向键”选择文本, “Shift + 方向键”代表向指定方向跳一个单词。 如果你喜欢这项功能的话, 可以使用“set keymodel=startsel,stopsel”打开它。
set keymodel=startsel,stopsel
set wildmenu
"在命令模式下使用 Tab 自动补全的时候,
"将补全内容使用一个漂亮的单行菜单形式显示出来。
set sw=4
"自动缩进的时候, 缩进尺寸为 4 个空格。
set ts=4
"Tab 宽度为 4 个字符。
set et
"编辑时将所有 Tab 替换为空格。
"该选项只在编辑时将 Tab 替换为空格, 如果打开一个已经存在的文件, 并不会将已有的 Tab 替换为空格。 如果希望进行这样的替换的话, 可以使用这条命令“:retab”。
retab
"set paste
"set nopaste
set pastetoggle=<F3>
"很多兄弟都碰到过这样一个问题,在vim中粘贴代码有时会自动增加缩进,造成代码排版
"的混乱。如何让它不缩进,保持原格式?其实vim有一个paste开关。
"输入 :set paste
"需要关闭时
"输入:set nopaste
"我是在vimrc中加入了:
"set pastetoggle=<F3>
"这样就可以用F3来切换了。
if (has("win32"))
"-------------------------------------------------------------------------
" Win32
"-------------------------------------------------------------------------
if (has("gui_running"))
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI
set guifontwide=NSimSun:h9:cGB2312
endif
else
if (has("gui_running"))
set guifont=Bitstream\ Vera\ Sans\ Mono\ 9
endif
endif
"如果去掉这一行,默认值set mouse=a就生效了,这时不能用鼠标选中复制.
set mouse=v
"打开文件时自动到达上次浏览时的位置
" Only do this part when compiled with support for autocommands
if has("autocmd")
" " In text files, always limit the width of text to 78 characters
autocmd BufRead *.txt set tw=78
" " When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" |
\ endif
endif
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
"
"其中字符串 “string” 规定了什么要储存。该字符串的语法为一个选项字符跟一个参数.
""选项和参数组成的对子之间由逗号分隔.
""来看一下你可以怎样构建你自己的 viminfo 字符串。首先,选项 ‘ 用于规定你为多
"少个文件保存标记 (a-z)。为此选项挑一个美妙的偶数 (比如 1000). 你的命令现在看
"起来像这样:
"
":set viminfo=’1000
"
"选项 f 控制是否要储存全局标记 (A-Z 和 0-9)。如果这个选项设为 0,那么什么也不
"存储。如果设为 1 ,或你对 f 选项不作规定, 那么标记就被存储. 你要这个功能, 现
"在你有了:
"
":set viminfo=’1000,f1
"
"选项 < 控制着每个寄存器内保存几行文本。默认情况下,所有的文本行都被保存. 如果
"设为 0,则什么也不保存。为了避免成千上万行文本被加入你的信息文件 (那些文本可能
"永远也没用,徒然使 Vim 起动得更慢), 你采用 500 行的上限:
"
":set viminfo='1000,f1,<500
"
"你也许用得着的其它选项:
": 保存命令行历史记录内的行数
"@ 保存输入行历史记录内的行数
"/ 保存搜索历史记录内的行数
"r 可移介质,其中没有任何标记存入 (可用多次)
"! 以大写字母开头的全局变数,并且不含有小写字母
"h 起动时解除选项 'hlsearch' 的高亮度显示
"% 缓冲列表 (只有当不带参数起动 Vim 时才还原)
"c 用编码 'encoding' 转换文本
"n 用于 viminfo 文件的名称 (必须为最后一项选项)
set viminfo='1000,f1,<5000
let g:SnipeMateAllowOmniTab = 1
"ino <c-j> <c-r>=TriggerSnippet()<cr>
"snor <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr>
"
"filetype plugin on
ino <tab> <c-r>=TriggerSnippet()<cr>
snor <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
"设置缩进
set sw=4
set ts=4
" history文件中需要记录的行数
set history=1000
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 高亮显示普通txt文件(需要txt.vim脚本)
au BufRead,BufNewFile * setfiletype txt
"不需要保持和 vi 非常兼容
set nocompatible
"执行 Vim 缺省提供的 .vimrc 文件的示例,包含了打开语法加亮显示等最常用的功能
"source $VIMRUNTIME/vimrc_example.vim
" 使backspace正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
"在输入命令时列出匹配项目,也就是截图底部的效果
set wildmenu
set nocindent
"打开自动缩,继承前一行的缩进方式,特别适用于多行注释 进
set autoindent
"默认情况下手动折叠
set foldmethod=manual
"显示行号(否:nonumber)
set nu
"不自动换行(否:wrap)
set nowrap
"缺省不产生备份文件
set nobackup
" 不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
"set bufhidden=hide
"在输入括号时光标会短暂地跳到与之相匹配的括号处,不影响输入
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
" 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch
" 不要闪烁
set novisualbell
"正确地处理中文字符的折行和拼接
set formatoptions+=mM
"文件 UTF-8 编码
set fileencodings=utf-8
let g:SuperTabRetainCompletionType=2
let g:SuperTabMappingBackward="<tab>"
nmap <C-M> <ESC>:NERDTreeToggle<RETURN>
"let g:SuperTabDefaultCompletionType="<C-X><C-O>"
"------------ renlu split ----------
"设置工作目录
function! CHANGE_CURR_DIR()
let _dir = expand("%:p:h")
exec "cd " . _dir
unlet _dir
endfunction
autocmd BufEnter * call CHANGE_CURR_DIR()
" 窗口区域切换,Ctrl+↑↓←→ 来切换
imap <silent> <C-K> <esc><C-W><C-W><CR>
nmap <silent> <C-K> <esc><C-W><C-W><CR>
imap <silent> <F7> <esc>:NERDTreeToggle<CR>
nmap <silent> <F7> :NERDTreeToggle<CR>
imap <silent> <C-Q> <esc>:q!<CR><esc>:q!<CR>
colorscheme desert
set guifont=Monaco:h18
" 窗口区域切换,Ctrl+↑↓←→ 来切换
"imap <silent> <C-left> <esc><C-W><left>
"vmap <silent> <C-left> <esc><C-W><left>
"nmap <silent> <C-left> <C-W><left>
"imap <silent> <C-right> <esc><C-W><right>
"vmap <silent> <C-right> <esc><C-W><right>
"nmap <silent> <C-right> <C-W><right>
imap <silent> <D-left> <esc><C-W><left>
vmap <silent> <D-left> <esc><C-W><left>
nmap <silent> <D-left> <C-W><left>
imap <silent> <D-h> <esc><C-W><left>
vmap <silent> <D-h> <esc><C-W><left>
nmap <silent> <D-h> <C-W><left>
imap <silent> <D-l> <esc><C-W><right>
vmap <silent> <D-l> <esc><C-W><right>
nmap <silent> <D-l> <C-W><right>
imap <silent> <C-up> <esc><C-W><up>
vmap <silent> <C-up> <esc><C-W><up>
nmap <silent> <C-up> <C-W><up>
imap <silent> <C-down> <esc><C-W><down>
vmap <silent> <C-down> <esc><C-W><down>
nmap <silent> <C-down> <C-W><down>
" delete hack
nmap <silent> <del> "_x
vmap <silent> <del> "_x
nmap <silent> dd V<del>
nmap <silent> dw viw<del>
vmap <silent> dw iw<del>
set wrap
set fdm=manual
let Tlist_Ctags_Cmd="/usr/bin/ctags"
map fg : Dox<cr>
let g:DoxygenToolkit_authorName="renlu.xu"
let g:DoxygenToolkit_licenseTag="My own license\<enter>"
let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"
let g:DoxygenToolkit_briefTag_pre = "@brief\t"
let g:DoxygenToolkit_paramTag_pre = "@param\t"
let g:DoxygenToolkit_returnTag = "@return\t"
let g:DoxygenToolkit_briefTag_funcName = "no"
let g:DoxygenToolkit_maxFunctionProtoLines = 30
"对 NERD_commenter的设置
let NERDShutUp=1
"支持单行和多行的选择,//格式
map <c-h> ,c<space>
if(executable('ctags'))
"silent! execute "!ctags -R --c-types=+p --fields=+S *"
"silent! execute "!ctags --c++-kinds=+p --fields=+iaS --extra=+q ."
endif
:set pastetoggle=<F3> "粘贴模式开启和关闭
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment