设为首页 收藏本站
查看: 397|回复: 0

[经验分享] 配置vim基于python的编程环境

[复制链接]

尚未签到

发表于 2017-5-1 14:24:01 | 显示全部楼层 |阅读模式
  以前不管在window还是linux下都是在eclipse中编码,在IDE中编码的一个好处就是IDE集成了很多会插件,提供了很多好用的功能,比如自动补全,比如拼写、引用错误检查等等,使用这些功能,可以避免很多由于拼写或引用带来的低级错误,且这些插件安装配置简单,但是现在的公司要求在服务器的个人账号下直接使用vim编码,如果此时想要在vim下使用这些检查功能,就需要对vim进行“个性化”设置了,之前我并不十分熟悉使用vim的编码,在配置vim基于python的编码环境时,做了以下总结,希望对初次使用vim编程的朋友有所帮助

配置自己“个性化”的vim,只需修改自己帐号根目录下的.vimrc文件即可(如果没有这个文件,可以自己创建一个)。

1,配置自动缩进并设置tab为4个空格

" 自动检测文件类型并加载相应的设置
filetype plugin indent on
autocmd FileType python setlocal et sta sw=4 sts=4
  
2,配置python文件的代码检查功能
    使用vim实现python的代码检查功能,需要安装插件pyflakes实现,步骤如下:

a,访问:pyflakes网站,下载pyflake
b,在Vim目录下的的Vimvimfilesftplugin目录下新建一个python目录
c,将pyflakes解压缩后把pyflakes.vim文件和pyflakes目录拷贝套ftpluginpython目录中。
d,打开一个有问题的python源代码文件,执行命令:cc,即可进行代码检查。
  
3,代码折叠
   python的代码可以只以代码的缩进为依据

"按照语法高亮元素折叠代码
set foldmethod=syntax
"python按照缩进折叠代码
autocmd FileType python setlocal foldmethod=indent
"默认展开所有代码
set indentlevel=99
"随后即可使用z系列命令管理代码折叠。如za会翻转当前位置的折叠状态,
"zA会递归翻转当前层所有代码的折叠状态等。当然也可以把功能键映射到za:
map <F3> za
  4,自动补全
vim7中开发的插件pythoncomplete,python的补全已经非常先进,按照vim的自动补全操纵即可
  关键字补全
  简单的补全文档中已有的词,快捷键为ctrl-N或ctrl-P
  智能补全
  vim7中可以引入Omni complete,可以根据语义补全,快捷键为crtl-X或crtl-O
  vim的补全菜单操作与IDE的方式不同,可做一下设置:

"让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)
set completeopt+=longest
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"回车即选中当前项
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"
"上下左右键的行为
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown>pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr> <PageUp>pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
  如需要自动补全,可再安装AutoComplete插件,安装后如需在补全时显示文档(预览),可设置:
  


let g:acp_completeoptPreview = 1
   5,注释管理
  常见的注视管理插件为 The NERD Commenter,默认支持多种语言,使用方法:
  在可视模式(V)下选择一段代码,使用\cc添加逐行注释;\cu取消注释;\cm添加块注释
  6,代码的浏览与跳转(与IDE中的crtl-点击的功能相同)
  简单跳转
  在命令模式下直接使用一下命令
  跳转到定义:gd跳转到局部变量的定义,gD跳转到全局变量的定义
  搜索:*/#可对光标处的词向前/向后做全词搜索,g*/g#对光标处的次做向前/向后的非全词匹配搜索
  代码块首尾:[[/]]可跳到当前代码块的开始/结束的位置;%可在配对的代码括号或代码块的首尾之间跳转
  历时位置:crtl-O在历史记录中后退;crtl-I在历史记录中前进
  基于代码理解的跳转
  需要依赖ctafs插件
  安装插件后,在代码的目录下运行
  


ctags -R
  即可获得描述代码结构的tag文件
  并设置
  


set tags=tags:/
  设置好后,可在vim中使用如下功能:

Ctrl-]转至最佳匹配的相应Tag
Ctrl-T返回上一个匹配
g Ctrl-]可显示所有备选的tags
  7,查看代码框架
  如想查阅代码的大体结构,如类,函数变量等,可使用插件taglist,配置如下

" F4: 使用F4开关taglist
nnoremap <silent> <F4> :TlistToggle<CR>
"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]
  

 


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371705-1-1.html 上篇帖子: Python编程技巧-使用状态机 下篇帖子: 在python程序中执行shell命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表