如何使用 ed 的“插入”命令在一行上插入一个单独的点?

如何使用 ed 的“插入”命令在一行上插入一个单独的点?

如何使用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) 会议推特帖子, 是输入任意其他单个字符,然后将该字符替换为句点:

  1. xEnter
  2. .Enter
  3. s/./.

相关内容