如何在Vim脚本中使用Windows环境variables?

如何在Vim脚本中使用Windows环境variables?,第1张

概述如何在Vim脚本中使用Windows环境variables?

我有一个调用外部shell脚本的Vim脚本,并将输出读入当前缓冲区。 它在Unix系统中工作正常。 我试图使脚本 *** 作系统不可知,所以我希望它也适用于windows用户。 以下是脚本中的相关行:

:exe ":0r !$HOME/bin/shell_script"

根据Vim的文档, $HOME应该适用于windows用户。 在Win XP上以命令模式使用gvim,

:echo $HOME

确实产生“C: documents and Settings my_user”。

但是,我的Vim脚本(调整为反斜杠)在windows机器上失败,并在DOS cmd.exe窗口中显示一条消息

更改anaconda中的默认环境

在windows上保存依赖于机器(不是用户)的ini文件的位置

windows的JAVA HOME问题

在batch file中设置windows环境variables

环境variables是否联想?

$ HOME bin shell_script“找不到。

换句话说,在传递给cmd.exe之前,Vim似乎不会扩展$HOME的值。

我无法使用%APPDATA% ,因为Vim将%解释为当前文件,并将文件名预先/附加到APPDATA 。 Vim 确实扩展了%但不扩展$HOME 。

如何正确地扩展$HOME ? 是因为我在vim脚本中使用exe ?

在linux中以编程方式在C中检测桌面环境

linux系统中的多个JRE

如何创build可以快速分发到本地机器的可定制环境?

如何在jenkins build中激活conda环境

如何为windows和linux电脑设置常见的emacs环境?

你不需要! 读取文件。

:exe ":0r $HOME/bin/shell_script"

或者在windows中读取type命令(如在linux中的cat ):

:exe '0r !type "'. $HOME . 'binshell_script"'

注意:

该type在windows外壳中执行,所以你需要在路径中的 (反斜杠)

如果$HOME包含space s,则需要" (双引号)来保留space s的文字值

澄清由kev给出的答案:

在windows上,当您转到控制台时,$ HOME变量不能正确展开。 例如,考虑这个代码:

:e $HOME/myscript

这是可行的,因为vim正常扩展了$ HOME。 另一方面,这将无法正常工作:

:%! $HOME/myscript

为什么? 因为vim经过了一切! 到底层的shell,它在windows上是cmd.exe ,它执行环境变量%liKE_THIS% 。 如果你尝试使用这个符号,vim会跳进来并且把%扩展到当前文件的名字 – 去图。

如何解决它? 使用exe关键字:

:exe "%! ".$HOME."myscript"

我们来分析一下:

:exe是一个接受一个字符串并对其进行评估的命令(想想大多数语言中的eval)

"!% "转义为shell命令。 请注意,它被引用,以便exe可以评估它。 另外请注意,在那里有一个额外的空间,所以当我们追加主var时,它不是,而是正确的

.$HOME点是一个字符串连接符号。 $HOME不在引号内,而是连接在一起,以便vim可以正确地扩展它

."/myscript"路径和可能的参数(也被引用)

这里最重要的是把$HOME保留在引号之外,否则可能在windows上不能正确的扩展。

你可能需要像expand功能的东西。 例如:

:echo expand("$HOME/hello") /home/amir/hello

你可以找到更多有关expand()的信息:help expand 。

这里有一些关于vim中斜杠和反斜杠的信息:

http://vimdoc.sourceforge.net/HTMLdoc/os_dos.HTML

当你喜欢使用正斜杠时,设置'shellslash'选项。 当扩展文件名时,Vim将用正斜杠替换反斜杠。 这在使用类Unix的“shell”时特别有用。

总结

以上是内存溢出为你收集整理的如何在Vim脚本中使用Windows环境variables?全部内容,希望文章能够帮你解决如何在Vim脚本中使用Windows环境variables?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存