2016-07-27 3 views
2

私はvim-script関数呼び出しScreenShellSend("some string")を持っています。この関数に正しい文字列を与えるために複数の行をフィルタリングしたいと思います。あなたがあなたの目標を達成するために、次のsubstituteコマンドを使用することができvimのいくつかのマルチライン文をフィルタリングする方法

anExampleOfFunction:{[x;y] x: doing some stuff; :y; }; someVariable: 5; anotherFunction:{[x] 2*x}; 
+1

マッピングやコマンドだけでなく、元のテキストと期待されるテキストの例を追加することもできます。それで、あなたがしたいことを理解し、それに答えるのは簡単です – SibiCoder

+0

各行に行き、 'f /'を押してコメントを見つけ、 'df $'を押して終わりを削除します。次に、Jを押して、次の行と結合します。 3Jを押すと現在の行が次の2行と結合されます。たとえば – SibiCoder

答えて

4

:へ

//@brief: an example => TO LINE IS REMOVED 
anExampleOfFunction:{[x;y] 
    x: doing some stuff; //a comment => after // is removed 
    //a comment => this is removed 
    :y; 
}; 
someVariable: 5; 
//another comment => this is removed 
anotherFunction:{[x] 2*x}; 

私から行くことができますどのよう

、例えば、この

:%s`\(//.\+\)\?\n`` 

コメントと改行が削除されます。

ご例えば

、それはあなたの次の結果が得られます:

anExampleOfFunction:{[x;y] x: doing some stuff;   :y; }; someVariable: 5; anotherFunction:{[x] 2*x}; 

編集:ここでは

は(それが代わりにその引数で動作しますを除いて)同じことを行う関数です。

function! Format(lines) 
    let lines = [] 
    for line in a:lines 
     let new_line = substitute(line, '//.*', '', '') 
     call add(lines, new_line) 
    endfor 
    return join(lines) 
endfunction 
+0

ですが、これは正確には私が尋ねるものではありません。vim-script関数を基本的にはスクリプトのように呼び出すようにします: 'your_function(getline(" '<", "'> "))'それは自明ではないかもしれませんが、私はvimスクリプトについて何も知らないので、私はバウンスしています。 – statquant

+0

あなたが要求したとおりに機能する関数を含めるように私の答えを編集しました。 – antoyo

+0

それは働く、途中で賞金 – statquant

関連する問題