2011-12-23 2 views
2

expand("<cWORD>")で現在の単語を取得し、結果の文字列を処理した後、現在の単語をその単語に置き換えようとしています。vimスクリプトでカーソル下の単語をどのように置き換えるのですか?

どうすればいいですか?

EDITソースが追加されました。私はPythonでそれを書いた。

cur_word = vim.eval('expand("<cWORD>")') 
parts = cur_word.split('.') 
if parts: 
    obj, accesses = parts[0], parts[1:] 
    result = obj + ''.join("['%s']"%a for a in accesses) 
    # how do I replace the current word with result? 
+0

hh。現在の単語をそれ自体に置き換えようとしていますか?例を与えるために気をつけますか? – sehe

+0

これは処理後に元に戻すことを意味します。 – satoru

+0

私の答えが – sehe

答えて

1

を、あなたはノーマルモードコマンドを実行することができ、あなたのケースでは、

vim.command("normal BcW%s" % result) 

は、トリックを行います。

4

編集

あなたはこの望んでいたように見えます:次のテキストのための

viW 
:s/\%V\.\(\w\+\)\%V/\="['" . submatch(1) . "']"/g 

例えば、2行目curosr:

x = a.get.property; 
x = a.git.another.property; # cursor on the first letter 'e' 

結果

x = a.get.property; 
x = a['git']['another']['property']; 

はおそらく、その後、

  1. ヤンク一言
  2. 移動(あなたが言及していない)カーソル
  3. カーソルの下の単語_replaceによってあなたに望んでいました以前にヤンクされた言葉?
  4. Yあろう

Iだから例えばW (周りにカーソルを移動させる) ViはWP

:今

the lazy cow mooned over the racy hump 
cursor here: ----> +   

YをやっW(ヤンクインナーWORD)、F(バック:)

the lazy cow mooned over the racy hump 
    --> +   

V iwPは現在WORD置き換え:VimのためのPythonインターフェースで

the over cow mooned over the racy hump 
    --> + 
+0

に変更されました。これは正しいので、あなたのyをv。と+1で置き換えました。 – Benoit

+0

いいえ、私はカーソルの下にある単語の内容を取得し、それに何かをします(例えば、末尾の "X"を追加します)。私はコマンドモードでこれを行う方法を知っていますが、私はどのように関数内でこれを行うか分かりません。 – satoru

+0

私の答えを更新しました – sehe

関連する問題