乱码问题
一般来说只需要正确设置vim的编码识别序列就很少会遇到乱码问题:
set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1
转自:http://socol.iteye.com/blog/579503
每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通过下面的设置就可以避免这种情况。
粘贴代码时取消自动缩进 VIM在粘贴代码时会自动缩进,把代码搞得一团糟糕,甚至可能因为某行的一个注释造成后面的代码全部被注释掉,我知道有同学这个时候会用vi去打开文件再粘贴上去(鄙人以前就是这样),其实需要先设置一下 set paste 然后再进入插入模式粘贴,代码就不会被自动缩进。可是敲代码的时候需要自动缩进,又得改回来: set nopaste 最方便的方法就是在.vimrc中加一句: set pastetoggle=<F9> 以后在插入模式下,只要按F9键就可以切换自动缩进。
中文乱码问题
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
.vimrc
" An example for a vimrc file. " " Maintainer: Bram Moolenaar <Bram@vim.org> " Last change: 2000 Jan 06 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc " for Amiga: s:.vimrc " for MS-DOS and Win32: $VIM\_vimrc " for VMS: sys$login:.vimrc
" Use Vim settings, rather then Vi settings (much better!). " This must be first, because it changes other options as a side effect. set nocompatible
"set fileencodings=gb2312,gb18030,utf-8 "set termencoding=utf-8 "set encoding=prc
set nu set bs=2 " allow backspacing over everything in insert mode set noai " always set autoindenting on "set backup " keep a backup file set viminfo='20,\"50 " read/write a .viminfo file, don't store more " than 50 lines of registers set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time "set nonu "set bdir=~/.vimbackup set term=linux set nowrap set bg=dark set tabstop=4 " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries " let &guioptions = substitute(&guioptions, "t", "", "g")
" Don't use Ex mode, use Q for formatting map Q gq
" Make p in Visual mode replace the selected text with the "" register. vnoremap p <Esc>:let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc>
" Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on set hlsearch endif
" 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
augroup cprog " Remove all cprog autocommands au!
" When starting to edit a file: " For C and C++ files set formatting of comments and set C-indenting on. " For other files switch it off. " Don't change the order, it's important that the line with * comes first. autocmd FileType * set formatoptions=tcql nocindent comments& autocmd FileType c,cpp set formatoptions=croql cindent comments=sr:/*,mb:*,el:*/,:// augroup END
augroup gzip " Remove all gzip autocommands au!
" Enable editing of gzipped files " set binary mode before reading the file autocmd BufReadPre,FileReadPre *.gz,*.bz2 set bin autocmd BufReadPost,FileReadPost *.gz call GZIP_read("gunzip") autocmd BufReadPost,FileReadPost *.bz2 call GZIP_read("bunzip2") autocmd BufWritePost,FileWritePost *.gz call GZIP_write("gzip") autocmd BufWritePost,FileWritePost *.bz2 call GZIP_write("bzip2") autocmd FileAppendPre *.gz call GZIP_appre("gunzip") autocmd FileAppendPre *.bz2 call GZIP_appre("bunzip2") autocmd FileAppendPost *.gz call GZIP_write("gzip") autocmd FileAppendPost *.bz2 call GZIP_write("bzip2")
" After reading compressed file: Uncompress text in buffer with "cmd" fun! GZIP_read(cmd) " set 'cmdheight' to two, to avoid the hit-return prompt let ch_save = &ch set ch=3 " when filtering the whole buffer, it will become empty let empty = line("'[") == 1 && line("']") == line("$") let tmp = tempname() let tmpe = tmp . "." . expand("<afile>:e") " write the just read lines to a temp file "'[,']w tmp.gz" execute "'[,']w " . tmpe " uncompress the temp file "!gunzip tmp.gz" execute "!" . a:cmd . " " . tmpe " delete the compressed lines '[,']d " read in the uncompressed lines "'[-1r tmp" set nobin execute "'[-1r " . tmp " if buffer became empty, delete trailing blank line if empty normal Gdd'' endif " delete the temp file call delete(tmp) let &ch = ch_save " When uncompressed the whole buffer, do autocommands if empty execute ":doautocmd BufReadPost " . expand("%:r") endif endfun
" After writing compressed file: Compress written file with "cmd" fun! GZIP_write(cmd) if rename(expand("<afile>"), expand("<afile>:r")) == 0 execute "!" . a:cmd . " <afile>:r" endif endfun
" Before appending to compressed file: Uncompress file with "cmd" fun! GZIP_appre(cmd) execute "!" . a:cmd . " <afile>" call rename(expand("<afile>:r"), expand("<afile>")) endfun
augroup END
" This is disabled, because it changes the jumplist. Can't use CTRL-O to go " back to positions in previous files more than once. if 0 " When editing a file, always jump to the last cursor position. " This must be after the uncompress commands. autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif endif
endif " has("autocmd") set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
|