打造IDE+vundle配置python+Vim集成Ptags/Taglist/Cscope/WinManager(ubuntu16.04持续补充中)

网上能搜集到的博文大多关于C语言使用的vim配置,本文仅针对python,若有错漏,望指出望谅解

内容摘要:

1  vim编程常用命令
2 语法高亮
3 ptags
4 高效地浏览源码:TagList
5 WinManager合并显示NERDTree和TagList
6 Cscope 的使用
7 QuickFix 窗口
8 MiniBufExplorer
9 Project
10 Grep
11 高亮的书签:VisualMark
12 自动补全

""""""""""""""""""""""""""""""""""""""""""接下来是正文啦啦啦啦

1  vim编程常用命令


2 语法高亮

不多说直接上配置

"语法高亮相关                                  
"syntax enable            "语法高亮,可有可无             
syntax on                 "语法检验,颜色显示   
"colorscheme dessert      "配色方案
set ignorecase            "搜索忽略大小写       
set hlsearch              "高亮度反白.反义词是nohlsearch
set incsearch             "搜索逐字符高亮      
set showmatch             "高亮显示匹配的括号   
set matchtime=5           " 匹配括号高亮的时间(

关于colorscheme配色方案,有默认的,若不喜欢建议从官网下载防到syntax文件夹下,把名称放到dessert位置中即可


3 ptags

ctags是为c服务的且ubuntu有内置,python需使用ptags

脚本的目录是python源码下的Tool/script/ptags.py。 如果不想去找,可以直接copy一份,http://svn.python.org/projects/python/trunk/Tools/scripts/ptags.py,放在你方便的位置,然后使用ptags.py生成tag。
为当前目录生成tag文件 :  ptags.py *.py
为整个项目生成tag文件:find  . -name \*.py -print | xargs ptags.py
然后就有tag了。在vim的配置文件中导入tag文件的目录就可以了。
比如在.vimrc 中添加:
set tags+=tags
set autochdir


4 高效地浏览源码:TagList

"ctags用于支持taglist,在终端中输入命令进行安装

sudo apt-get install ctags

然后才能安装taglist插件

sudo apt-get install vim-scripts
sudo apt-get install vim-addon-manager
vim-addons install taglist

我在安装vim-scripts的时候,已经附带安装了vim-addon-manager

在.vimrc文件中的配置,这是综合多篇博文的完整版,建议各位在配置时,尽可能按照字母顺序,不然很容易冗余

let Tlist_Auto_Highlight_Tag=1        "                        
227 let Tlist_Auto_Open=1            "自动打开taglist窗口         
228 let Tlist_Auto_Update=1                                    
229 "let Tlist_Close_On_Select=1     "选择了tag后自动关闭taglist窗口       
230 "let Tlist_Ctags_Cmd             "指定你的Exuberant ctags程序的位置  
231 let Tlist_Display_Tag_Scope=1                                  
232 let Tlist_Exit_OnlyWindow=1      "taglist窗口是最后一个窗口时退出VIM   
233 let Tlist_Enable_Dold_Column=1                                        
234 let Tlist_File_Fold_Auto_Close=1 "显示当前文件tag,其它文件tag被折叠                           
235 "let Tlist_GainFocus_On_ToggleOpen                            
236 "在使用:TlistToggle打开taglist窗口时,如果希望输入焦点在taglist窗口中    
237 "let Tlist_Max_Submenu_Items     "菜单条目数          
238 "let Tlist_Max_Tag_Length        "菜单所显示tag名字的长度      
239 let Tlist_Process_File_Always=1  "taglist始终解析文件中的tag       
240 let Tlist_Show_Menu              "显示taglist菜单       
241 let Tlist_Show_One_File=1        "1:不想同时显示多个文件中的tag                             
242 let Tlist_Sort_Type=name         "使taglist以tag名字进行排序                           
243 let Tlist_Use_Right_Window=1     "taglist窗口出现在右侧   
244 let Tlist_Use_SingleClick=1      "单击tag就跳转    
245 "let Tlist_WinHeight=            "taglist窗口高度           
246 "let Tlist_WinWidth=             "taglist窗口宽度      
247 "let Tlist_Use_Horiz_Window=1     "taglist窗口横向显示

5 WinManager合并显示NERDTree和TagList

需要用到插件主要是:TagList,ctags

winmanager的安装命令,在终端中执行即可

vim-addons install winmanager

若执行后没有反应,尝试运行vam命令即可查看插件的安装情况

vam

在.vimrc中配置是

289 let g:winManagerWidth = 35       "设置宽度    
290 " winmanager配置       
291 let g:NERDTree_title='NERD Tree'        
292 let g:winManagerWindowLayout='NERDTree|TagList'    
293 function! NERDTree_Start()      
294     exec 'NERDTree'            
295     endfunction          
296 function! NERDTree_IsValid() 
297     return 1    
298 endfunction    
299 "绑定F2到winmanager     
300 nmap <silent> <F2> :WMToggle<CR>    
301                  
302 "常用快捷方式        
303 "ctrl+w可以在各个区域切换  
304 ":q,退出某个区域 

注意要修改taglist和NERDTree的相关配置

" 绑定F8快捷键
" 使用winmanager时,不使用快捷键
" nnoremap <silent> <F8> :TlistToggle<CR>

" 启动Vim后,自动打开taglist窗口。
" 使用winmanager时,将自动打开窗口关闭
let Tlist_Auto_Open = 0
" 绑定F2到NERDTreeToggle
" 使用winmanager时,不使用快捷键,点击F2即可打开或关闭文件列表
" map <F2> :NERDTreeToggle<CR>

常用的命令

:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
<enter>或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
<tab> 如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
<F5> 刷新列表
- 返回上一层目录
c 使浏览目录成为vim当前工作目录
d 创建目录
D 删除当前光标下的目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
r 反向排序列表
x 定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw

6 Cscope 的使用

消化理解中

7 QuickFix 窗口

消化理解中

8 MiniBufExplorer

MiniBufferExplorer用于浏览和管理buffer,如果只打开一个文件,是不会显示在屏幕上的,而打开多个文件之后,会自动出现在屏幕上。vim也有自带的buffer管理工具,不过只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观.
关于vim缓冲区(buffer)和窗口的概念(详见:help windows)
"缓冲区" 是一块内存区域,里面存储着正在编辑的文件。如果没有把缓冲区里的文件存盘,那么原始文件不会被更改。
"窗口" 被用来查看缓冲区里的内容。你可以用多个窗口观察同一个缓冲区,也可以用多个窗口观察不同的缓冲区。

安装命令:

vim-addons install minibufexplorer

在.vimrc中的配置

313 let g:miniBufExplMapWindowNavVim = 1 
314 "按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口  
315 
316 let g:miniBufExplMapWindowNavArrows = 1 "
317 "按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口  
318 
319 let g:miniBufExplMapCTabSwitchBufs = 1 "
320 "启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一
321 
322 "let g:miniBufExplMapCTabSwitchWindows = 1 "
323 "启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像
324 
325 let g:miniBufExplModSelTarget = 1     
326 "不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer 
常用命令
<Tab> 移到上一个buffer
<Shift-Tab> 移到下一个buffer
<Enter> 打开光标所在的buffer

d 删除光标所在的buffer


9 Project

 Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。

安装Project:

vim-addons install project 
Project目录树可以通过下面的步骤生成:

1) 打开vim在命令模式下输入 :Project,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的
2)在命令模式下(不是插入模式)输入\C (大写的C),会出现下面这些信息:
Enter the Name of the Entry: xxxx (输入项目名称)
Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)
Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致
Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)
PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。

Project目录树可以通过下面的步骤生成:
1) 打开vim在命令模式下输入 :Project,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的
2)在命令模式下(不是插入模式)输入\C (大写的C),会出现下面这些信息:
Enter the Name of the Entry: xxxx (输入项目名称)
Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)
Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致
Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)
PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。

10 实现多文件搜索:Grep

需要用vim命令安装

"grep 插件
Plugin 'grep.vim'

配置.vimrc

"在文件中查找”grep”, 则只需将光标移到”grep”, 然后按下F3键即可
 nnoremap <silent> <F3> :Grep<CR

11 高亮的书签:VisualMark

消化理解中

12 自动补全YouCompleteMe

建议参考我写的另一篇文章:Ubuntu16.04Vim+Vundle+Python编辑器(傻瓜操作版)

不多说直接上配置文件

199 set runtimepath+=~/.vim/bundle/YouCompleteMe  
200 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全  
201 let g:ycm_collect_identifiers_from_tags_files = 1           " 开启 YCM基于标签引擎  
202 let g:syntastic_ignore_files=[".*\.py$"]  
203 let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全  
204 let g:ycm_complete_in_comments = 1      
205 let g:ycm_confirm_extra_conf = 0                 "如果为1的话,会总是提示是否加载.ycm_extra_conf.py文件  
206 let g:ycm_key_list_select_completion = ['', '']  " 映射按键,没有这个会拦截掉tab, 导致其他插件的tab不能用.  
207 let g:ycm_key_list_previous_completion = ['', '']  
208 let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全  
209 let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全  
210 let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全  
211 "let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'  
212 let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查  
213 inoremap  pumvisible() ? "\" : "\" |                        "回车即选中当前项
214 let g:ycm_min_num_of_chars_for_completion = 2  "开始补全的字符数"
215 
216 let g:ycm_python_binary_path = 'python'  "jedi模块所在python解释器路径"
217 let g:ycm_seed_identifiers_with_syntax = 1  "开启使用语言的一些关键字查询"
218 let g:ycm_autoclose_preview_window_after_completion=1 "补全后自动关闭预览窗口"" 回车即选中当前项  
219 nnoremap  :YcmCompleter GoToDefinitionElseDeclaration|     " 跳转到定义处  
220 let g:ycm_min_num_of_chars_for_completion=2                 "从第2个键入字符就开始罗列匹配项 
221 
222 "指定.ycm_extra_conf.py的目录
223 let g:ycm_global_ycm_extra_conf ='~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py'
224 
225 
226 "在补全的时候默认是可以打开补全预览的,所谓的补全预览就是在vim的上面展开一个小的名为"草稿"窗口,
227 "里面显示的是当前补全列表中选择内容的完整内容预览, 这功能并不实用, 因为补全列表中的内容已经相当详细了,
228 "突然打开的草稿窗口只会给编辑带来不顺畅感.因此这里建议将其设置为1来关闭预览功能.
229 set completeopt-=preview
230 let g:ycm_add_preview_to_completeopt = 0
231 
232 " for ycm
233 let g:ycm_error_symbol = '>>'
234 let g:ycm_warning_symbol = '>*'
235 "代码跳转
236 nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
237 nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
238 nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
239 nmap <F4> :YcmDiags<CR>
240 "开关ACM
241 let g:ycm_auto_trigger = 0   "turn off
242 let g:ycm_auto_trigger = 1   "turn on



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值