[Bug 270048] nvi(1) errors when g//!{cmd} modifies the number of lines
Date: Wed, 08 Mar 2023 20:49:02 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270048 Bug ID: 270048 Summary: nvi(1) errors when g//!{cmd} modifies the number of lines Product: Base System Version: Unspecified Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: freebsd@tim.thechases.com To replicate $ yes hello | head -50 | fmt -100 > wide_lines.txt $ vi wide_lines.txt :.!fmt correctly formats the first line as expected. However attempting to reformat each individual line with: :g/^/.!fmt errors with """ +=+=+=+=+=+=+=+ Illegal address: only 6 lines in the file. Error: unable to retrieve line 7; 4 lines added; 2 lines deleted Press any key to continue: """ (the "4 lines added; 2 lines deleted" and possibly the "Press any key to continue" might be a screen artifact from prior to the error message since it's not in reverse video like the rest of the error) Expected behavior: each individual line gets passed through fmt(1) to reformat it. Observed behavior: an error about the number of lines in the file and only a portion of the lines are properly reformatted. It sounds like something isn't re-calculating the number of lines in the file before/after a "!{cmd}" invocation within the context of a :g// command. Or perhaps the lines marked by the g:// don't get updated after reading data output of an external "!{cmd}" FWIW, this manifests in OpenBSD's nvi(1), too. (bug encountered when using composing a mail message, wanting to reformat long lines individually rather than by paragraph) -- You are receiving this mail because: You are the assignee for the bug.