2017-11-23 4 views
1

exコマンドの検索パターンを練習しようとしていて、通常はそれらを使ってマクロを使ってやることをしようとしています。可能だ。Vim:検索パターンの次の行/前の行と一致

public myFunc(): any { 
    return {}; 
} 

そして、私は(機能の後にカーソルで)このコマンドでそれをヤンクしようとしている:

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?;/}$/y

これを

私はこのようになりますいくつかのコードを持っています期待どおりに動作し、私がそこで述べた機能と一致します。

私は何をしたいのですが、方法を見つけられなかったのは、最初の行と最後の行を無視することです(私はただ関数の内容が必要です)。私はそれが何とか(おそらく+/-検索のオフセット?)それを行うことが可能だと思うが、私はまだ運がなかった。

誰でもこれを行う方法を知っていますか?ありがとう!

答えて

2

はい、適切なオフセット:help search-offset)を追加するだけです。基本的に2つの検索範囲(現在の位置から上に1つ、下から1つ)を指定して範囲を定義します:?...?;/.../。ターゲットを除外するには、1を加算/減算するだけです。これは、オフセットに検索を追加することによって行われます:?...?+1;/.../-1。あなたの例に適用される:

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?+1;/}$/-1y 
+0

のようにこれは私が念頭に置いていたまさにですが、私はできませんでしたありがとう! – uorbe001

0

改行を挿入するには(Enter)を使用し、以下のCtrl-v Enter

:normal ?public^Mjwyiw 

説明

:normal ............ in normal mode 
?public ............. search backward for public 
^M .................. Enter 
j ................... move to the line below 
yiw ................. yank inner word 
関連する問題