繁体   English   中英

是否可以在vimscript中访问vim的命令行参数?

[英]Is it possible to access vim's command-line arguments in vimscript?

我在写这个问题时找到了这个问题的答案,所以我已经扩大了一点。 我想访问--servername参数,以便在我的.vimrc文件中创建动态设置。

通过vim的帮助,我找到了v:servername变量,我的脚本正在运行。 但是,现在我很好奇是否可以访问任意命令行参数。 例如,如果我想知道vim是处于Lisp模式( -l )还是调试模式( -D ),我该怎么做? 似乎没有相应的v:变量。

以下是我通过自动填充找到的变量:help v:<Tab> 在此输入图像描述

是否有一般方法从vimscript访问命令行参数?

奇怪的是,我认为答案可能是“不,没有直接的方法来访问命令行上指定的启动选项”。

:args命令和argv()可用于访问启动时指定的文件名,但这不是你想要的。

我在Vim的论坛上看到有人提供这个解决方案来获取Linux上的启动命令行:

:exe '!tr "\0" " " </proc/' . getpid() . '/cmdline' 

我假设在Windows上有类似的命令。

你可以在这里查看该论坛帖子:

http://groups.google.com/group/vim_use/browse_thread/thread/43773f27cdc10265/ad17ae8180c0fb6e?show_docid=ad17ae8180c0fb6e

我的谷歌搜索表明此功能已被提出但从未实施。 然而,我确实提出了一些仍然有效的kludge:

:echo split( system( "ps -o command= -p " . getpid() ) )
# => [ 'vim', ... arguments ... ]

(在OS X Lion上测试过。)

getpid()函数获取Vim的PID,然后我们使用选项外部调用ps ,只返回进程的“command”值,然后使用split()将命令拆分为一个列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM