2012-04-27 6 views
15

私はこの質問の答えを書いている間にそれを見つけたので、少し広げました。 .vimrcファイルに動的設定を作成するには、--servername引数にアクセスしたいと思っていました。vimscriptでvimのコマンドライン引数にアクセスできますか?

vimのヘルプにより、v:servernameという変数が見つかりました。スクリプトが動作しています。しかし、任意のコマンドライン引数にアクセスすることができるのであれば私は不思議です。たとえば、vimがLispモード(-l)かデバッグモード(-D)であったかどうかを知りたければ、どうすればよいですか?対応するv:変数がないようです。ここで

は私が:help v:<Tab> enter image description here

をオートコンプリートで見つかった変数はvimscriptからのコマンドライン引数にアクセスするための一般的な方法はありますか?

答えて

9

奇妙なことに、私は答えは "いいえ、コマンドラインで指定された起動オプションに直接アクセスする方法がない"と思います。

:argsコマンドとargv()は、起動時に指定されたファイル名にアクセスするために使用できますが、それはあなたが望むものではありません。

私は誰かがLinuxの起動コマンドラインを取得するには、このソリューションを提供することをVimのフォーラムで参照してください。

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

私はWindows上で類似のコマンドがありますと仮定します。 。 。 。

あなたはここでそのフォーラムのスレッド上で見ることができます。

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

+0

ありがとうございました。解決策は、引用のために正しい印をつける他の答えと同等です。 – mwcz

7

私のグーグルでは、この機能が提案されているが、実装されたことがないされていることを示します。しかし、私はそれにもかかわらず動作することをその場しのぎのビットを思い付くんでした:

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

(OS Xライオンにテストされています。)

getpid()機能は、我々はにオプションで外部psを呼び出し、VimのPIDを取得し、プロセスの「コマンド」値だけを返してから、split()を使用してコマンドをリストに分割します。

+1

ありがとう、私はハックが好きです。 – mwcz

関連する問題