Vim 编辑器配置文件哪些选项是必备的

Vim 虽然操作起来很畅快,对于一个中文开发人员来说,Vim 的默认配置常常出现乱码。
其次是缩进问题,如何让不同系统平台看到的代码排版格式都一样式。
在参与开源项目时,有许多通用的代码规范,值得设为默认。

阅读 8.2k
4 个回答

我一般把tab设为4个空格,然后换行用unix标准形式的<LF>。至于乱码问题,我用这段代码解决

if has("multi_byte")
    set encoding=utf-8
    " English messages only
    "language messages zh_CN.utf-8

    if has('win32')
        language english
        let &termencoding=&encoding
    endif

    set fencs=utf-8,gbk,chinese,latin1
    set formatoptions+=mM
    set nobomb " 不使用 Unicode 签名

    if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
        set ambiwidth=double
    endif
else
    echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
syntax on
set tabstop=4
set shiftwidth=4
set expandtab
set fencs=utf-8,gbk
set fileencoding=utf-8
set number
nnoremap <buffer> <F5> :w<CR>:!/usr/bin/env python % <CR>
nnoremap <F2> :set nonumber!<CR>:set foldcolumn=0<CR>
nnoremap <F3> :set noautoindent!<CR>:set nosmartindent!<CR>
set autoindent
set smartindent
set vb t_vb=
set fileencodings=utf-8,gb18030,utf-16,big5
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd FileType python set omnifunc=pythoncomplete#Complete
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 php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(
set guifont=Monaco

中文乱码问题设置下当前编码方式(enc)和文件编码(fenc)就好了

set encoding=utf-8 "如果是 gbk 的时候用 cp936
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

缩进的问题在于各人对 tab 的显示设置吧...
最靠谱的方式大概是设置成空格而不要用制表符了

set expandtab
set softtabstop=4 "建议在 python 的 template 里改为2

这样会略微增加一些文件体积, 然后删除缩进时要用 shift+backspace, 单按 bs 键只能删一个空格的唷亲~

@yanyaoer 的编码设置已经很适用了,补充一点 tab 和空格

set tabstop=4      "ts     每个 tab 显示出 4个空格的宽度
set shiftwidth=4   "sw     每次缩进的空格数
set expandtab      "et     每个 tab 自动扩展成空格
set softtabstop=4  "sts    每次按 backspace 退格 4个空格

ts/sw/... 是缩写

再贴一段配置,just make things better

set scrolloff=3
set showmode
set showcmd
set hidden
set wildmenu
set wildmode=list:longest
set cursorline
set ttyfast
set ruler
set backspace=indent,eol,start
set laststatus=2
set nu
"set relativenumber  "vim7.3适用
set undofile
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进