のような行があります
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!