是否可以在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
创建的任何临时窗口。 - 获取所需命令的输出。
- 在垂直窗口中打开一个新缓冲区。
- 使新缓冲区成为临时缓冲区。
- 插入所需命令的输出。
以上是关于是否可以在vim窗口中显示可怕的“更多”列表?的主要内容,如果未能解决你的问题,请参考以下文章