用 gVim 好几年时间了,一直在改动其配置文件 _vimrc.现贴贴最新自用的 _vimrc.它是由称为史上最强的 _vimrc 文件(由 amix 编写修护)修改而来.解决了在 Windows 下设置 enc=utf8 后 gVim 菜单乱码的问题.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 编码设置,同时解决 Windows 下,当设置enc=utf8时,gvim菜单乱码问题 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set encoding=utf-8 set langmenu=zh_CN.UTF-8 language message zh_CN.UTF-8 set fenc=utf8 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 let $LANG = 'zh_CN.UTF-8' source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim set nobomb """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " MS-Windows 操作方式的剪贴板 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" source $VIMRUNTIME/mswin.vim """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => General """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! MySys() return "windows" endfunction " set nocompatible " Sets how many lines of history VIM has to remember set history=100 " Enable filetype plugin filetype plugin on filetype indent on " Set to auto read when a file is changed from the outside set autoread " With a map leader it's possible to do extra key combinations " like <leader>w saves the current file let mapleader = "," let g:mapleader = "," " Fast saving nmap <leader>w :w!<cr> " Fast editing of the .vimrc map <leader>e :e! D:\Program\ Files\Vim\_vimrc<cr> " When vimrc is edited, reload it autocmd! bufwritepost _vimrc source D:\Program\ Files\Vim\_vimrc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => VIM user interface """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Set 3 lines to the curors - when moving vertical.. set so=3 set wildmenu "Turn on WiLd menu set ruler "Always show current position set cmdheight=2 "The commandbar height set hid "Change buffer - without saving " Set backspace config set backspace=eol,start,indent set whichwrap+=<,>,h,l " Set serching set ignorecase "Ignore case when searching set smartcase set hlsearch "Highlight search things set incsearch "Make search act like search in modern browsers set magic "Set magic on, for regular expressions set showmatch "???Show matching bracets when text indicator is over them set mat=2 "How many tenths of a second to blink set nolazyredraw "???Don't redraw while executing macros " No sound on errors set noerrorbells set novisualbell set t_vb= set tm=500 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Colors and Fonts """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" syntax enable "Enable syntax hl " Set font according to system if MySys() == "mac" set gfn=Menlo:h14 set shell=/bin/bash elseif MySys() == "windows" set gfn=Bitstream\ Vera\ Sans\ Mono:h12 elseif MySys() == "linux" set gfn=Monospace\ 10 set shell=/bin/bash endif if has("gui_running") "set guioptions-=T set t_Co=256 set background=dark colorscheme darkdevel set nu else colorscheme darkdevel set background=dark set nonu endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Files, backups and undo """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Turn backup off, since most stuff is in SVN, git anyway... set nobackup set nowb set noswapfile "Persistent undo try if MySys() == "windows" set undodir=g:\\Temp else set undodir=~/.vim_runtime/undodir endif set undofile catch endtry """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Text, tab and indent related """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set expandtab set shiftwidth=4 set tabstop=4 set smarttab " " 智能换行(不在单词中间断行。 设置了这个选项后, 如果一行文字非常长, 无法在一行内显示完的话, 它会在单词与单词间的空白处断开, 尽量不会把一个单词分成两截放在两个不同的行里) set lbr set tw=500 set ai "Auto indent set si "Smart indet set wrap "Wrap lines """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Moving around, tabs and buffers """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Map space to / (search) and c-space to ? (backgwards search) map <space> / map <c-space> ? map <silent> <leader><cr> :noh<cr> " Smart way to move btw. windows map <C-j> <C-W>j map <C-k> <C-W>k map <C-h> <C-W>h map <C-l> <C-W>l " Close the current buffer map <leader>bd :Bclose<cr> " Close all the buffers map <leader>ba :1,300 bd!<cr> " Use the arrows to something usefull map <right> :bn<cr> map <left> :bp<cr> " Tab configuration map <leader>tn :tabnew<cr> map <leader>te :tabedit map <leader>tc :tabclose<cr> map <leader>tm :tabmove " When pressing <leader>cd switch to the directory of the open buffer map <leader>cd :cd %:p:h<cr> command! Bclose call <SID>BufcloseCloseIt() function! <SID>BufcloseCloseIt() let l:currentBufNum = bufnr("%") let l:alternateBufNum = bufnr("#") if buflisted(l:alternateBufNum) buffer # else bnext endif if bufnr("%") == l:currentBufNum new endif if buflisted(l:currentBufNum) execute("bdelete! ".l:currentBufNum) endif endfunction " Specify the behavior when switching between buffers try set switchbuf=usetab set stal=2 catch endtry """""""""""""""""""""""""""""" " => Statusline """""""""""""""""""""""""""""" " Always hide the statusline set laststatus=2 " Format the statusline set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c function! CurDir() let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g") return curdir endfunction function! HasPaste() if &paste return 'PASTE MODE ' else return '' endif endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Parenthesis/bracket expanding """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" vnoremap $1 <esc>`>a)<esc>`<i(<esc> vnoremap $2 <esc>`>a]<esc>`<i[<esc> vnoremap $3 <esc>`>a}<esc>`<i{<esc> vnoremap $$ <esc>`>a"<esc>`<i"<esc> vnoremap $q <esc>`>a'<esc>`<i'<esc> vnoremap $e <esc>`>a"<esc>`<i"<esc> " Map auto complete of (, ", ', [ inoremap $1 ()<esc>i inoremap $2 []<esc>i inoremap $3 {}<esc>i inoremap $4 {<esc>o}<esc>O inoremap $q ''<esc>i inoremap $e ""<esc>i inoremap $t <><esc>i """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => General Abbrevs """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Editing mappings """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Remap VIM 0 map 0 ^ "Move a line of text using ALT+[jk] or Comamnd+[jk] on mac nmap <M-j> mz:m+<cr>`z nmap <M-k> mz:m-2<cr>`z vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z if MySys() == "mac" nmap <D-j> <M-j> nmap <D-k> <M-k> vmap <D-j> <M-j> vmap <D-k> <M-k> endif "Delete trailing white space, useful for Python ;) func! DeleteTrailingWS() exe "normal mz" %s/\s\+$//ge exe "normal `z" endfunc autocmd BufWrite *.py :call DeleteTrailingWS() set guitablabel=%t """""""""""""""""""""""""""""" " => Python section """""""""""""""""""""""""""""" let python_highlight_all = 1 au FileType python syn keyword pythonDecorator True None False self au BufNewFile,BufRead *.jinja set syntax=htmljinja au BufNewFile,BufRead *.mako set ft=mako au FileType python inoremap <buffer> $r return au FileType python inoremap <buffer> $i import au FileType python inoremap <buffer> $p print au FileType python inoremap <buffer> $f #--- PH ----------------------------------------------<esc>FP2xi au FileType python map <buffer> <leader>1 /class au FileType python map <buffer> <leader>2 /def au FileType python map <buffer> <leader>C ?class au FileType python map <buffer> <leader>D ?def """""""""""""""""""""""""""""" " => JavaScript section """"""""""""""""""""""""""""""" "au FileType javascript call JavaScriptFold() au FileType javascript setl fen au FileType javascript setl nocindent au FileType javascript imap <c-t> AJS.log();<esc>hi au FileType javascript imap <c-a> alert();<esc>hi au FileType javascript inoremap <buffer> $r return au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xi function! JavaScriptFold() setl foldmethod=syntax setl foldlevelstart=1 syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend function! FoldText() return substitute(getline(v:foldstart), '{.*', '{...}', '') endfunction setl foldtext=FoldText() endfunction """""""""""""""""""""""""""""" " => Vim grep """""""""""""""""""""""""""""" let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated' set grepprg=/bin/grep\ -nH """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => MISC """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Remove the Windows ^M - when the encodings gets messed up noremap <Leader>m mmHmt:%s/<C-M><cr>//ge<cr>'tzt'm "Quickly open a buffer for scripbble map <leader>q :e ~/buffer<cr> au BufRead,BufNewFile ~/buffer iab <buffer> xh1 =========================================== map <leader>pp :setlocal paste!<cr> map <leader>bb :cd ..<cr> au BufWinLeave ?* mkview au BufWinEnter ?* silent loadview set winaltkeys=no map <A-n> :tabnew<CR> map <A-.> :tabn<CR> map <A-,> :tabp<CR> map <A-c> :close<CR> map <F2> <Esc><Esc> :NERDTree map <F3> <Esc><Esc> :NERDTreeClose<CR> map <F4> :TlistToggle<CR> " F9 自动删除行末的空格 map <F9> :%s/\s\+//<CR>
Vim: EnhancedCommentify,一个好用的注释插件
Posted by Ross Wan 于 2009/03/07
如果不习惯于“老老实实”地一行一行添加注释符的话,可以试下 EnhancedCommentify 这个 Vim 的插件。它对支持目前大多数文件格式的注释,如 PHP、Python、Java、C/C++ 等等。
下载地址
执行 :call EnhancedCommentify(‘yes’,’comment’) 即对当前行进行注释;反之,执行 :call EnhancedCommentify(‘yes’,’decomment’) 则对当前行进行反注释。
为了使用方便,可以对上面的命令进行键盘映射:
具体的使用方法,可以查看插件里面的 doc。
Have fun :)
Posted in gVim | Tagged: comment, EnhancedCommentify, usage, vim | Leave a Comment »