(link to Integrate gvim with Visual Studio. note dead links, move VisVim content from here. remove nonsensical "online") |
(remove content from Use Vim like an IDE) |
||
Line 12: | Line 12: | ||
|category2= |
|category2= |
||
}} |
}} |
||
+ | {{duplicate|1119}} |
||
+ | |||
I've read a lot of tips about how to make Vim as an IDE like editor. Most of them are really useful, and I want to sum up them in this tip, and then add some of my experiences. |
I've read a lot of tips about how to make Vim as an IDE like editor. Most of them are really useful, and I want to sum up them in this tip, and then add some of my experiences. |
||
Here are some useful tips to read: |
Here are some useful tips to read: |
||
⚫ | |||
*[[VimTip64]] Always set your working directory to the file you're editing Vim |
*[[VimTip64]] Always set your working directory to the file you're editing Vim |
||
− | *[[Integrate gvim with Visual Studio]] |
||
⚫ | |||
*[[VimTip1608|C++ code completion]] omni completion for C++ |
*[[VimTip1608|C++ code completion]] omni completion for C++ |
||
− | |||
− | Here are some scripts I recommend: |
||
− | *{{script|id=69|text=Project 1.1.4}} Organize/navigate projects of files (like IDE/buffer explorer). |
||
− | *{{script|id=3221|text=Indexer}} Auto-generate tags for a whole project(s) and keep tags up-to-date. Can work as useful add-on for previous plugin (Project), but also can work independently. |
||
− | *{{script|id=273|text=TagList 4.2}} Source code browser (supports C/C++, Java, Perl, Python, TCL, SQL, PHP, etc). |
||
− | *{{script|id=3465|text=Tagbar}} Source code browser that can order tags by scope |
||
− | *{{script|id=159|text=MiniBufExpl 6.3.2}} Elegant buffer explorer; takes very little screen space. |
||
− | *{{script|id=152|text=ShowMarks-2.2}} Visually shows the location of marks. |
||
− | *{{script|id=1520|text=OmniCppComplete-0.4}} C/C++ omni-completion with ctags database. |
||
− | *{{script|id=614|text=CRefVim-1.0.4}} A C-reference manual especially designed for Vim. |
||
− | *{{script|id=1729|text=exUtility-4.1.0}} Global search,symbol search,tag track...(Like IDE/Source Insight). |
||
Here are some programs you may need to download: |
Here are some programs you may need to download: |
||
Line 226: | Line 216: | ||
==Comments== |
==Comments== |
||
− | I think cscope should also have been on this list, especially for people who are editing C files (as opposed to C++, which seems to be the main focus of this tip). It has a lot more features than ctags. A nice tutorial can be found at cscope.sourceforge.net. |
||
− | |||
− | ---- |
||
− | For real-time source code analysis, this plugin might help as well: {{script|id=2368}} |
||
− | |||
− | ---- |
Revision as of 21:51, 7 August 2011
created December 12, 2006 · complexity basic · author Johnny · version n/a
Duplicate tip
This tip is very similar to the following:
These tips need to be merged – see the merge guidelines.
I've read a lot of tips about how to make Vim as an IDE like editor. Most of them are really useful, and I want to sum up them in this tip, and then add some of my experiences.
Here are some useful tips to read:
- Use Vim like an IDE
- VimTip64 Always set your working directory to the file you're editing Vim
- C++ code completion omni completion for C++
Here are some programs you may need to download:
http://gnuwin32.sourceforge.net/
- diffutils-2.8.7-1.exe
- gawk-3.1.3-2.exe
- id-utils-4.0-2.exe
- ctags.exe
Here are some scripts for your vimrc:
" -------------------- " ShowMarks " -------------------- let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" let g:showmarks_enable = 1 " For marks a-z highlight ShowMarksHLl gui=bold guibg=LightBlue guifg=Blue " For marks A-Z highlight ShowMarksHLu gui=bold guibg=LightRed guifg=DarkRed " For all other marks highlight ShowMarksHLo gui=bold guibg=LightYellow guifg=DarkYellow " For multiple marks on the same line. highlight ShowMarksHLm gui=bold guibg=LightGreen guifg=DarkGreen " -------------------- " Project " -------------------- map <A-S-p> :Project<CR> map <A-S-o> :Project<CR>:redraw<CR>/ nmap <silent> <F3> <Plug>ToggleProject let g:proj_window_width = 30 let g:proj_window_increment = 50 " -------------------- " exTagSelect " -------------------- nnoremap <silent> <F7> :ExtsToggle<CR> nnoremap <silent> <Leader>ts :ExtsSelectToggle<CR> nnoremap <silent> <Leader>tt :ExtsStackToggle<CR> map <silent> <Leader>] :ExtsGoDirectly<CR> map <silent> <Leader>[ :PopTagStack<CR> let g:exTS_backto_editbuf = 0 let g:exTS_close_when_selected = 1 " -------------------- " exGlobalSearch " -------------------- nnoremap <silent> <F5> :ExgsToggle<CR> nnoremap <silent> <Leader>gs :ExgsSelectToggle<CR> nnoremap <silent> <Leader>gq :ExgsQuickViewToggle<CR> nnoremap <silent> <Leader>gt :ExgsStackToggle<CR> map <S-f> :GS map <C-S-f> :GSW let g:exGS_backto_editbuf = 0 let g:exGS_close_when_selected = 0 " -------------------- " exSymbolTable " -------------------- nnoremap <silent> <Leader>ss :ExslSelectToggle<CR> nnoremap <silent> <Leader>sq :ExslQuickViewToggle<CR> nnoremap <silent> <F6> :ExslToggle<CR> nnoremap <A-S-l> :ExslQuickSearch<CR>/^ nnoremap <silent> <Leader>sg :ExslGoDirectly<CR> let g:exSL_SymbolSelectCmd = 'TS' " -------------------- " exEnvironmentSetting " -------------------- function g:exES_UpdateEnvironment() if exists( 'g:exES_PWD' ) silent exec 'cd ' . g:exES_PWD endif if exists( 'g:exES_Tag' ) let &tags = &tags . ',' . g:exES_Tag endif if exists( 'g:exES_Project' ) silent exec 'Project ' . g:exES_Project endif endfunction " -------------------- " TagList " -------------------- " F4: Switch on/off TagList nnoremap <silent> <F4> :TlistToggle<CR> " TagListTagName - Used for tag names highlight MyTagListTagName gui=bold guifg=Black guibg=Orange " TagListTagScope - Used for tag scope highlight MyTagListTagScope gui=NONE guifg=Blue " TagListTitle - Used for tag titles highlight MyTagListTitle gui=bold guifg=DarkRed guibg=LightGray " TagListComment - Used for comments highlight MyTagListComment guifg=DarkGreen " TagListFileName - Used for filenames highlight MyTagListFileName gui=bold guifg=Black guibg=LightBlue "let Tlist_Ctags_Cmd = $VIM.'/vimfiles/ctags.exe' " location of ctags tool let Tlist_Show_One_File = 1 " Displaying tags for only one file~ let Tlist_Exist_OnlyWindow = 1 " if you are the last, kill yourself let Tlist_Use_Right_Window = 1 " split to the right side of the screen let Tlist_Sort_Type = "order" " sort by order or name let Tlist_Display_Prototype = 0 " do not show prototypes and not tags in the taglist window. let Tlist_Compart_Format = 1 " Remove extra information and blank lines from the taglist window. let Tlist_GainFocus_On_ToggleOpen = 1 " Jump to taglist window on open. let Tlist_Display_Tag_Scope = 1 " Show tag scope next to the tag name. let Tlist_Close_On_Select = 1 " Close the taglist window when a file or tag is selected. let Tlist_Enable_Fold_Column = 0 " Don't Show the fold indicator column in the taglist window. let Tlist_WinWidth = 40 " let Tlist_Ctags_Cmd = 'ctags --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++' " very slow, so I disable this " let Tlist_Process_File_Always = 1 " To use the :TlistShowTag and the :TlistShowPrototype commands without the taglist window and the taglist menu, you should set this variable to 1. ":TlistShowPrototype [filename] [linenumber] " -------------------- " MiniBufExpl " -------------------- let g:miniBufExplTabWrap = 1 " make tabs show complete (no broken on two lines) let g:miniBufExplModSelTarget = 1 " If you use other explorers like TagList you can (As of 6.2.8) set it at 1: let g:miniBufExplUseSingleClick = 1 " If you would like to single click on tabs rather than double clicking on them to goto the selected buffer. let g:miniBufExplMaxSize = 1 " <max lines: defualt 0> setting this to 0 will mean the window gets as big as needed to fit all your buffers. "let g:miniBufExplForceSyntaxEnable = 1 " There is a Vim bug that can cause buffers to show up without their highlighting. The following setting will cause MBE to "let g:miniBufExplorerMoreThanOne = 1 " Setting this to 0 will cause the MBE window to be loaded even "let g:miniBufExplMapCTabSwitchBufs = 1 "let g:miniBufExplMapWindowNavArrows = 1 "for buffers that have NOT CHANGED and are NOT VISIBLE. highlight MBENormal guibg=LightGray guifg=DarkGray " for buffers that HAVE CHANGED and are NOT VISIBLE highlight MBEChanged guibg=Red guifg=DarkRed " buffers that have NOT CHANGED and are VISIBLE highlight MBEVisibleNormal term=bold cterm=bold gui=bold guibg=Gray guifg=Black " buffers that have CHANGED and are VISIBLE highlight MBEVisibleChanged term=bold cterm=bold gui=bold guibg=DarkRed guifg=Black " -------------------- " OmniCppComplete " -------------------- " set Ctrl+j in insert mode, like VS.Net imap <C-j> <C-X><C-O> " :inoremap <expr> <CR> pumvisible() ? "\<c-y>" : "\<c-g>u\<CR>" " set completeopt as don't show menu and preview set completeopt=menuone " Popup menu hightLight Group highlight Pmenu ctermbg=13 guibg=LightGray highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White highlight PmenuSbar ctermbg=7 guibg=DarkGray highlight PmenuThumb guibg=Black " use global scope search let OmniCpp_GlobalScopeSearch = 1 " 0 = namespaces disabled " 1 = search namespaces in the current buffer " 2 = search namespaces in the current buffer and in included files let OmniCpp_NamespaceSearch = 1 " 0 = auto " 1 = always show all members let OmniCpp_DisplayMode = 1 " 0 = don't show scope in abbreviation " 1 = show scope in abbreviation and remove the last column let OmniCpp_ShowScopeInAbbr = 0 " This option allows to display the prototype of a function in the abbreviation part of the popup menu. " 0 = don't display prototype in abbreviation " 1 = display prototype in abbreviation let OmniCpp_ShowPrototypeInAbbr = 1 " This option allows to show/hide the access information ('+', '#', '-') in the popup menu. " 0 = hide access " 1 = show access let OmniCpp_ShowAccess = 1 " This option can be use if you don't want to parse using namespace declarations in included files and want to add namespaces that are always used in your project. let OmniCpp_DefaultNamespaces = ["std"] " Complete Behaviour let OmniCpp_MayCompleteDot = 0 let OmniCpp_MayCompleteArrow = 0 let OmniCpp_MayCompleteScope = 0 " When 'completeopt' does not contain "longest", Vim automatically select the first entry of the popup menu. You can change this behaviour with the OmniCpp_SelectFirstItem option. let OmniCpp_SelectFirstItem = 0
After setting this, now you can really using Vim as an IDE-like editor.
I usually like to create project use exUtility, use "gvim project_name.vimenvironment"
You can browse project file by Project-plugin.
You can global search and edit them by exUtility-plugin.
You can jump tag and track code by exUtility-plugin.
You can analysis code by taglist-plugin.
You can choose buffer by minibuffer-plugin.
You can set clear mark by showmark-plugin.