search

Home  >  Q&A  >  body text

Which options in the Vim editor configuration file are necessary?

Although Vim is very smooth to operate, for a Chinese developer, Vim's default configuration often appears garbled.
The second is the issue of indentation, how to make the code layout format seen by different system platforms have the same style.
When participating in open source projects, there are many common coding standards that are worth setting as default.

伊谢尔伦伊谢尔伦2773 days ago877

reply all(4)I'll reply

  • 淡淡烟草味

    淡淡烟草味2017-05-16 16:45:13

    I usually set tabs to 4 spaces, and then use the Unix standard form of <LF> for line breaks. As for the garbled code problem, I used this code to solve it

    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

    reply
    0
  • ringa_lee

    ringa_lee2017-05-16 16:45:13

    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

    reply
    0
  • 漂亮男人

    漂亮男人2017-05-16 16:45:13

    The Chinese garbled problem can be solved by setting the current encoding method (enc) and file encoding (fenc)

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

    The problem with indentation lies in everyone’s tab display settings...
    The most reliable way is probably to set it to spaces instead of tabs

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

    This will slightly increase the file size. Then use shift+backspace when deleting the indent. Pressing the bs key alone can only delete one space~

    reply
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:45:13

    @yanyaoer’s encoding settings are already very applicable, just add some tabs and spaces

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

    ts/sw/... is the abbreviation

    Post another configuration, 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

    reply
    0
  • Cancelreply