我有这个 vimscript 功能
function! Env()
redir => s
sil! exe "norm!:ec$\<c-a>'\<c-b>\<right>\<right>\<del>'\<cr>"
redir END
return split(s)
endfunction
这个函数是从这个问题中获得的:
How to list all the environment variables in Vim?
当我这样做时,:call Env()
我看不到任何输出,但:echo Env()
将所有环境变量的名称显示为输出。
我宁愿以某种方式复制并粘贴此输出。我知道:redir
。然而这不起作用:
:redir @A
:echo Env()
:redir END
"ap
而是粘贴一个空白行。
我已经尝试了许多:redir
命令组合(到寄存器和/或文件)和变体call Env()
但没有成功。这是因为生成的输出来自调用函数吗?我认为这可能是因为该函数返回一个列表,但两者:echo string(Env())
都没有捕获:redir
。
编辑:这是我从下面的答案中使用的修改后的解决方案。
function! Env()
redir => s
sil! exe "norm!:ec$\<c-a>'\<c-b>\<right>\<right>\<del>'\<cr>"
redir END
let @s = string(split(s))
endfunction
然后可以执行:call Env()
然后"sp
粘贴。
相关问题:
如何将 ex 命令输出重定向到当前缓冲区或文件?