[prog] replacement strings
sam at nipl.net
Tue May 25 11:03:19 UTC 2010
> I've been spending hours trying to find something that does the same
> thing as TextPad's join command. (I really want to get rid of my need
> for wine.)
Vim has a join command, you can run it with shift-J: select some lines in
"visual mode" (v or V), then press J.
I assume emacs has some join-lines command or similar too.
> It joins highlighted text into single lines, keeping paragraphs
aha I see what you mean, that's different.
This perl one-liner can do it. It chomps off all the newlines, but if it sees
a blank line, it outputs a double newline.
perl -pe 'chomp; print "\n\n" if $_ eq "";'
If you want it to deal with poetry, I guess you could indent your poetry and do
perl -pe 'chomp unless /^ /; print "\n\n" if $_ eq "";'
or otherwise think of how you want that to work.
> The closest I've been able to find is the fmt command (part of the Gnu
> coreutils, and should be in most linuxes). Unfortunately that has an upper
> limit of 2,500 characters in a paragraph
I guess fmt wasn't written with that in mind, but it is consistent with its
function. It's a bit bogus to have a limit like that, I thought the GNU tools
got rid of such arbitrary limits. It should have an "unwrap" option where it
never breaks a paragraph, then it would do what you want. Might be a case for
patching fmt, it is open-source after all.
You could try the perl modules Text::Format or Text::Wrap too.
In vim and other decent editors, you can apply any script to a chunk of text.
For example, in vim, highlight some text with V (visual line mode) then type
:!fmt -w 20
You can undo it with u.
More information about the Programming