我有一些bash腳本,我需要從Vim腳本中檢索它們的輸出。可能嗎?如果是,如何?VimL:捕獲`exec`命令的輸出,在一個變量內是可能的?
3
A
回答
7
要執行一個外部命令和捕獲其在Vim可變輸出,使用system()
:
:let hostname = system('hostname')
該命令是通過配置'shell'
調用;只要你的Bash腳本有適當的shebang行(#!/bin/bash
),一切都應該沒問題。
如果你最終想要插入輸出到當前緩衝區,則可以選擇直接使用:read !{cmd}
:
:read !hostname
1
作爲一個替代方法,注意let
語句的默認簽名是:
let {var} = {expr}
其中右側必須是表達式。這意味着let
無法捕獲execute
命令的輸出。換句話說,嘗試:
let {var} = {cmd}
將產生一個錯誤。一種解決方法是使用redir
命令,該命令的語法如下:
redir => {var}
{cmd}
redir end
讓我們來看看它是如何工作的實踐。首先嚐試:
let somevar = echo "The current locale settings are: " . v:lang
返回錯誤E15:無效的表達。現在用:
redir => somevar
echo "The current locale settings are: " . v:lang
redir end
錯誤消失,且變量被成功地分配,這是由打印其值驗證:
echo somevar
與輸出:
The current locale settings are: en_US.UTF-8
相關問題
- 1. 捕獲遠程命令在shell腳本內的變量輸出
- 2. 在Unix中捕獲變量的命令行輸出
- 3. 發送perl的變量命令並捕獲輸出
- 4. 將「Move」命令的輸出捕獲到批處理變量中
- 5. Unix-Expect:將命令的輸出捕獲爲期望變量
- 6. php:捕獲命令輸出
- 7. 捕獲輸出命令CMD
- 8. PUT命令輸出到一個變量
- 9. 通過ssh捕獲輸出爲一個變量用於運行命令
- 10. Bash - 捕獲命令的輸出
- 11. 在ncurses中捕獲命令行輸出
- 12. 捕獲Windows命令行輸出的前4個字符到變量
- 13. 分配一個命令輸出給一個變量(bash)的
- 14. 獲得一個Perl命令輸出到變量殼
- 15. 重定向從find命令-exec輸出變量
- 16. 在configure.ac中定義一個變量作爲命令的輸出
- 17. 將shell命令的輸出存儲在一個變量中
- 18. 如何以Commons Exec的字符串形式捕獲命令的輸出?
- 19. bash命令輸出改變時存儲在一個變量
- 20. 如何捕獲命令行中的所有命令和輸出?
- 21. 在puppet exec命令中使用變量?
- 22. 存儲perl的命令的輸出到一個變量
- 23. 如何從shell命令捕獲輸出?
- 24. 從git命令捕獲輸出?
- 25. 從java捕獲ssh命令輸出
- 26. 捕獲所有命令輸出
- 27. zsh函數捕獲命令輸出
- 28. Bash遞歸捕獲命令輸出
- 29. 捕獲(失敗)mklink命令輸出
- 30. 如何輸出EXEC變量