18

書いているうちにこの質問の答えを見つけたので、少し広げました。ファイル--servernameに動的設定を作成するために、引数にアクセスしたかったのです。.vimrc

vimの助けを借りて、v:servername変数を見つけ、スクリプトが機能しています。ただし、任意のコマンドライン引数にアクセスできるかどうかが気になります。たとえば、vimがLispモード(-l)またはデバッグモード()のどちらであるかを知りたい場合、どうすれば-Dよいですか?それらに対応するv:変数はないようです。

これが私が自動完了によって見つけた変数です:help v:<Tab> ここに画像の説明を入力してください

vimscriptからコマンドライン引数にアクセスする一般的な方法はありますか?

4

2 に答える 2

12

不思議なことに、答えは「いいえ、コマンドラインで指定されたスタートアップオプションに直接アクセスする方法はありません」かもしれないと思います。

: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

于 2012-04-27T21:36:19.897 に答える
8

私のグーグルは、この機能が提案されたが、実装されていないことを示しています。しかし、私はそれにもかかわらず機能するちょっとした応急修理を思いついた:

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

(OS X Lionでテスト済み。)

関数はVimのPIDを取得し、プロセスの「コマンド」値のみを返すオプションを使用して外部からgetpid()呼び出し、コマンドをリストに分割するために使用します。pssplit()

于 2012-04-27T21:36:54.713 に答える