To replace a character with a newline in Vim, use the substitution command (:s) with \r in the replacement string. Here’s how:
Basic Syntax
:%s/<CHARACTER>/\r/g
%: Apply to the entire file (remove for current line only).<CHARACTER>: The character you want to replace (e.g.,,,;, etc.).\r: Represents a newline in the replacement string.g: Replace all occurrences (not just the first one in each line).
Examples
1. Replace commas (,) with newlines:
:%s/,/\r/g
Before: Hello,World
After:
Hello
World
2. Replace semicolons (;) with newlines:
:%s/;/\r/g
3. Replace spaces with newlines:
:%s/ /\r/g
Edge Cases
Replace a literal backslash (\):
:%s/\\/\r/g
- Use
\\to match a single backslash.
Replace a special regex character (e.g., . or *):
:%s/\./\r/g # Replace literal `.` with newline
:%s/\*/\\r/g # Replace `*` with newline
Notes
- Visual Selection: Replace in a selected block:
- Highlight text in visual mode (
V). - Run
:'<,'>s/,/\r/g.
- Confirmation: Add
/cto confirm each replacement:
:%s/,/\r/gc
- Line Endings:
\rworks for Unix (\n), Windows (\r\n), and Mac (\r) line endings.
Common Mistakes
- Using
\ninstead of\r: \ninserts a null byte (^@), not a newline.- Fix: Always use
\rfor newlines in replacements.
Summary
- Use
\rin the replacement string to insert a newline. - Escape special regex characters (e.g.,
.,*,\) with\. - Use
%sfor global replacements or limit to visual selections.