如何使用ed
编辑器在一行上插入一个单独的点?通常,一行上的点本身结束插入;它能以某种方式逃脱吗?
答案1
不,您不能在一行中单独插入句点,因为这是ed
停止插入文本的指令;看到早期的其中之一编辑手册页(第 7 页):
通过在行首单独键入句点 (.) 即可退出输入模式。
您可以通过不单独输入句点来解决这个问题;例如:Space.Enter紧接着.Enter紧接着s/^ //
.您可以使用空格以外的任何其他字符作为标记,只要在后续s//
命令中将其配对即可。
句点不能单独插入;当追加、更改或插入一行时,ed
最终调用该append_lines
函数;该函数,在缓冲区.c,读取由换行符分隔的输入(通过get_stdin_line
)。作为其中的一部分,它会检查结果中是否只有句点(除了尾随换行符之外);下面,“ibufpp”是指向输入文本的指针,“size”是该缓冲区的长度:
if( size == 2 && **ibufpp == '.' ) { *ibufpp += size; return true; }
您可以在以下位置下载压缩的 tar 包:http://download.savannah.gnu.org/releases/ed/或查看Debian 的 ed 上游页面或者OpenBSD 的 ed 页面相应的代码在主程序。
另一种选择,发现于ed(1) 会议推特帖子, 是输入任意其他单个字符,然后将该字符替换为句点:
- xEnter
- .Enter
s/./.