2011-01-17 22 views
5

私はVIMを使ってPythonをプログラミングすることから始めています。私はいくつかの問題に遭遇した、うまくいけば、誰かが私にこれを手伝うことができる。VIM + Python - "gd"コマンドが正しく動作しない

"gd"コマンドは、変数が現在の関数で定義され使用されている最初の場所に移動するはずです。私が理解していることから、関数名の先頭に移動し、変数名を検索するのと同じことです。

問題は、これをPython関数で試してみると、vimはファイル全体で変数の最初の出現を見つけます。

これがなぜ起こるのか、どのように修正できますか?

答えて

3

私はこの問題は、Vimが関数を処理する方法によるものだと思います。 [[のドキュメントから:セクションは何とかどこかのpythonファイル(私は彼らがセクションnroffの2文字のことになっているとこれが可能である確信していない)のために特別に定義されていない限り

      *[[* 
[[   [count] sections backward or to the previous '{' in 
      the first column. |exclusive| 
      Note that |exclusive-linewise| often applies. 

、これは仮定しますPythonファイルには関係ない最初の列には中括弧があるはずです。

私は、Vimのメーリングリストで、このためのプラグインや回避策があるかどうかを確認することをお勧めします。

nmap gd :let varname = '\<<C-R><C-W>\>'<CR>?\<def\><CR>/<C-R>=varname<CR><CR> 

これは、機能をよりエレガントに行うことができるが、これは動作するはずだけ迅速ハックだった:別の方法として、あなたは、このようなマッピングを定義することができます。これは、カーソルが上にある単語を保持する変数「VARNAME」を設定する関数にgdをマップdefのために逆方向に検索して、変数のために前方検索:

:let varname =    " Variable setting 
    '\<      " String start and word boundary 
    <C-R><C-W>     " Ctrl-R, Ctrl-W: pull in the word under the cursor 
    \>'      " Word boundary and string end 
    <CR>      " Enter - finish this command 
    ?       " Search backwards for... 
    \<def\>     " def but not undefined etc (using word boundaries) 
    <CR>      " Enter - Perform search 
    /      " Now search forward 
    <C-R>=      " Pull in something from an expression 
    varname<CR>    " The expression is 'varname', so pull in the contents of varname 
    <CR>      " Enter - perform search 
+0

"[[* *は以前のdef/classを検索するためのPythonファイルで動作します。私が知る限り、ftpluginの "python.vim"ファイルで "Python_jump"を実行するために再定義されています。 A(関連?)の問題は、「[[」は通常モードで正常に動作しますが、ビジュアルモードではうまく動作しません。私はそこにバグがあると思っていますが、私はまだ何かを逃してばかげているという希望を抱いています。 –

+0

'[[' 'はカスタムマッピングのためにPythonファイルで動作しますが、' gd'は '[[' 'の組み込みの実装に基づいています。 – DrAl

2

私はVimの中でのvarnameを再定義しませんでした構成、それは良い動作しますが、私はヴィムはPythonでコンパイルしている。 これは問題なのでしょうか?

VIMバージョン7.xをPythonのサポートでコンパイルしてインストールしましたか?これを確認するには、VIMに:python print “hello, world” と入力します。 E319: Sorry, the command is not available in this versionのようなエラーメッセージが表示された場合は、 を取得してください。

+0

これは驚くべきことですが、私はあなたがコマンドラインから任意のインタプリタを起動できるかどうかは分かりませんでした!ヒントをありがとう! vimでコンパイルされたものを ':version'と入力してチェックし、pythonフラグが存在することを確認することもできます。 –

+0

私はPythonのサポートを持っていません。私はWindows上で、vimのダウンロードページで見つかった単純な古いインストーラを使用しただけです。 Pythonをサポートしたバージョンを入手するにはどうすればよいですか? –

+0

私は最も簡単な方法は、事前設定を取得し、クリームから様々な強化ヴィムとバンドルされていると思います。 「クリームのレイアウトが気に入らず、それはすべてGUIのものです。それは私の速度を落としますが、それに付随するvimのバージョンは良いです」という「Windows Vimインストーラのクリームなし」があります。 http://cream.sourceforge.net/download.html –

関連する問題