2011-05-27 8 views
5

公式VimのPythonインタフェースのpythonでのバッファの修正は基本的に、非常にシンプルであることdocumentation状態、:私はそれをしようとするときPythonスクリプトでVimバッファを変更するには?

: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を使用しています]

答えて

3

私のために働く、 "Hello World"はバッファに挿入されます。私はバージョン7.3.162

EDIT私は、例えば、パイソンに関連する多くの問題を参照してくださいif_python.cためのHGログで探して

を使用してい+python

でコンパイルしたあなたのvimでありますこの1つ:

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) 

どのバージョンを使用していますか?

+0

はい、そうです。 –

+0

私は混乱しています。確かに、問題はあなたが 'buffer [0] =" helloを実行しようとしたときです(例えば、 ':py print vim.current.buffer [0]') ? –

+0

私はAPIを正しく理解していると確信しています.VimやPythonにいくつかのバグがあります。このバグは、最新のVim 7.3.206で再現できます。残りはStackOverflowではなくバグトラッカーに属します。 –

0

これはエンコードの問題である可能性があります。私は非常によく似た(しかし同じではありません)ユースケースに入りました。 VimのPythonの関数内:UTF-8にそれを強制することなく

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. 

、私はVimは(私にとって)Pythonのデフォルトの処理方法に関連していると思う同じ例外、US-ASCII文字列を取得します。 utf-8に変換した後は正常に動作します。私はこれが役立つことを願っています

関連する問題