Windows下gVim使用python3的智能提示


轉:http://graycarl.net/article/27

之前一直以為windows下的gvim是不支持python的只能提示(Ctrl-x Ctrl-o)的,因為每次執行都會被提示需要在編譯時加上+python。今天又上網搜了下該問題,發現貌似並不是這個問題。

在gvim中執行:version輸出如下

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2010 17:59:02)
MS-Windows 32 位圖形界面版本 帶 OLE 支持
包含補丁: 1-46
編譯者 Bram@KIBAALE
大型版本 帶圖形界面。  可使用(+)與不可使用(-)的功能:
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff 
+digraphs -dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi 
+file_in_path +find_in_path +float +folding -footer +gettext/dyn -hangul_input 
+iconv/dyn +insert_expand +jumplist +keymap +langmap +libcall +linebreak 
+lispindent +listcmds +localmap -lua +menu +mksession +modify_fname +mouse 
+mouseshape +multi_byte_ime/dyn +multi_lang -mzscheme +netbeans_intg +ole 
-osfiletype +path_extra +perl/dyn +persistent_undo -postscript +printer 
-profile +python/dyn +python3/dyn +quickfix +reltime +rightleft +ruby/dyn 
+scrollbind +signs +smartindent -sniff +startuptime +statusline -sun_workshop 
+syntax +tag_binary +tag_old_static -tag_any_white +tcl/dyn -tgetent 
-termresponse +textobjects +title +toolbar +user_commands +vertsplit 
+virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu 
+windows +writebackup -xfontset -xim -xterm_save +xpm_w32 
......

里面有+python/dyn +python3/dyn,說明其本身是支持python的。但是在gvim中執行:echo has("python")的時候返回為零,並且:py <code>也沒法執行。

在網上搜索的時候發現有人提到了gvim和python的安裝順序。我看了下,發現我是先安裝了gvim-windows再安裝了python3-windows的,覺得有可能是這個問題。於是把gvim卸了重新安裝,再執行:echo has("python")還是返回零。

又想到是不是由於我安裝的是python3?於是就試了下:echo has("python3"),果然這次返回了1,:py3 <code>也是正常的。所以這里我也不確定是不是和安裝順序有關,因為之前從來沒有試過:py3

重新打開一個python代碼,用Ctrl-x Ctrl-o發現還是不行,一樣的提示

Error: Required vim compiled with +python
E117: Unknown function: pythoncomplete#Complete

不過有了以上的經歷我猜到應該是vim還是去找python2了,問題可能是pythoncomplete#Complete這里。在gvim安裝目錄里面搜了一下python,發現有pythoncomplete.vim這個包和python3complete.vim這個包。所以應該是文件類型處理里面指定了使用pythoncomplete而不是python3complete

打開gvim目錄里面的ftplugin/python.vim,果然找到了

setlocal omnifunc=pythoncomplete#Complete

改成

setlocal omnifunc=python3complete#Complete

這樣就可以正常使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM