网上能搜集到的博文大多关于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