GNU/Linux >> Linux の 問題 >  >> Linux

行がViのドキュメント全体の正規表現と一致する場合に次の行に参加するにはどうすればよいですか?

のような行があります
abcdefgjoin!
abcdef
no join
abcdefgjoin!

行が正規表現^a.+g$と一致する場合 次に、それらを参加させたいので、次のようになります。

abcdefgjoin!
abcdef
no join
abcdefgjoin!

VIMでそれを行う方法はありますか? ?

承認された回答:

通常モードでは、Jjとは異なります 、カーソルを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!

Linux
  1. コマンドラインでの毎日のBashのヒント

  2. sudoにパスワードを長く覚えさせる方法

  3. OdとHexdumpのデフォルトの行の長さを変更するにはどうすればよいですか?

  1. 現在のブートで指定された Linux カーネルのコマンド ライン パラメータを表示するにはどうすればよいですか?

  2. Linux でマニュアルページ全体を検索するには?

  3. コマンドラインから IP アドレスを取得するにはどうすればよいですか?

  1. Linuxコマンドラインに関する8つのヒント

  2. コマンドラインを使用してMySQLでデータベースを作成する方法

  3. エラーが発生したときに Bash で行番号を見つけるにはどうすればよいですか?