2012-04-27 8 views
15

Znalazłem odpowiedź na to pytanie podczas pisania, więc trochę ją poszerzyłem. Chciałem uzyskać dostęp do argumentu --servername, aby utworzyć ustawienia dynamiczne w moim pliku .vimrc.Czy można uzyskać dostęp do argumentów wiersza poleceń vima w vimscript?

Dzięki pomocy vima znalazłem zmienną v:servername, a mój skrypt działa. Jednak teraz jestem ciekawy, czy można uzyskać dostęp do dowolnych argumentów wiersza poleceń. Na przykład, jeśli chciałbym wiedzieć, czy vim był w trybie Lisp (-l) lub w trybie debugowania (-D), jak mógłbym to zrobić? Wydaje się, że nie ma odpowiadającej im zmiennej v:.

Oto zmienne I znaleźli funkcji automatycznego uzupełniania :help v:<Tab> enter image description here

jest jakiś ogólny sposób, aby uzyskać dostęp do argumentów wiersza polecenia z vimscript?

Odpowiedz

9

O dziwo, myślę, że odpowiedź brzmi: "Nie, nie ma bezpośredniego sposobu uzyskania dostępu do opcji uruchamiania określonych w wierszu poleceń".

Komendę :args i argv() można użyć w celu uzyskania dostępu do plików określonych podczas uruchamiania, ale to nie jest to, czego potrzebujesz.

widzę na forach vim, że ktoś oferowanych to rozwiązanie, aby uzyskać wiersz polecenia uruchamiania w systemie Linux:

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

zakładam istnieje analogiczne polecenia w systemie Windows. . . .

Możesz zajrzeć nad tym wątku tutaj:

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

+0

Dzięki. Rozwiązanie jest równoważne z drugą odpowiedzią, znakowanie prawidłowe z powodu cytowania. – mwcz

7

Moje googling wskazuje, że funkcja ta została zaproponowana jednak nigdy zrealizowane. Jednak ja nie wymyślić trochę kludge że mimo to działa: (. Testowane na OS X Lion)

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

Funkcja getpid() dostaje PID vim, wtedy nazywamy ps zewnętrznie z opcjami zwracaj tylko wartość "command" dla procesu, a następnie użyj polecenia split(), aby podzielić polecenie na listę.

+1

Dzięki, lubię hack. – mwcz

Powiązane problemy