Skip to main content
  1. Posts/

vim下python 的配置

·2 mins
Table of Contents
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

由于最近要做数字图像处理的大作业,以及之后一段时间,估计写python多一些,所以打算花些时间配置下vim.
#

1. 一键执行
#

其实之前一直有的。。不过没有效果,就没有管。发现问题是,python对应的filetype为"python",而不是"py"
#

 1func! CompileRunGcc()
 2	exec "w"
 3	if &filetype == 'c'
 4		exec "!g++ % -o %<"
 5		exec "! ./%<"
 6	elseif &filetype == 'cpp'
 7		exec "!g++ % -std=gnu++11  -Wall   -o %<"
 8		exec "! ./%<"
 9	elseif &filetype == 'java'
10		exec "!javac %"
11		exec "!java %<"
12	elseif &filetype == 'sh'
13		:!./%
14	elseif &filetype == 'python'
15	"	exec "!python %"
16	"	exec "!python %<"
17		exec "!python2.7 %"
18	endif
19endfunc

2.代码补全
#

不想折腾了。。既然ycm也支持python,就先用用看好了。。不行再换别的。
#

放一段ycm for python的配置文件
#

 1"默认配置文件路径"
 2let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
 3"打开vim时不再询问是否加载ycm_extra_conf.py配置"
 4let g:ycm_confirm_extra_conf=0
 5set completeopt=longest,menu
 6"python解释器路径"
 7let g:ycm_path_to_python_interpreter='/usr/bin/python'
 8"是否开启语义补全"
 9let g:ycm_seed_identifiers_with_syntax=1
10"是否在注释中也开启补全"
11let g:ycm_complete_in_comments=1
12let g:ycm_collect_identifiers_from_comments_and_strings = 0
13"开始补全的字符数"
14let g:ycm_min_num_of_chars_for_completion=2
15"补全后自动关机预览窗口"
16let g:ycm_autoclose_preview_window_after_completion=1
17" 禁止缓存匹配项,每次都重新生成匹配项"
18let g:ycm_cache_omnifunc=0
19"字符串中也开启补全"
20let g:ycm_complete_in_strings = 1

3. 语法检查
#

Syntastic大家都知道了。。。。看到了异步检测插件ALE,打算试一下。
#

ale_github
#

需要注意的是,这个插件需要vim 8.0+的特性。。。
#

放一波配置文件
#

 1""""""""""""""""""for ale begin """"""""""""""""
 2let g:ale_sign_column_always = 1  "保持侧边栏可见:
 3
 4let g:ale_sign_error = '>>'    "改变错误和警告标识符
 5let g:ale_sign_warning = '--'
 6let g:ale_statusline_format = ['⨉ %d', '⚠ %d', '⬥ ok']  "改变状态栏信息格式
 7
 8"自定义跳转错误行快捷键:
 9nmap <silent> <C-k> <Plug>(ale_previous_wrap)
10nmap <silent> <C-j> <Plug>(ale_next_wrap)
11"消除某excption not caught的警告
12let g:ale_emit_conflict_warnings = 0

4. 编程提示(jedi-vim)
#

 据说是vim写python的神器。。。装来看看。。。
#

据说默认配置就够了,先不折腾了
#

#

#

Related

vundle error detected while processing function

·1 min
好久没装新插件了,最新要配下python,发现安装时候满屏的错误。。。 # 最后发现是shell的锅,因为我用的是fish,在.vimrc文件中添加 # 1set shell=/bin/bash 即可。 # 以及说下可能的其他原因,虽然我没遇到 # * 对于arch系,可能从aur中安装的版本out ot data * 可能没有把.vimrc中vundle的配置从set rtp+=~/.vim/bundle/vundle更新成set rtp+=~/.vim/bundle/vundle.vim * 可能项目名称用了" 而不是' 以及顺手查了下bundle和Plugin的区别。。。 # 简单来说。。Plugin是新写法,bundle是正在被淘汰的写法,不过由于兼容性的原因,仍然在使用。。。 # 以后使用plugin的写法就好。 # 参考资料

边界的链码,归一化链码,差分玛,形状数

·4 mins
复习一下数字图像处理。 # # # # 按照我自己的理解简单来说: # 原链码:按照任意起点走边界一周,方向按照上图对应的表示,得到的数字序列就是原链码。 # 归一化链码:为了解决原链码中起点不唯一而产生的序列不唯一的问题,规定,对于所有起点得到的原链码中,字典序最小的即为归一化链码(由于序列都是自然数,因此字典序最小也可以理解成,把该序列看成有前导0的自然数之后的数值之后的数值最小。 # 差分码:为了解决图形旋转之后,原链码和归一化链码都会发生变化,引入差分码。n 位原链码(或归一化链码,由于归一化链码只是一种特殊的原链码,之后不再单独强调)可以得到 n-1 位差分码。具体来说,对于原链码 a[i](i 属于 1..n),可以得到差分码 b[i],b[i] = ((a[i+1] - a[i]) + mod) % mod(i 属于 1..n-1),mod 根据实际有几个方向决定,通常为 4 或者 8。 # 形状数:需要强调的是,形状数也是一个序列,而不是一个数。其实形状数就是把差分码按照字典序排序之后,最小的序列。形状数的阶数是该序列的长度。 # Freeman链码(弗雷曼链码)是指用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。

qt 5.x 初探 (5) 

·1 min
qt_5.9_ui_doc 还是比直接写代码方便点。。。所以不妨学习一个! 以及。。。qt在2017年6月1号发布了5.9。。。所以之前是5.8。。。现在变成5.9了。。。