如何使用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 <[email protected]>
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后,它可以正常工作。我希望这有帮助。