Ed bookmarks disappear after a global replacement

If I make a bookmark in ed for an address by invoking k plus any other letter, I can return to that address later by invoking '+letter. I frequently make these bookmarks, especially when navigating a long document.

However, if I create such a bookmark and then perform a global substitution (such as g/vim/s//ed/g) when I try to return to the address I bookmarked it is gone and ed gives me Invalid address. This is strange because it is especially after invoking a global substitution that one would like to return to the place where one was previously because global substitutions reset dot to the last edited line.

Am I missing something here?

Asked By: Edman

||

The mark set with the k command is cleared when the line that it refers to is either deleted or modified. The mark is not cleared if the line is shifted by the deletion or insertion of other lines.

This is documented in the GNU ed manual (info ed) where it’s describing the k command:

[…] The mark is not cleared until the line is
deleted or otherwise modified. […]

The BSD ed manual has the same wording.

The POSIX standard text does not document this in relation to the k command, but says for the g command that…

[…] Any line modified by the command list shall be unmarked. […]

Answered By: Kusalananda
Categories: Answers Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.