如何解决如何使用python脚本修改Vim缓冲区?
| 官方的Vim python接口文档指出,使用python修改缓冲区非常简单,基本上是::py import vim
:py vim.current.buffer[0] = \"Hello world\"
但是,当我尝试这样做时,python会引发异常:
Traceback (most recent call last):
File \"<string>\",line 1,in <module>
TypeError: bad argument type for built-in operation
只读访问(例如:py print vim.current.buffer[0]
很好用。我在这里缺少什么吗?为什么不能用python脚本修改vim缓冲区?
[注意:我正在使用最新的Vim 7.3]
解决方法
对我有用,\“ Hello World \”插入缓冲区。您的vim是用ѭ3编译的吗
我正在使用7.3.162版
编辑
在hg日志中查找
if_python.c
,我发现很多与python相关的问题,例如这个:
changeset: 2641:b803b2776880
tag: v7-3-062
user: Bram Moolenaar <bram@vim.org>
date: Tue Nov 16 19:26:02 2010 +0100
files: src/auto/configure src/configure.in src/if_python.c src/if_python3.c src/version.c
description:
updated for version 7.3.062
Problem: Python doesn\'t work properly when installed in another directory
than expected.
Solution: Figure out home directory in configure and use Py_SetPythonHome()
at runtime. (Roland Puntaier)
您在哪个版本上?
, 这可能是编码问题。我遇到了一个非常相似(但不完全相同)的用例,例如在vim python函数中:
buf = vim.current.buffer
names = [x.name for x in triggers] #encoded as a default python unicode,e.g. u\'foo\'
names = [x.encode(\'utf-8\') for x in names] # Force to utf-8
buf[:] = names #Now this works.
在不强迫它进入utf-8的情况下,我得到了相同的异常,我认为这与vim如何处理python的默认(对我来说)us-ascii字符串有关。转换为utf-8后,它可以正常工作。我希望这有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。