"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Maintainer: " Amir Salihefendic " http://amix.dk - amix @amix .dk " " Version: " 5.0 - 29/05/12 15:43:36 " " Blog_post: " http://amix.dk/blog/post/19691 #The-ultimate-Vim-configuration-on-Github " " Awesome_version: " Get this config, nice color schemes and lots of plugins! " " Install the awesome version from: " " https://github.com/amix/vimrc " " Syntax_highlighted: " http://amix.dk/vim/vimrc.html " " Raw_version: " http://amix.dk/vim/vimrc.txt " " Sections: " -> General " -> VIM user interface " -> Colors and Fonts " -> Files and backups " -> Text, tab and indent related " -> Visual mode related " -> Moving around , tabs and buffers " -> Status line " -> Editing mappings " -> vimgrep searching and cope displaying " -> Spell checking " -> Misc " -> Helper functions " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => General "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Sets how many lines of history VIM has to remember set history=700 " Enable filetype plugins 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> "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => VIM user interface "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Set 7 lines to the cursor - when moving vertically using j/k set so=7 " Turn on the WiLd menu set wildmenu " Ignore compiled files set wildignore=*.o,*~,*.pyc "Always show current position set ruler " Height of the command bar set cmdheight=2 " A buffer becomes hidden when it is abandoned set hid " Configure backspace so it acts as it should act set backspace=eol,start,indent set whichwrap+=<,>,h,l " Ignore case when searching set ignorecase " When searching try to be smart about cases set smartcase " Highlight search results set hlsearch " Makes search act like search in modern browsers set incsearch " Don't redraw while executing macros (good performance config) set lazyredraw " For regular expressions turn magic on set magic " Show matching brackets when text indicator is over them set showmatch " How many tenths of a second to blink when matching brackets set mat=2 " No annoying sound on errors set noerrorbells set novisualbell set t_vb= set tm=500 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Colors and Fonts "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Enable syntax highlighting syntax enable colorscheme desert set background=dark " Set extra options when running in GUI mode if has ( "gui_running" ) set guioptions-=T set guioptions+=e set t_Co=256 set guitablabel= %M \ %t endif " Set utf8 as standard encoding and en_US as the standard language set encoding=utf8 " Use Unix as the standard file type set ffs=unix,dos,mac "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Files, backups and undo "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Turn backup off, since most stuff is in SVN, git et.c anyway... set nobackup set nowb set noswapfile "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Text, tab and indent related "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Use spaces instead of tabs set expandtab " Be smart when using tabs ;) set smarttab " 1 tab == 4 spaces set shiftwidth=4 set tabstop=4 " Linebreak on 500 characters set lbr set tw=500 set ai "Auto indent set si "Smart indent set wrap "Wrap lines "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " => Visual mode related "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " Visual mode pressing * or # searches for the current selection " Super useful! From an idea by Michael Naumann vnoremap <silent> * :call VisualSelection( 'f' )<CR> vnoremap <silent> # :call VisualSelection('b')<CR> "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Moving around , tabs, windows and buffers "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Treat long lines as break lines (useful when moving around in them) map j gj map k gk " Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search) map <space> / map <c-space> ? " Disable highlight when <leader><cr> is pressed map <silent> <leader><cr> :noh<cr> " Smart way to move between 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,1000 bd!<cr> " Useful mappings for managing tabs map <leader>tn :tabnew<cr> map <leader>to :tabonly<cr> map <leader>tc :tabclose<cr> map <leader>tm :tabmove " Opens a new tab with the current buffer's path " Super useful when editing files in the same directory map <leader>te :tabedit <c-r>=expand( "%:p:h" )<cr>/ " Switch CWD to the directory of the open buffer map <leader>cd :cd %:p:h<cr>:pwd<cr> " Specify the behavior when switching between buffers try set switchbuf=useopen,usetab,newtab set stal=2 catch endtry " Return to last edit position when opening files (You want this!) autocmd BufReadPost * \ if line( "'\"" ) > 0 && line( "'\"" ) <= line( "$" ) | \ exe "normal! g`\"" | \ endif " Remember info about open buffers on close set viminfo^=% "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " => Status line "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " Always show the status line set laststatus=2 " Format the status line set statusline=\ %{HasPaste()} %F %m %r %h \ %w \ \ CWD:\ %r %{getcwd()} %h \ \ \ Line:\ %l "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Editing mappings "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Remap VIM 0 to first non-blank character 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 has ( "mac" ) || has ( "macunix" ) 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 on save, useful for Python and CoffeeScript ;) func! DeleteTrailingWS() exe "normal mz" %s /\s\+$//ge exe "normal `z" endfunc autocmd BufWrite *.py :call DeleteTrailingWS() autocmd BufWrite *.coffee :call DeleteTrailingWS() "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => vimgrep searching and cope displaying "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " When you press gv you vimgrep after the selected text vnoremap <silent> gv :call VisualSelection( 'gv' )<CR> " Open vimgrep and put the cursor in the right position map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left> " Vimgreps in the current file map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right> " When you press <leader>r you can search and replace the selected text vnoremap <silent> <leader>r :call VisualSelection( 'replace' )<CR> " Do :help cope if you are unsure what cope is. It's super useful! " " When you search with vimgrep, display your results in cope by doing: " <leader>cc " " To go to the next search result do : " <leader>n " " To go to the previous search results do : " <leader>p " map <leader>cc :botright cope<cr> map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg map <leader>n :cn<cr> map <leader>p :cp<cr> "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Spell checking "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Pressing ,ss will toggle and untoggle spell checking map <leader>ss :setlocal spell!<cr> " Shortcuts using <leader> map <leader>sn ]s map <leader>sp [s map <leader>sa zg map <leader>s? z= "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Misc "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " Remove the Windows ^M - when the encodings gets messed up noremap <Leader>m mmHmt: %s /<C-V><cr>//ge<cr> 'tzt' m " Quickly open a buffer for scripbble map <leader> q :e ~/buffer<cr> " Toggle paste mode on and off map <leader>pp :setlocal paste!<cr> "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " " => Helper functions "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " function! CmdLine(str) exe "menu Foo.Bar :" . a:str emenu Foo.Bar unmenu Foo endfunction function! VisualSelection(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", '\\/.*$^~[]' ) let l:pattern = substitute(l:pattern, "\n$" , "" , "" ) if a:direction == 'b' execute "normal ?" . l:pattern . "^M" elseif a:direction == 'gv' call CmdLine( "vimgrep " . '/' . l:pattern . '/' . ' **/*.' ) elseif a:direction == 'replace' call CmdLine( "%s" . '/' . l:pattern . '/' ) elseif a:direction == 'f' execute "normal /" . l:pattern . "^M" endif let @/ = l:pattern let @" = l:saved_reg endfunction " Returns true if paste mode is enabled function! HasPaste() if &paste return 'PASTE MODE ' en return '' endfunction " Don't close window, when deleting a buffer 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 |
上述配置文件来自:http://amix.dk/vim/vimrc.html
该配置文件已经很好用了,智能缩进 /与光标移动相似的窗口切换等等,更多的可以自己看看注释
不过就个人习惯,建议在加上以下内容:
“默认显示行号 set nu "文件编码/终端编码均设置默认为utf-8,编码中文乱码问题 set fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc- kr,latin1 set termencoding=utf-8 " 设置将工作目录自动切换到当前打开文件目录下 set autochdir |
同时,还可以自己定义热键进行自定义功能,下面分别是将F2映射为添加文件说明与测试的main函数,将F3映射为添加函数头
" 将F2映射为自动添加文件头与测试main函数 map <F2> :call SetTitle()<CR>Gkkk func SetTitle() let l = 0 let l = l + 1 | call setline(l, '/*' ) let l = l + 1 | call setline(l, ' * Author: ...(...@....com' ) let l = l + 1 | call setline(l, ' * Created Time: ' .strftime( '%c' )) let l = l + 1 | call setline(l, ' * File Name: ' .expand( '%' )) let l = l + 1 | call setline(l, ' */' ) let l = l + 1 | call setline(l, '#include <iostream>' ) let l = l + 1 | call setline(l, '#include <cstdio>' ) let l = l + 1 | call setline(l, '#include <cstdlib>' ) let l = l + 1 | call setline(l, '#include <cstring>' ) let l = l + 1 | call setline(l, '#include <cmath>' ) let l = l + 1 | call setline(l, '#include <algorithm>' ) let l = l + 1 | call setline(l, '#include <string>' ) let l = l + 1 | call setline(l, '#include <vector>' ) let l = l + 1 | call setline(l, '#include <stack>' ) let l = l + 1 | call setline(l, '#include <queue>' ) let l = l + 1 | call setline(l, '#include <set>' ) let l = l + 1 | call setline(l, '#include <time.h>' ) let l = l + 1 | call setline(l, 'using namespace std;' ) let l = l + 1 | call setline(l, '' ) let l = l + 1 | call setline(l, '#ifdef ' .expand( '%' ).expand( '_UT' )) let l = l + 1 | call setline(l, 'int main(int argc, char* argv[])' ) let l = l + 1 | call setline(l, '{' ) let l = l + 1 | call setline(l, ' return 0;' ) let l = l + 1 | call setline(l, '}' ) let l = l + 1 | call setline(l, '#endif' ) let l = l + 1 | call setline(l, '' ) echo l endfun " 将F3映射为自动添加文件头 map <F3> :call AddFuncHeader()<CR>jj $a func AddFuncHeader() let l = line( '.' ) | call append(l, '/*' ) let l = l + 1 | call append(l, ' *' ) let l = l + 1 | call append(l, ' * params:' ) let l = l + 1 | call append(l, ' * return:' ) let l = l + 1 | call append(l, ' * Author: ...(...@....com' ) let l = l + 1 | call append(l, ' * Created Time: ' .strftime( '%c' )) let l = l + 1 | call append(l, ' */' ) echo l endfun |
以上基本就是我自用的.vimrc配置文件了
posted @ 2013-01-15 17:58
黎强
阅读(357)
评论(0)
推荐(0)