:p[rint] 在 vi​​m 中做什么?

:p[rint] 在 vi​​m 中做什么?

帮助文本对于该命令的作用有点模糊。

                    Print [range] lines (default current line).
                    Note: If you are looking for a way to print your text
                    on paper see |:hardcopy|.  In the GUI you can use the
                    File.Print menu entry.
                    See |ex-flags| for [flags].

我知道过去我曾多次错误地使用它来表示 :p[rev],但我从未听到过打印机的呼呼声。也没有出现任何奇怪的文件,我也没有发现我所在的行出现在标准输出中。

那么,打字呢?:打印在vim中做什么?

答案1

从历史上看,在“ed”编辑器中(其中许多核心:commands最终源自该编辑器)中,该行转到标准输出。

当然,由于 vim 是一个全屏编辑器,命令的输出不仅不会被处理到 stdout,而且会显示在窗口的底部。 (命令栏中有一行,多于一行 [技术上多于'cmdheight'] 会显示“按 ENTER 或键入命令继续”,多于屏幕上会显示的内容会出现提示-- More --。)

当您简单地键入时,:p您将看到(您可能没有注意到)您所在的行出现在命令栏中。

该命令本身并不是特别有用(当您正在编辑的行不会显示在屏幕上时,它在 ed 中稍微有用一些),但与其他寻址模式结合使用时会变得更有用。例如,:g/re/p(其中关于是任何正则表达式)经常被认为是命令名称的起源grep

答案2

它打印当前行或行范围。该:%p命令将打印整个文件(例如)。 “打印”并不意味着“在打印机上打印”(您引用的手册也指出了这一点),但可能与p例如sed和中的相应命令有更多关系ed

相关内容