のような行があります
abcdefgjoin!
abcdef
no join
abcdefgjoin!
行が正規表現^a.+g$と一致する場合 次に、それらを参加させたいので、次のようになります。
abcdefgjoin!
abcdef
no join
abcdefgjoin!
VIMでそれを行う方法はありますか? ?
承認された回答:
通常モードでは、J (jとは異なります 、カーソルを1行下に移動します)は、行をそのすぐ下の行と結合するために使用されます。ただし、デフォルトでは、最初の行の終わりにスペースが追加されます。必要な結果を得るには(スペースを追加せずに行を結合する)、gJを使用する必要があります。 。
exモードでノーマルモードコマンドを使用するには(:を押して入力します) 通常モード中)、normalを使用する必要があります 指図。 :h normalを参照してください vim内。したがって、パターンに一致する次の行を操作するには、次を使用します(デフォルトでは、+をエスケープする必要があることに注意してください) 元のviの古い正規表現エンジンとの互換性を維持した結果、vimの正規表現で動作させるには):
:/^a.\+g$/normal gJ
すべてで作業するには パターンに一致する行の場合、:globalを使用します コマンド(:h :gを参照) vim内)そのように:
:global/^a.\+g$/normal gJ
または、より簡潔に:
:g/^a.\+g$/norm gJ
exコマンドjoinを使用することもできます (:h :joinを参照してください )タイピングをわずかに減らして同じことを実現する(! 最後に、この場合、joinに通知します 最初の行の終わりにスペースを挿入しないでください。
:g/^a.\+g$/join!