vimrc配置文件

来源:互联网 发布:湖北大学知行学院官网 编辑:程序博客网 时间:2024/06/05 05:37

    在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。

    在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:

    $vi ~/.vimrc

    设置完后

    $:x 或者 $wq进行保存退出即可。

    下面给出一个例子,其中列出了经常用到的设置:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 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 rememberset history=700" Enable filetype pluginsfiletype plugin onfiletype indent on" Set to auto read when a file is changed from the outsideset autoread" With a map leader it's possible to do extra key combinations" like <leader>w saves the current filelet mapleader = ","let g:mapleader = ","" Fast savingnmap <leader>w :w!<cr>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => VIM user interface"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Set 7 lines to the cursor - when moving vertically using j/kset so=7" Turn on the WiLd menuset wildmenu" Ignore compiled filesset wildignore=*.o,*~,*.pyc"Always show current positionset ruler" Height of the command barset cmdheight=2" A buffer becomes hidden when it is abandonedset hid" Configure backspace so it acts as it should actset backspace=eol,start,indentset whichwrap+=<,>,h,l" Ignore case when searchingset ignorecase" When searching try to be smart about cases set smartcase" Highlight search resultsset hlsearch" Makes search act like search in modern browsersset incsearch" Don't redraw while executing macros (good performance config)set lazyredraw" For regular expressions turn magic onset magic" Show matching brackets when text indicator is over themset showmatch" How many tenths of a second to blink when matching bracketsset mat=2" No annoying sound on errorsset noerrorbellsset novisualbellset t_vb=set tm=500set number"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Colors and Fonts"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Enable syntax highlightingsyntax enablecolorscheme desertset background=dark" Set extra options when running in GUI modeif has("gui_running")    set guioptions-=T    set guioptions+=e    set t_Co=256    set guitablabel=%M\ %tendif" Set utf8 as standard encoding and en_US as the standard languageset encoding=utf8" Use Unix as the standard file typeset ffs=unix,dos,mac"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Files, backups and undo"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Turn backup off, since most stuff is in SVN, git et.c anyway...set nobackupset nowbset noswapfile"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Text, tab and indent related"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Use spaces instead of tabsset expandtab" Be smart when using tabs ;)set smarttab" 1 tab == 4 spacesset shiftwidth=4set tabstop=4" Linebreak on 500 charactersset lbrset tw=500set ai "Auto indentset si "Smart indentset wrap "Wrap lines""""""""""""""""""""""""""""""" => Visual mode related""""""""""""""""""""""""""""""" Visual mode pressing * or # searches for the current selection" Super useful! From an idea by Michael Naumannvnoremap <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 gjmap k gk" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search)map <space> /map <c-space> ?" Disable highlight when <leader><cr> is pressedmap <silent> <leader><cr> :noh<cr>" Smart way to move between windowsmap <C-j> <C-W>jmap <C-k> <C-W>kmap <C-h> <C-W>hmap <C-l> <C-W>l" Close the current buffermap <leader>bd :Bclose<cr>" Close all the buffersmap <leader>ba :1,1000 bd!<cr>" Useful mappings for managing tabsmap <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 directorymap <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/" Switch CWD to the directory of the open buffermap <leader>cd :cd %:p:h<cr>:pwd<cr>" Specify the behavior when switching between buffers try  set switchbuf=useopen,usetab,newtab  set stal=2catchendtry" 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 closeset viminfo^=%""""""""""""""""""""""""""""""" => Status line""""""""""""""""""""""""""""""" Always show the status lineset laststatus=2" Format the status lineset statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Editing mappings"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Remap VIM 0 to first non-blank charactermap 0 ^" Move a line of text using ALT+[jk] or Comamnd+[jk] on macnmap <M-j> mz:m+<cr>`znmap <M-k> mz:m-2<cr>`zvmap <M-j> :m'>+<cr>`<my`>mzgv`yo`zvmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`zif 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"endfuncautocmd BufWrite *.py :call DeleteTrailingWS()autocmd BufWrite *.coffee :call DeleteTrailingWS()"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => vimgrep searching and cope displaying"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" When you press gv you vimgrep after the selected textvnoremap <silent> gv :call VisualSelection('gv')<CR>" Open vimgrep and put the cursor in the right positionmap <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>" Vimgreps in the current filemap <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 textvnoremap <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>pggmap <leader>n :cn<cr>map <leader>p :cp<cr>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Spell checking"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Pressing ,ss will toggle and untoggle spell checkingmap <leader>ss :setlocal spell!<cr>" Shortcuts using <leader>map <leader>sn ]smap <leader>sp [smap <leader>sa zgmap <leader>s? z="""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Misc"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Remove the Windows ^M - when the encodings gets messed upnoremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm" Quickly open a buffer for scripbblemap <leader>q :e ~/buffer<cr>" Toggle paste mode on and offmap <leader>pp :setlocal paste!<cr>"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" => Helper functions"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""function! CmdLine(str)    exe "menu Foo.Bar :" . a:str    emenu Foo.Bar    unmenu Fooendfunctionfunction! 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_regendfunction" Returns true if paste mode is enabledfunction! HasPaste()    if &paste        return 'PASTE MODE  '    en    return ''endfunction" Don't close window, when deleting a buffercommand! 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)   endifendfunction


0 0
原创粉丝点击