2011-10-17 14 views
5

vimヘルプファイル(特にinsert.txtなど)には記載されていないが、本来はむしろ頻繁に必要性が感じられる補完タイプがあります。私は私のファイルに "素晴らしい"と "SuperCrazyAwesome"という言葉があるとしましょう。私は本当にSuperCrazyAwesomeであるべきAwesomeのインスタンスを見つけるので、単語の先頭に移動し、挿入モードに入り、「SuperCrazy」とタイプする必要があります。vimの内部コード補完

"S"を入力して "SCrazy"を作成してから、完了ホットキーまたは2回押すだけでカーソルの左側にあるもの( "S")を見つけられるはずです。ファイル内のすべての単語( "/ S \ w * Crazy /")に対してこれを正規表現にして、補完ポップアップメニューを表示してください。

実際の補完システムを使用したいと思います。関数を使用する "ユーザー定義の"補完が存在し、与えられたリストからの置換のための良い例があります。しかし、私はこれを実現するために必要な多くの事柄を追跡することはできません:

  1. vim関数からファイル内のすべての単語のリストを取得するにはどうすればよいですか?
  2. vimの完全な機能のように、すべてのバッファ(ファイル名)の単語をリストできますか?
  3. 挿入モードで、カーソルの前後にある単語のテキストを取得するにはどうすればよいですか?
  4. 完了までは、カーソルまでではなく、単語全体を置き換えることができますか?

私はこれで2時間ほどでした。 this oneのようなデッドエンドを打ち続けると、カーソル位置とのマッチングのために私を\%#に導いてくれました。それは私にとってはうまくいかないようです。たとえば、\ w * \%#を検索すると、自分がどこにいるかに関係なく、自分が使用している単語の最初の文字のみが返されます。 \%#はアンカーしていないようです。

+0

厳密には関係ありませんが、[this](http://stackoverflow.com/questions/6548541/camelcase-expansion-in-vim-like-intellij-idea/6550628#6550628)からのヒントを得ることができます。現在のファイルから単語のリストを生成する関数の例とカスタム補完関数があります。私は今日、後で答えを出すつもりです。 –

+0

あなたのリンクは面白くてデータに富んだようです。私はそれを掘り起こすでしょう。ご協力いただきありがとうございます。 –

答えて

0

これまで、私はあなたの関連するキーワードを探しているあなたのタスクを実行する可能性がありますhttps://github.com/mjbrownie/swapitを書いた、あなたの希望する方法に正確に従っていません。何百ものマッチがあるなら、このシナリオでは落ちるでしょう。

主に2〜10個の可能なシーケンスマッチに役立ちます。

あなたはリスト

定義しますSwapList awesomes素晴らしいMoreAwesome SuperCrazyAwesome FullyCompletelyAwesome UnbelievablyAwesome

をしてインクリメンタデクリメンタキーと一致した(C + a)から(c + x)があり

を移動します私がvim.orgとgithubで知っているスワップワードのようなサイクリングタイプのプラグインです。

ここでの利点は、単語を正規表現と一緒にグループ化する必要がないことです。

+0

リンクをありがとう、マイケル。私はそれを見てみる必要があります。 vimに付属している類義語辞典の完成品を見たことがありますか?私はリストに載っている問題を解決するために、今日検索しました。それは関連する単語を定義することを可能にします。シソーラスのファイルで考えて、通常の/のホットキーとマッチさせます。 –

+0

私はコードライブラリのために使っていたのですが、良いアイデア。あなたは設定ファイルを見て、SomeKeyword for AnotherKeywordをスワップしていくつかのキーワードを見ているが、すべてではないというアドホックリファクタリングに役立つかもしれない。リストをファイルに追加する必要なしに、リストgo/Keywordを設定して(c + a)... n ... n.n..n。(c + a)に移動するだけです。 – michael

+0

間違いなく助かりました。ありがとう! –

0

私は、コンポーネントごとに異なるすべての機能でかなり長いCamelCasePrefixesを使用してサードパーティのライブラリを操作すると、何年も前のようなことを書きました。しかし、これはGit Hub時代以前のものだったが、それは失われた宝石だと思ったが、検索エンジンによれば、私は完全なお尻ではなく、Vim wikiに投稿したという。

ここにある:http://vim.wikia.com/wiki/Custom_keyword_completion

まさに 'MKW' という意味を私に聞かないでください。いい考えはありません。

これは、カーソルまでの単語だけを検索しているので、あなたのニーズにいくらか適応する必要がありますが、そのアイデアはそこにあります。現在のバッファに対してのみ機能します。すべてのバッファを繰り返し処理すると、インデックスが作成されないため、処理が遅くなります。これらの目的のために、私は外部grepに行きます。

関連する問題