本文共 5795 字,大约阅读时间需要 19 分钟。
vimrc "set encoding=chinese "set langmenu=zh_CN.UTF-8" if version >= 603 set helplang=cn endif set langmenu=zh_CN.UTF-8 "set imcmdline "这一句导致字体大小、颜色设置失效 "set guifont=Monospace\ 12 set guifont=DejaVu\ Sans\ Mono\ 12 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "下一行为语法高亮,彩色的 syntax on "添加自动缩进 set tabstop=4 set shiftwidth=4 set softtabstop=4 set ai "开启自动缩进 "set expandtab "自动把tab转化为空格 "retab "将已存在的tab都转化为空格 set list "显示tab和行尾空格 set lcs=tab:+-,trail:- "显示tab为+---和行尾空格(只在输入时才显示) "折叠python代码 "set foldmethod=indent "let Tlist_Auto_Open=1 "auto open taglist自动打开taglist set autoindent "自动缩进? "添加python字典,实现自动补全(字典目录为~/.vim/pydiction,里面有字典和一个脚本),快捷键:ctrl+n(20080320 ~/.vim/tools/也可以) if has("autocmd") autocmd FileType python set complete+=k~/.vim/tools/pydiction endif "安F8智能补全 inoremap <F8> <C-x><C-o> map <F5>:!/usr/bin/python2.5 % set nobackup "不自动备份 set nu "开启行号 "搜索字高亮 set hlsearch "取消 Vim 对 HTML 标记自动产生的缩进,但打开自动缩进选项 au FileType html setlocal autoindent indentexpr= " multi-encoding setting if has("multi_byte") "set bomb set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1 " CJK environment detection and corresponding setting if v:lang =~ "^zh_CN" " Use cp936 to support GBK, euc-cn == gb2312 set encoding=cp936 set termencoding=cp936 set fileencoding=cp936 elseif v:lang =~ "^zh_TW" " cp950, big5 or euc-tw " Are they equal to each other? set encoding=big5 set termencoding=big5 set fileencoding=big5 elseif v:lang =~ "^ko" " Copied from someone's dotfile, untested set encoding=euc-kr set termencoding=euc-kr set fileencoding=euc-kr elseif v:lang =~ "^ja_JP" " Copied from someone's dotfile, untested set encoding=euc-jp set termencoding=euc-jp set fileencoding=euc-jp endif " Detect UTF-8 locale, and replace CJK setting if needed if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 endif else echoerr "Sorry, this version of (g)vim was not compiled with multi_byte" endif ************************************* // 1.tabstop (ts-数值型): 设定文件中制表位占的空格个数,默认是8 :set ts=4 (表示一个插入一个<Tab>占4个空格位) 2.expandtab (et-布尔型): 插入<Tab>时使用相应数量的空格,而不用制表位,默认关闭 :set ts=10 et (此时插入一个tab时,真正插入的是10个空格) 注: 当'et'打开,要插入实际的制表位,需用CTRL-V<Tab>,win下加载了mswin.vim插件的用CTRL-Q<Tab> 3.softtabstop (sts-数值型): 当插入一个<Tab>时,若'ts'值大于'sts',则此时就插入'sts'值那么多空格; 而当'ts'值小于'sts',则此时就插入几个制表位(制表位的个数是'sts'整除'ts'之商) 和几个空格(空格的个数是'sts'整除'ts'之余数),默认是0,表示关闭 :set ts=8 sts=6 (此时插入一个<Tab>,就会插入6个空格;若连续插入两个<Tab>,则会插入一个制表位和4个空格) 在此设置下这样输入: 一个<Tab>,3个空格,一个<Tab>,大家想想实际会输入什么? :set ts=3 sts=8 (此时插入一个<Tab>,就会插入2个制表位和2个空格) 4.retab (ret-ex下的命令,前面3个是选项): 把制表位和空格组成的连续序列替换成新的制表位或空格 格式是 :[range]ret[!] [ts值] (不是指定range,默认是全文;不指定'ts'值,就用原来的'ts'值) (1) 当'et'为关闭状态时,retab会尽量把由"制表位和空格组成的连续空白序列"替换成尽可能多的制表位,如: 有一个连续"空白序列"是由: 3个空格,两个制表位,5个空格组成,这时设置如下命令 :ret 6 (原来的"空白序列"变为由: 3个制表位,2个空格组成的新的"空白序列") (2) 当'et'为开启状态时,retab会把所有的制表位换成当前'ts (3) :ret! 命令则会把纯粹由空格组成的"空白序列"强制替换为尽可能多的制表位加空格 注:retab命令对文本的处理,不会引起视觉上的变化 5.smarttab (sta-布尔型): 它确定行首插入<Tab>时的情况,它跟选项'shiftwidth'(sw)相关联,默认关闭. :set sta (则若行首插入一个<Tab>,会根据'sw'的值来插入"空白序列",其余的地方还是插入一个制表位; 而这里的"空白序列"是由什么组成,是由'sw','ts'值的相对大小,以及是否开启了'et'决定的. 若'sw'小于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就直接插入'sw'值所代表的空格数; 若'sw'大于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就插入尽可能多的制表位加空格; 若'et'是开启的,若行首插入一个<Tab>就直接插入'sw'值所代表的空格数 注:选项'sw'只用于normal下的左右移动命令: > , >> , < , << ************************ 说 明 ********************************* * * (a) 文中的<Tab>表示动作:敲击键盘上的Tab制表键(位于Q键左边), * 而文中的"制表位"表示前面那个动作后的输入; * (b) 为了便于制表位和空格的区分,也就是让它们成为"可见"模式: * :set list * :set lcs=eol:&,tab<+ set list "显示tab和行尾空格 set lcs=tab:>-,trail:- "显示tab为---和行尾空格(只在输入时才显示) * 这样每行结尾有字符"&",制表位若是4,则为:<+++ , * 而若制表位是8,则为:<+++++++ * (c) <Backspace>在插入模式下可以删除整个'sts'和'sta'下的'sw' * 但象normal下"x"这样的命令就只能删除真正的制表位和空格 ========================================================================== 20090123 " 自动补全命令时候使用菜单式匹配列表 set wildmenu " 允许退格键删除 set backspace=2 " 启用鼠标 set mouse=a " 文件类型 filetype on filetype plugin on filetype indent on " 设置编码自动识别, 中文引号显示 "set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom set fileencodings=utf-8,gbk,ucs-bom set ambiwidth=double " 移动长行 nnoremap <Down> gj nnoremap <Up> gk " 让编辑模式可以中文输入法下按:转到命令模式 nnoremap : : " 高亮 syntax on " 设置高亮搜索 set hlsearch " 输入字符串就显示匹配点 set incsearch " 输入的命令显示出来,看的清楚些。 set showcmd " 打开当前目录文件列表 map <F3> :e .<CR> " Taglist let Tlist_File_Fold_Auto_Close=1 set updatetime=1000 map <F4> :Tlist<CR> " 按 F8 智能补全 inoremap <F8> <C-x><C-o> " vim 自动补全 Python 代码 " 来自http://vim.sourceforge.net/scripts/script.php?script_id=850 autocmd FileType python set complete+=k~/.vim/tools/pydiction autocmd FileType python set shiftwidth=4 tabstop=4 "expandtab "把tab转化为空格 set list set lcs=tab:+-,trail:- " 自动使用新文件模板 autocmd BufNewFile *.py 0r ~/.vim/template/simple.py autocmd FileType html set shiftwidth=4 tabstop=4 expandtab autocmd BufNewFile *.html 0r ~/.vim/template/simple.html "要在命令行上实现 Emacs 风格的编辑操作: > " 至行首 :cnoremap <C-A> <Home> " 后退一个字符 :cnoremap <C-B> <Left> " 删除光标所在的字符 :cnoremap <C-D> <Del> " 至行尾 :cnoremap <C-E> <End> " 前进一个字符 :cnoremap <C-F> <Right> " 取回较新的命令行 :cnoremap <C-N> <Down> " 取回以前 (较旧的) 命令行 :cnoremap <C-P> <Up> " 后退一个单词 :cnoremap <Esc><C-B> <S-Left> " 前进一个单词 :cnoremap <Esc><C-F> <S-Right> "Format the statusline "Nice statusbar set laststatus=2 set statusline= set statusline+=%2*%-3.3n%0*\ " buffer number set statusline+=%f\ " file name set statusline+=%h%1*%m%r%w%0* " flag set statusline+=[ if v:version >= 600 set statusline+=%{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{&encoding}, " encoding endif set statusline+=%{&fileformat}] " file format if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim")) set statusline+=\ %{VimBuddy()} " vim buddy endif set statusline+=%= " right align "set statusline+=%2*0x%-8B\ " current char set statusline+=0x%-8B\ " current char set statusline+=%-14.(%l,%c%V%)\ %<%P " offset
转载地址:http://edosi.baihongyu.com/