Как изменить буфер Vim с помощью скрипта Python? - PullRequest
5 голосов
/ 28 мая 2011

Официальный интерфейс 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] работает просто отлично. Я что-то здесь упускаю? Почему я не могу изменить буфера vim с помощью скриптов python?

[Примечание:Я использую последний Vim 7.3]

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

У меня работает, "Hello World" вставлен в буфер. Ваш vim скомпилирован с +python

Я использую версию 7.3.162

EDIT

просматривая журнал 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)

В какой версии вы находитесь?

0 голосов
/ 01 ноября 2011

Это может быть проблема с кодировкой. Я столкнулся с очень похожим (но не идентичным) вариантом использования, например, внутри функции Python vim:

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 для Python. После конвертации в utf-8 все работает нормально. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...