一个Python到Vim的桥梁装饰器,允许在原生Vim脚本中透明地调用Python函数。
项目描述
这是什么?
vim_bridge 是一个Python到Vim的桥梁装饰器,允许在原生Vim脚本中透明地调用Python函数。
安装
只需使用setuptools、easy_install或pip安装vim_bridge Python包。
使用
在Vim脚本中,如下装饰你的Python函数,以将其作为原生Vim调用公开。参数和返回值都会被转换,因此应该是透明的。
python << endpython
from vim_bridge import bridged
@bridged
def SayHello(first, last):
return "Hello, %s %s!" % (first, last)
endpython
" Now call directly into the Python function!
echo SayHello("John", "Doe")
" prints "Hello, John Doe!"
支持
以下数据类型已被证明可以正常工作
字符串
整数
列表
异常
更多示例
传递列表
python << endpython
from vim_bridge import bridged
@bridged
def GetLongest(list):
return max(map(lambda s: len(s), list))
endpython
echo GetLongest(['one', 'two', 'three', 'four'])
" returns 5 (because "three" is 5 chars long)
捕获异常
python << endpython
from vim_bridge import bridged
@bridged
def WillCauseException():
raise Exception("Oops")
endpython
" This will throw an error to the user...
echo WillCauseException()
" But here's how you can catch that in Vim
try
echo WillCauseException()
catch
echo "Something went wrong. Aborting."
finally
echo "Cleaning up."
endtry
使用Python stdlib函数来完成纯Vim脚本难以完成的任务
python << END
import os.path
from vim_bridge import bridged
@bridged
def NormalizePath(path):
return os.path.realpath(path)
END
echo NormalizePath("/this/../or/./.././that/is/./a/.//very/../obscure/..//././long/./../path/name")
echo NormalizePath("..")
你可以在Python块内部或从Vim内部使用桥接的函数定义,这没有关系。在这个例子中,NormalizePath同时从Python和Vim调用。
python << END
import os.path
from vim_bridge import bridged
@bridged
def NormalizePath(path):
return os.path.realpath(path)
@bridged
def RealPath(path):
# It does not matter if you call NormalizePath from here...
return NormalizePath(path)
END
" ...or from here
echo NormalizePath("/this/../or/./.././that/is/./a/.//very/../obscure/..//././long/./../path/name")
echo RealPath("..")
自vim_bridge 0.4版本起,函数名的大小写约定将自动转换为与Vim的约定(甚至可以说是要求,因为函数名必须以大写字母开头)。除了大小写外,在Python函数前加上下划线将导致该函数在Vim上下文中定义为以<SID>为前缀的函数(即一个“私有”函数,不能从脚本外部调用)。
python << eop
import os
import vim
from vim_bridge import bridged
@bridged
def public():
return "I am public."
@bridged
def _private():
return "I am private (available in the current script only)."
@bridged
def my_name_is_auto_converted():
return "In Python, I'm called my_name_is_auto_converted, " + \
"but in Vim, I'm called MyNameIsAutoConverted :)"
@bridged
def _long_private_name():
return "I'm private, and my case is converted automatically."
eop
echo Public()
echo s:Private()
echo MyNameIsAutoConverted()
echo s:LongPrivateName()
项目详情
关闭
vim_bridge-0.6.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e84221eea039ad619b676f19ace32da092ff6acdcefed7ebb457f893aa051edb |
|
| MD5 | a9ed129924659c16c92ccbf71247d594 |
|
| BLAKE2b-256 | 45d75541360d1151a38089b25c313db00dea10e41d0384086a4b4862679c6b34 |