是否可以在vim窗口中显示可怕的“更多”列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在vim窗口中显示可怕的“更多”列表?相关的知识,希望对你有一定的参考价值。

在vim,neovim中,当获取映射列表(例如:map),或者查看自定义或系统定义的变量(:let或:set)时,结果显示在“更多”的寻呼机窗口中。

可能有一些暗淡的时间原因(在vim中)'more'用于显示数据 - 而不是vim。但我和其他数百万人想知道的是:如何让它停止!(?)

如果,因为“原因”,vim只是无法显示这些数据 - 在vim中 - 那么如何使用第三个千年的某些解决方案,例如“少”,而不是可怕的“更多”?

答案

你可以redir Vim输出,这是一个糟糕的系统,但它的工作原理。

redir @a
silent map
redir end

然后打开一个新的缓冲区并粘贴一个插入模式的内容:

ctrl-r a

您也可以为此创建自定义命令,以使地图成为动态字符串输入。

另一答案

为了扩展Andy Ray的答案,这里是a custom command,它将把Vim或外部命令的输出重定向到暂存缓冲区:

function! Redir(cmd)
    for win in range(1, winnr('$'))
        if getwinvar(win, 'scratch')
            execute win . 'windo close'
        endif
    endfor
    if a:cmd =~ '^!'
        execute "let output = system('" . substitute(a:cmd, '^!', '', '') . "')"
    else
        redir => output
        execute a:cmd
        redir END
    endif
    vnew
    let w:scratch = 1
    setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile
    call setline(1, split(output, "
"))
endfunction

command! -nargs=1 Redir silent call Redir(<f-args>)

用法:

:Redir hi         " show the full output of command ':hi' in a scratch window
:Redir !ls -al    " show the full output of command ':!ls -al' in a scratch window

:Redir在行动:

:Redir in action

它能做什么:

  1. 关闭先前执行:Redir创建的任何临时窗口。
  2. 获取所需命令的输出。
  3. 在垂直窗口中打开一个新缓冲区。
  4. 使新缓冲区成为临时缓冲区。
  5. 插入所需命令的输出。

以上是关于是否可以在vim窗口中显示可怕的“更多”列表?的主要内容,如果未能解决你的问题,请参考以下文章

vim Tlist命令

Vim Taglist 标签上的黄色高亮显示

是否可以在 Vim 中显示缩进指南?

vim-rest-console在一行中显示JSON

当我在vim中填写git commit消息时,如何在文件列表中显示不同的颜色

Vim 8.1 发布,支持在 Vim 窗口中运行终端