什么是在不使用临时文件的情况下在vim中读取手册页的方法

MYV*_*MYV 20 unix linux vi vim manpage

我希望能够在vim中阅读手册页.由于某种原因,似乎vim无法通过管道读取程序的输出(即'(man ls)| vi'似乎不起作用,奖励指向可以解释原因的人),并获得围绕这个,我一直在使用以下小脚本:

tempo = `mktemp`
man $1 > $tempo ; vi $tempo
Run Code Online (Sandbox Code Playgroud)

这个脚本使用的临时文件,我觉得工作正常,但我想知道是否有一个很好的方法来阅读vim中的手册页而不需要制作临时文件

glt*_*lts 35

Vim :Man在其运行时文件中包含一个手册页查看器.

把这一行放在你的vimrc中:

runtime! ftplugin/man.vim
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过运行在Vim中读取语法高亮的手册页:Man.例如:

:Man 3 printf
Run Code Online (Sandbox Code Playgroud)

更好的是,您可以将光标放在缓冲区中的单词上,然后按<Leader>K(\K)查看该单词的手册页.

有关:h find-manpage完整用法和安装说明,请参阅.

  • [Vim SuperMan](https://github.com/Z1MM32M4N)是一个方便的vim插件,包装了该插件的功能,因此您也可以从命令行打开手册页(无需先打开Vim) (2认同)

rua*_*akh 30

出于某种原因,似乎vim无法通过管道读取程序的输出[...]

根据man-page,你需要指定一个文件-来让它从标准输入中读取; 所以:

man ls | vi -
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以尝试使用进程替换:

vi <(man $1)
Run Code Online (Sandbox Code Playgroud)

它会创建一种伪文件并将其传递给vi.

  • @Maksim:不客气!顺便提一下,许多其他实用程序也使用`-`来表示"标准输入".我想你不需要那么多使用它,因为如果你没有指定*any*filename,它们通常也会使用标准输入作为默认值.`vi`在这方面是个例外,这可能令人困惑.:-) (3认同)

Ror*_*ter 10

在我的系统(Mac OS X)上,我发现上面的左控制字符在输出中.相反,我用过:

export MANPAGER="col -b | vim -MR - "
Run Code Online (Sandbox Code Playgroud)

然后只是例如

man vim
Run Code Online (Sandbox Code Playgroud)

vim选项关闭修改缓冲区并使其为只读.如果您尝试以":q"退出,这会阻止vim抱怨(您可以使用:q!当然,您也可以设置选项).

这对于一般用途也很方便 - 我有以下内容.-c命令命名缓冲区,只是为了完整性.

alias vimpager="vim -MR -c 'file [stdin]' -"
Run Code Online (Sandbox Code Playgroud)

  • 从几天前开始,在 Arch Linux 上,使用“col -b”的命令在输出中留下了诸如“1m”或“4m22m”之类的痕迹。`MANPAGER='nvim +Man!'` 有效。我在[此处]了解了该插件(https://unix.stackexchange.com/questions/487415/viewing-man-pages-in-vim#612930)。有关使用方法,请参阅插件的[文档](https://neovim.io/doc/user/filetype.html#ft-man-plugin)(它支持导航)。 (3认同)
  • 改编自[此处](https://muru.dev/2015/08/28/vim-for-man.html),使命令适用于 Linux 上的 Neovim 并将窗口标题 (`titlestring`) 设置为名称手册页,例如 `bash(1)`: `export MANPAGER='nvim -c "%! col -b" -c "set ft=man nomod | let &amp;titlestring=$MAN_PN"'` (2认同)

nac*_*bre 7

这就是我所做的:我在 .bashrc 中创建了一个函数:

vman() { vim <(man $1); }
Run Code Online (Sandbox Code Playgroud)

当我调用vman它时,会自动调用 Vim 显示手册页。效果很好。