Linux 在vim中读取手册页而不使用临时文件的方法是什么
我希望能够阅读vim中的手册页。出于某种原因,vim似乎无法通过管道读取程序的输出(即“(man ls)| vi”似乎不起作用,可以解释原因的人会得到额外的分数),为了解决这个问题,我使用了以下小脚本:Linux 在vim中读取手册页而不使用临时文件的方法是什么,linux,unix,vim,vi,manpage,Linux,Unix,Vim,Vi,Manpage,我希望能够阅读vim中的手册页。出于某种原因,vim似乎无法通过管道读取程序的输出(即“(man ls)| vi”似乎不起作用,可以解释原因的人会得到额外的分数),为了解决这个问题,我使用了以下小脚本: tempo = `mktemp` man $1 > $tempo ; vi $tempo 这个脚本使用临时文件,我想它工作得很好,但是我想知道是否有一种在vim中读取手册页的好方法,而不必创建临时文件。您的示例代码是错误的 tempo=`mktemp` man $1 >
tempo = `mktemp`
man $1 > $tempo ; vi $tempo
这个脚本使用临时文件,我想它工作得很好,但是我想知道是否有一种在vim中读取手册页的好方法,而不必创建临时文件。您的示例代码是错误的
tempo=`mktemp`
man $1 > $tempo; vi $tempo
但你真的只需要
man $1 | vi -
出于某种原因,vim似乎无法通过管道读取程序的输出[…]
根据手册页,您需要指定一个-
文件,以便从标准输入读取该文件;因此:
man ls | vi -
如果这不起作用,您可以尝试使用流程替换:
vi在我的系统(MacOSX)上,我发现上面的控制字符在输出中。相反,我使用了:
export MANPAGER="col -b | vim -MR - "
那就举个例子
man vim
vim选项关闭修改缓冲区并使其为只读。如果您尝试使用“:q”退出,这将停止vim的抱怨(当然可以使用:q!,但也可以设置选项)
这对于一般使用也很方便-我有以下几点。为了完整起见,-c命令命名缓冲区
alias vimpager="vim -MR -c 'file [stdin]' -"
Vim在其运行时文件中包含一个手册页查看器,:man
将这一行放在vimrc中:
runtime! ftplugin/man.vim
现在,您可以通过运行:man
来阅读Vim中语法突出显示的手册页。例如:
:Man 3 printf
更好的是,您可以将光标放在缓冲区中的一个单词上,然后按K
(\K
)查看该单词的手册页
有关完整的使用和安装说明,请参阅。默认情况下,vim从stdin读取vimscripts(=vim命令),而不是输入文件。这就是为什么您不能直接将man
输出管道输送到vim;正如其他人提到的,您必须使用vim-
使vim从stdin读取
但是,脚本也很有用:
vim test.txt <<EOF
:%s/[aiueo]/X/g
:wq! output.txt
EOF
vim test.txt我有一个更好的解决方案,就是我使用的,它是这样的:
/bin/sh -c "unset PAGER;col -b -x | vim -R -c 'set ft=man nomod nolist' -c 'map q :q<CR>' -c 'map <SPACE> <C-D>' -c 'map b <C-U>' -c 'nmap K :Man <C-R>=expand(\"<cword>\")<CR><CR>' -"
/bin/sh-c“取消设置寻呼机;col-b-x | vim-R-c'set ft=man nomod nolist'-c'映射q:q'-c'映射'-c'映射b'-c'映射K:man=expand(\“\”)”
希望您会喜欢。以下是我所做的,我用这个在.bashrc中创建了函数
vman() { vim <(man $1); }
vman()
vman() {
export MANPAGER="col -b" # for FreeBSD/MacOS
# Make it read-only
eval 'man $@ | vim -MR +"set filetype=man" -'
unset MANPAGER
}
用法:
vman ls
您还可以在c函数上按shift-k
打印手册页您可以始终对信息页使用info
命令并执行info{cmd}vim
关于插件,有很多很好的答案,值得一提的是*提供了一套方便的功能来打开和阅读手册页:
根据文档查看手册页
:Man printf
-以拆分方式打开printf(1)
手册页
:Vman 3 putc
-以垂直拆分方式打开putc(3)
手册页
:人优先权
-
手册页名称的命令完成
*在GitHub上提供:。谢谢,回答很好,解释也很好。我以后一定会更仔细地阅读手册:)@Maksim:不客气!顺便说一下,许多其他实用程序也使用-
来表示“标准输入”。我想您不需要使用太多,因为如果您不指定任何文件名,通常他们也会使用标准输入作为默认值。vi
在这方面是一个例外,这可能会让人困惑。:-)是一个方便的vim插件,它包装了该插件的功能,以便您也可以从命令行打开手册页(没有首先打开Vim)这一个变为私有,看起来在jez/Vim supermanI有一个。我认为这应该是答案,因为它回答了如何在Vim中阅读手册页的问题。在正常的man调用中不要求您更改任何内容的额外积分。这是一种更好、更干净的方式IMHO.:+1:
vman ls