2012-04-27 2 views
15

이 질문에 대한 답변은 글을 쓰는 동안 발견되었으므로 조금 더 넓혔습니다. 내 .vimrc 파일에 동적 설정을 만들려면 --servername 인수에 액세스하고 싶습니다.vimscript에서 vim의 명령 줄 인수에 액세스 할 수 있습니까?

vim의 도움을 받아 v:servername 변수를 찾았는데 스크립트가 작동합니다. 그러나 임의의 명령 줄 인수에 액세스 할 수 있는지 궁금합니다. 예를 들어 vim이 Lisp 모드 (-l) 또는 디버깅 모드 (-D)인지 알고 싶다면 어떻게해야합니까? 해당 변수에 해당하는 v: 변수가없는 것으로 보입니다.

여기에 내가 :help v:<Tab> enter image description here

vim 스크립트에서 명령 줄 인수에 액세스 할 수있는 일반적인 방법이 있나요를 자동 완성으로 볼 수있는 변수는?

답변

9

이상하게도 "아니오, 명령 줄에 지정된 시작 옵션에 직접 액세스 할 수있는 방법이 없습니다"라고 생각합니다.

:args 명령과 argv()은 시작할 때 지정한 파일 이름에 액세스하는 데 사용할 수 있지만 원하는 것은 아닙니다. 나는 누군가가 리눅스에서 시작 명령 행을 얻기 위해이 솔루션을 제공하는 것을 빔의 포럼에서 볼

:

: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

내 인터넷 검색이 기능을 제안하지만, 구현 적이되었음을 나타냅니다. 그러나 나는 그럼에도 불구하고 작동하는 kludge의 비트와 함께 올 않았다. (OS X 라이온에서 테스트) 이

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

getpid() 기능은 빔의 PID를 가져가, 우리가 옵션으로 외부 ps 전화 프로세스의 "명령"값 이외의 값을 반환 한 다음 split()을 사용하여 명령을 목록으로 분할하십시오.

+1

감사합니다. 해킹을 좋아합니다. – mwcz

관련 문제