vim - 如何在Vim中列出所有环境变量?

标签 vim environment-variables

当Vim启动时,它从操作系统中获取许多环境变量(如PATH),并且还设置了自己的环境变量(如MYVIMRC)。

如何列出或查看Vim可以理解的所有环境变量,以及它们在Vim内部的相应值?

最佳答案

在Vimscript中,没有设计的方法来获取列表
当前定义的环境变量。但是,有可能
利用Vim命令行完成功能获得一项。

考虑以下未完成命令的可能完成情况。

:echo $


不难看出,根据Vimscript语法,所有
完成是所有环境变量的名称。
wildchar键(默认为Tab)或
Ctrl + D将显示所有这些内容。

为了从脚本中获取完成列表,我们需要
克服其互动性。我建议的一个可能的把戏
本文中依靠特征的组合。他们中的第一个是
Ctrl + A命令。在命令行模式下,
快捷方式触发每个可用补全的插入
光标。插入的补全按字母顺序列出
并用空格隔开。

如果我们可以让Vim将这些完成内容直接打印到
命令行,我们可以通过重定向命令轻松捕获它们
:redir命令输出。但是我们要做的就是
副作用是引用用Ctrl + A插入的文本:
引用使其余的:echo命令成为字符串文字,
可以打印出来!

:echo 'NAME1 NAME2 NAME3'
NAME1 NAME2 NAME3


要以这种方式编辑命令行,用户可以输入:ec
:echo的别名)后跟$,按
Ctrl + A,键入',跳到
通过按Ctrl + B键将光标移到
按两次⇾(向右箭头键)以显示美元符号,
删除该$,最后插入'。相同的顺序
按键的使用可以很容易地以非交互方式复制
:normal命令。

将所有这些难题组合在一起,我们得到以下内容
功能:

function! Env()
    redir => s
    sil! exe "norm!:ec$\<c-a>'\<c-b>\<right>\<right>\<del>'\<cr>"
    redir END
    return split(s)
endfunction


为了使这种方法有效,必须使用以下命令编译Vim:
+cmdline_compl功能。

关于vim - 如何在Vim中列出所有环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175842/

相关文章:

windows - 从以系统身份运行的 Powershell 设置用户环境变量

vim - 有没有办法在 vim 中保存文件后静默运行 bash 命令?

file - 在 Vim 中将 DOS/Windows 行尾转换为 Linux 行尾

apache - 缺少 vim 缩进文件

vim 将 C-TAB/C-S-TAB 映射到 :bn and :bp

bash - 在 bash 中导出环境变量时何时使用括号?

vim - 在Vim中设置编辑范围

ios - 添加环境变量会影响 iOS 上的应用程序速度吗?

javascript - 如何将 Node 环境变量传递给 React Native JS 代码

ruby-on-rails - 我应该把我的 chromedriver 文件放在哪里?