Generic:vim中的python命令?

vim脚本中,只要 vim是使用 python功能构建的,就可以嵌入一些python代码.
function! IcecreamInitialize()
python << EOF
class StrawBerryIcecream:
    def __call__(self):
        print('EAT ME')
EOF
endfunction

但是,有些人使用python3构建了vim.这为vim插件带来了一些兼容性问题.是否有一个通用命令调用计算机上安装的任何python版本?

这个片段可以确定我们正在使用哪个Python版本并切换到它(Python代表安装的那个版本).
if has('python')
    command! -nargs=1 Python python <args>
elseif has('python3')
    command! -nargs=1 Python python3 <args>
else
    echo "Error: Requires Vim compiled with +python or +python3"
    finish
endif

要加载python代码,我们首先要弄清楚它的位置(这里与Vim脚本位于同一目录下):

execute "Python import sys"
execute "Python sys.path.append(r'" . expand("<sfile>:p:h") . "')"

然后检查python模块是否可用.如果没有,请重新加载:

Python << EOF
if 'yourModuleName' not in sys.modules:
    import yourModuleName
else:
    import imp
    # Reload python module to avoid errors when updating plugin
    yourModuleName = imp.reload(yourModuleName)
EOF

两种称呼方式:
1.

" call the whole module
execute "Python yourModuleName"

" call a function from that module
execute "Python yourModuleName.aMethod()"

2.

" Call a method using map 
vnoremap <leader> c :Python yourModuleName.aMethod()<cr> 

" Call a module or method using Vim function
vnoremap <leader> c :<c-u> <SID>yourFunctionName(visualmode())<cr>
function! s:YourFunctionName(someName)
    Python YourFunctionName.aMethod(a:someName)
    Python YourFunctionName
endfunction

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...