私はこのvimscript関数を持っています
function! Env()
redir => s
sil! exe "norm!:ec$\<c-a>'\<c-b>\<right>\<right>\<del>'\<cr>"
redir END
return split(s)
endfunction
この関数は、次の質問から取得されました:
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
てから貼り付けることができます。