2012-04-27 124 views
15

我在寫這個問題時發現了這個問題的答案,所以我擴大了一點。我想訪問--servername參數,以便在我的.vimrc文件中創建動態設置。是否可以在vimscript中訪問vim的命令行參數?

通過vim的幫助,我找到了v:servername變量,而且我的腳本正在工作。然而,現在我很好奇,如果有可能訪問任意的命令行參數。例如,如果我想知道vim是處於Lisp模式(-l)還是調試模式(-D),我該怎麼做?他們似乎沒有相應的v:變量。

這裏是我發現自動填充:help v:<Tab> enter image description here

有從vim腳本訪問命令行參數的一般方法中的變量?

回答

9

奇怪的是,我認爲答案可能是「不,沒有直接的方式來訪問命令行中指定的啓動選項」。

: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

+0

謝謝。解決方案相當於另一個答案,由於引用標記爲正確。 – mwcz 2012-05-02 16:21:25

7

我的谷歌搜索顯示,這個功能已經被提出,但從未付諸實施。但是我沒有想出了一個有點雜牌的是仍然工作:(測試在OS X Lion中)

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

getpid()功能得到Vim的PID,則稱ps外部與選項只返回進程的「命令」值,然後使用split()將命令拆分爲列表。

+1

謝謝,我喜歡黑客。 – mwcz 2012-05-02 16:20:31