三月底写了第一篇激励自己的博客,眼看就到三周了...昨晚熬夜整理了一些与vim相关的资料.
基本上网上都能找到吧,就当多一个搜索结果,如果能对一些人有用那是最好了.
只是摘取自己配置中一部分,基本也可以直接copy后放到 .vimrc 或者 _vimrc 里. 需修改的地方有删除线标出.
当然最好能看一看然后有所选择. 如果有错误可能是copy过程中出错了,希望能别给我面子拍我一砖.
----------------------------------------------------------------------------------------------------------------------------
setnocp"或者 nocompatible 与祖宗vi的兼容与否. 基本网上大多vim配置里都会有这么一条放最前面.
setscrollbind "多tab窗口里是否同步滚动. 在:diffs 比较时比较有用."最近同事在我这边指导代码时习惯性用:vsp分屏,发现两份代码同时在滚动有点不爽,突然觉得
"有必要map一下
cmap nsb set noscrollbind
map<Up> gk "精确上下移动一行,在set wrap状态时vim自动将一行分行显示,普通的j/k不能区分屏幕上显示的多行.
map <Down> gj "这两个map其实基本不会用到,显示上的问题还是直接ggVG= 或者gq格式化 再或者 :set nowrap
mapY y$
"方便随时记录与查看笔记(如果大家也有这种笔记的话,根据自己情况修改下路径)
nmap ,r :e e:\data\backup\vim_note.txt
if has("win32") && has("gui_running")
nmap ,v :e $VIM/_vimrc
nmap ,s :source $VIM/_vimrc
else
nmap ,v :e ~/.vimrc
nmap ,s :source ~/.vimrc
endif
"保存.vimrc文件后会自动调用新的.vimrc
if has("win32") && has("gui_running")
autocmd! bufwritepost _vimrc source $VIM/_vimrc
else
autocmd! bufwritepost .vimrc source ~/.vimrc "linux下$VIM/.vimrc不一定是登录用户主目录下的rc
endif
imap <- ------------------------------------------------------------------------------------------
imap <# ######################################################################
map ,- i-------------------------------------------------------------------------------------------<CR><ESC>
map ,# i#######################################################################<CR><ESC>
cmap tn tabnew "快速创建tab页
" 在分割窗口中快速切换, 并且在上面窗口切换时会自动调整窗口大小,如果比较喜欢多窗口工作可能比较有用.
:map <C-K> <C-W>k<C-W>_
:map <C-H> <C-W>h<C-W>_
:map <C-L> <C-W>l<C-W>_
:map <C-J> <C-W>j<C-W>_
"偶比较喜欢默认标志折叠,或者大V后zf. 配合命令z[rR]/z[mM]/za
"网上看到装映射空格来打开关闭的,但有时也会影响操作...nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
set foldmethod=marker "indent/expr/manual/default/diff/marker 一共六种
nmap z[ i/* {{{ */<ESC>hh " 如果想说点什么就 i 一下
nmap z] i/* }}} */<ESC>
"网上见过有人说有时候下面这某些对顺序会有要求,没太关注过,反正全部堆里面
filetype on
set autoindent
set smartindent
filetype plugin on
filetype indent on
filetype plugin indent on
"下面各种set
set clipboard+=unnamed"共享外部剪贴板
set incsearch
set ignorecasesmartcase
set hlsearch
set confirm "在处理未保存或只读文件的时候,弹出确认
set history=1024
set showcmd "显示未完成的命令
set ambiwidth=double "防止特殊符号无法正常显示 如一些宽字符可能只能显示一半
set selection=inclusive "光标所在位置也属于被选中的范围
set sessionoptions+=resize "保存窗口大小
set matchtime=3 "匹配括号高亮的时间(单位是十分之一秒)
set autoread "文件被其他程序修改时自动载入
set cmdheight=1 "设置命令行高度为2
set showmatch "高亮显示匹配的括号
set matchpairs=(:),{:},[:],<:>
set diffopt+=vertical "set diffopt=filler 因为默认为上下分,有点让人沸解
set cino=:0g0t0 "c/c++风格的缩进选项,忘了什么时候加的了,不知道有用不用
set textwidth=120 "多少列开始折行 set linebreak 这是自动折行
set laststatus=2 "总是显示状态行,下面是显示内容
set statusline=[%n]%<%f%y%h%m%r%=[%b\ 0x%B]\ %l\ of\ %L,%c%V\ Page\ %N\ %P
set statusline+=%{EchoFuncGetStatusLine()}
"用浅色高度当前行
set cursorline
hi CursorLine guibg=Lightgreen guifg=Black term=BOLD
"但并不是所有时候高亮当前行都有用.不同term不同底色不同配色加上当前浅色高亮有时会让眼睛很痛苦
autocmd InsertLeave * se nocul
autocmd InsertEnter * se cul
" <C-n>/<C-p>
"vim缺省的补全顺序是 ".,w,b,u,t,i",它意味着扫描:
"1. 当前文件缓冲区 .
"2. 其它窗口(缓冲区) window
"3. 其它载入的文件缓冲区(隐藏缓冲区) b ...
"4. 未载入的文件(非激活的缓冲区)
"5. 标签文件 table
"6. 文件#include文件,可能还包含path路径 include
set cpt=.,w,b "因为硬盘有时候很痛苦,得设好path路径.因为有各种插件,平时我只开这两个.
"关于vim中文乱码可以参考http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
"反正windows/cygwin/linux xterm/linux gvim我都用下面的,好像都能没乱码问题"encoding 为 vim 内部工作的编码
"set termencoding=utf-8
"如果termencoding 没有设置则直接使用encoding不需再进行转换 termencoding
"为在终端显示的编码方式, gui下忽略termencoding
" fileencoding
"为磁盘上文件的存储编码格式,vim打开磁盘文件时按fileencodings中的顺序依次尝试去探测
"如果与自己工作的encoding不同则会进行转码,对fileencoding的修改只会影响文件(磁盘)存储
"时的编码格式,当前屏幕出现乱码不能通过修改fileencoding来解决,只能修改encoding
"fileencodings全vim配选的字符集
set fileencodings=ucs-bom,utf-8,chinese,latin-1
if has("gui_running") && has("win32")"或者has("win64")
set encoding=utf-8
set fileencoding=chinese
set langmenu=zh_CN.utf-8
language messages zh_cn.utf-8"解决console输出乱码,当然先确保语言包没问题
else
set fileencoding=utf-8
endif
"解决中文菜单乱码, 如果摄氏没有下面插件,不要这两句就好了. 菜单的确用的机会比较少.
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"各种tab宽
set tabstop=4
set cindent shiftwidth=4
set autoindent shiftwidth=4
"网上收集了一些tab说明,觉得下面最简洁,有人问我,我会直接 ,r 一下然后复制一堆给他自己看.
":set shiftwidth=4 自动缩进 4 个空格
":set softtabstop=4 输入的 tab 看上去(显示)是几个空格宽度. :set list可以看具体怎么个情况.
":set tabstop=4 实际的 tab 即为 4 个空格
":set expandtab 在输入 tab 后, vim 用恰当的空格来填充这个 tab.
" 译释:autocmd指定一个自动命令,BufEnter指定一个事件,* 指定事件的对象,
" lcd %:p:h 指定一个动作
" 自动更改到当前文件所在的目录
autocmd BufEnter * lcd %:p:h
set autochdir"这句更简单
" 打开文件时,总是跳到退出之前的光标处, 也没注意过到底是不是这句在起作用
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
"窗口位置,例如
if has("gui_running")
:winpos 1000 0
:set lines=60
:set columns=120
endif
"高亮一下,免得一行写过长
:set colorcolumn=80,100,120
----------------------------------------------------------------------------------------------------------------------------
只是拿了一部分出来,其它一些 path 设置 function 可以根据自己实际情况和喜好去设置.