2008-11-14 50 views
2

在VIM中使用項目瀏覽器的任何技巧? 如何從項目中的所有文件進行搜索?我試過\ g \ G但他們不工作。Project Explorer,Mini buf expl在VIM中使用

如何打開關閉項目瀏覽器窗口?

我使用Project Explorer和標記列表,當我打開這兩個再就是左側兩個窗口,這使得非常混亂。是有可能當打開標記列表,在右邊在Visual Studio中進行。

我也使用迷你buf瀏覽器?我知道bufferes可以用:bd關閉,但是如何關閉迷你緩衝區?

如果你們對C++的工作,請發表您的vimrc ..

我是新來VIM和學習階段。你的技巧可能有所幫助...

回答

4

我定期編寫C++與vimctags。這裏是我的dot.vimrc:

set backspace=indent,eol,start 
set completeopt=preview,menu 
set nocompatible    
set nofoldenable 
set novisualbell     
set expandtab 
set foldlevel=0 
set autowrite 
set hlsearch 
set showcmd 
set showmode 
set wildmenu 
set pastetoggle=<F12> 
set history=500 
set mouse=a 
set ruler 
set cino=l1g0t0p0i0+0:0(0{0 
"set ignorecase 
set incsearch 
set magic 
set t_Co=256 

" omnicppcomplete 
" 
let OmniCpp_GlobalScopeSearch = 1 
let OmniCpp_NamespaceSearch  = 2 
let OmniCpp_DisplayMode   = 1 
let OmniCpp_ShowScopeInAbbr  = 0 
let OmniCpp_ShowPrototypeInAbbr = 1 
let OmniCpp_ShowAccess   = 1 
let OmniCpp_MayCompleteDot  = 1 
let OmniCpp_MayCompleteArrow = 1 
let OmniCpp_MayCompleteScope = 0 
let OmniCpp_SelectFirstItem  = 0 
let OmniCpp_LocalSearchDecl  = 0 
let OmniCpp_DefaultNamespaces = ['std', '_GLIBCXX_STD', 'tr1', '__gnu_cxx', 'generic', 'more'] 

" other features 
" 
if v:version >= 600 
     filetype plugin on 
     filetype indent on 
else 
     filetype on 
endif 

if has("syntax") 
     syntax on 
endif 

" automatic commands 
" 
if has("autocmd") 
     autocmd BufEnter * set cindent comments="" 
     autocmd FileType make set noexpandtab shiftwidth=8 
     autocmd FileType c map <buffer> <leader><space> :w<cr>:!gcc %<cr> -I . -Wall 
     autocmd FileType c call UserSpaceMode() | set shiftwidth=4 ts=4 iskeyword=a-z,A-Z,48-57,_ 
     autocmd FileType cpp call UserSpaceMode() | set shiftwidth=4 ts=4 iskeyword=a-z,A-Z,48-57,_,: 
     autocmd FileType cpp map <buffer> <leader><space> :w<cr>:!g++ %<cr> -I . -Wall 
     autocmd FileType cpp map <C-]> :exe "tj /.*" . expand("<cword>") . "$" <cr> 
endif 

" tab code completition with SuperTab 
" 
if version >= 700 
     let g:SuperTabDefaultCompletionType = "<C-X><C-P>" 
     highlight clear 
     highlight Pmenu   ctermfg=0 ctermbg=2 gui=NONE 
     highlight PmenuSel  ctermfg=0 ctermbg=7 gui=NONE 
     highlight PmenuSbar  ctermfg=7 ctermbg=0 gui=NONE 
     highlight PmenuThumb ctermfg=0 ctermbg=7 gui=NONE 

     if has("gui_running") 
       colorscheme inkpot 
     else 
       colorscheme default 
     endif 

endif 


" ctags options 
" 
let my_err_counter = 0 
let my_space_counter = 1 
let my_extra_path  = [ '/usr/include/c++/4.3/' ] 
let my_ctags_options = [ '--languages=C,C++', '--c++-kinds=+p', 
         \'--fields=+iaS', '--extra=+q', '-I __THROW,__NTH,__wur,__warnattr, 
         \__nonnull,__attribute_malloc__,__attribute_pure__,__attribute_used__, 
         \__attribute_noinline__,__attribute_deprecated__,__attribute_format_arg__, 
         \__attribute_format_strfmon__,__attribute_warn_unused_result__,__always_inline, 
         \__extern_inline,__extension__,__restrict' ] 

" ctags functions 
" 
function! UpdateExtraTags() 
     execute ":!ctags " . join(g:my_ctags_options,' ') . " -V -R -f ~/.vim/extratags " . join(g:my_extra_path, ' ')  
     echohl StatusLine | echo "Extra tags updated" | echohl None 
endfunction 

function! UpdateTags() 
     execute ":!ctags -V -R " . join(g:my_ctags_options, ' ') 
     echohl StatusLine | echo "C/C++ tag updated" | echohl None 
endfunction 

" user/kernel-space tags switcher 
" 
function! UserSpaceMode() 
     set tags=tags,~/.vim/extratags 
endfunction 
function! KernelSpaceMode() 
     set tags=tags,/usr/src/linux/tags 
endfunction 

function! SwitchSpaceMode() 
    let g:my_space_counter+=1 
    if (g:my_space_counter%2) 
      call UserSpaceMode() 
      echohl StatusLine | echo "userspace-tags mode" | echohl None 
    else 
      call KernelSpaceMode() 
      echohl StatusLine | echo "kernelspace-tags mode" | echohl None 
    endif 
endfunction 

function! SwitchErrMode() 
    let g:my_err_counter+=1 
    if (g:my_err_counter%2) 
      copen 
    else 
      cclose 
    endif 
endfunction 

" diff the current buffer with its unmodified version in the filesystem 
" 
function! s:DiffWithSaved() 
    let filetype=&ft 
    diffthis 
    vnew | r # | normal! 1Gdd 
    diffthis 
    exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype 
endfunction 
com! DiffSaved call s:DiffWithSaved() 

" insert c/c++ gates 
" 
function! s:insert_gates() 
    let gatename = "_" . substitute(toupper(expand("%:t")), "[\\.-]", "_", "g") . "_" 
    execute "normal! ggI#ifndef " . gatename 
    execute "normal! o#define " . gatename . " " 
    execute "normal! Go#endif /* " . gatename . " */" 
    normal! kk 
endfunction 

" insert namepsace c++ 
" 
function! s:insert_namespace() 
    call inputsave() 
    let ns = inputdialog("namespace? ") 
    call inputrestore() 
    execute "normal! Anamespace " . ns . " { " 
    execute "normal! o} // namespace " . ns 
    normal! kk 
endfunction 

" insert c++ class 
" 
function! s:insert_class() 
    call inputsave() 
    let classname = inputdialog("ClassName? ") 
    call inputrestore() 
    execute "normal! iclass " . classname 
    execute "normal! o{ " 
    execute "normal! opublic:" 
    execute "normal! o" . classname . "()" 
    execute "normal! o{}" 
    execute "normal! o" 
    execute "normal! o~" . classname . "()" 
    execute "normal! o{}" 
    execute "normal! o" 
    execute "normal! oprivate:" 
    execute "normal! o" 
    execute "normal! o// non-copyable idiom" 
    execute "normal! o" . classname . "(const " . classname "&);" 
    execute "normal! o" . classname . " & operator=(const " . classname "&);" 
    execute "normal! o" 
    execute "normal! o};" 
endfunction 

" insert c++ value class 
" 
function! s:insert_value_class() 
    call inputsave() 
    let classname = inputdialog("ValueClassName? ") 
    call inputrestore() 
    execute "normal! iclass " . classname 
    execute "normal! o{ " 
    execute "normal! opublic:" 
    execute "normal! o" . classname . "()" 
    execute "normal! o{ /* implementation */ }" 
    execute "normal! o" 
    execute "normal! o~" . classname . "()" 
    execute "normal! o{ /* implementation */ }" 
    execute "normal! o" 
    execute "normal! o" . classname . "(const " . classname "&)" 
    execute "normal! o{ /* implementation */ }" 
    execute "normal! o" 
    execute "normal! o" . classname . " & operator=(const " . classname "& value)" 
    execute "normal! o{ /* implementation: " . classname . " tmp(value); swap(value); */" 
    execute "normal! oreturn *this;" 
    execute "normal! o}" 
    execute "normal! o" 
    execute "normal! o" . classname . " & [email protected]=(const " . classname . " &)" 
    execute "normal! o{ /* implementation */" 
    execute "normal! oreturn *this;" 
    execute "normal! o}" 
    execute "normal! o" 
    execute "normal! ofriend const " . classname . " [email protected](" . classname . " lhs, const " . classname . " &rhs)" 
    execute "normal! o{ return [email protected]=rhs; }" 
    execute "normal! o" 
    execute "normal! o" . classname . " & operator++()" 
    execute "normal! o{ /* implementation*/" 
    execute "normal! oreturn *this;" 
    execute "normal! o}" 
    execute "normal! o" 
    execute "normal! o" . classname . " & operator++(int)" 
    execute "normal! o{" 
    execute "normal! o" . classname . " tmp(*this);" 
    execute "normal! o++(*this);" 
    execute "normal! oreturn tmp;" 
    execute "normal! o}" 
    execute "normal! o" 
    execute "normal! oprivate:" 
    execute "normal! o" 
    execute "normal! o};" 
endfunction 

"autocmd BufNewFile *.{h,hpp} call <SID>insert_gates() 

" abbreviate... 
" 
iab intmain int<cr>main(int argc, char *argv[])<cr>{<cr>return 0;<cr>}<cr> 
iab #i #include <><Left> 
iab #d #define 
iab __P __PRETTY_FUNCTION__ 
iab __F __FUNCTION__ 

" set mapleader 
" 
let mapleader = "," 

" keyboard mappig 
" 
map <F1> :call <SID>insert_gates() <cr> 
map <F2> :call <SID>insert_namespace() <cr> 
map <F3> :call <SID>insert_class() <cr> 
map <F4> :call <SID>insert_value_class() <cr> 

map <F5> :call SwitchSpaceMode() <cr> 
map <F7> :make<cr> 
map <F8> :call SwitchErrMode() <cr> 

map <F9> :call UpdateTags() <cr> 
map <F10> :call UpdateExtraTags() <cr> 
map <F11> :call <SID>DiffWithSaved() <cr> 

map <leader>e :e ~/.vimrc<cr>  " edit vimrc 
map <leader>u :source ~/.vimrc<cr> " update vimrc 

map <tab> :tabnext<cr> 
map <S-tab> :tabprevious<cr> 

" plugins 
" 
runtime! ftplugin/man.vim 
runtime! ftplugin/gzip.vim 
runtime! ftplugin/taglist.vim 

快樂編碼! :-)

+0

不錯的設置,請檢查snipmate-vim的片段,要好得多,然後讓它們在.vimrc中 – Nazgob 2011-01-04 18:10:34

相關問題