2012-05-16 1 views
0

나는 내가 오류gvim을 : 파일 (tempname가 가리키는)는

"수에게받은 스크립트를 실행하려고하면 SAS, 에 명령을 발행하는 정력 스크립트를 사용하는 것을 시도하고 존재하지 않는 APPDATA 임시로 이동 후 tempname()

't 열린 파일 ..path .. /의 AppData은/지방/온도/.. 임시 파일 .. "

이 의해 반환 경로 및 파일 이름이다 파일 디렉토리에 임시 파일이 없습니다.

내가 수동으로 설정 BACKUPDIR = ~ tmp를 (디렉토리가 내가 만든) \와 백업 디렉토리를 변경하려했지만 그의 반환 값은 변경되지 않습니다 tempname를()이나 임시 파일을 수행 실제로 존재한다.

2 가지 질문 1. vim이 스크립트에 필요한 파일을 작성하고 있는지 확인하는 방법이 있습니까 2. 임시 파일이 필요하지 않도록 스크립트를 다시 작성할 수 있습니까? (단지 SAS하는 실제 파일의 경로를 통과?)

을 스크립트의 관련 부분은

let returntxt = system("\"" . 
    \ shellescape("C:\\Program\ Files\\SAS\\SASFoundation\\9.2\\sas.exe") . 
    \ "\ -nosplash" . "\ -sysin" . "\ " . 
    \ shellescape(expand("%:p")) . "\"") 

" Shows the return messages from the SAS commandline (may be useful 
" if no log produced) 
:echo "*** SAS commandline: " . returntxt 

답변

2

'BACKUPDIR은'백업 파일이 생성 된 디렉토리 목록이 포함되어 있습니다 옵션, 그것은 아무 상관이 없다 임시 디렉토리로 수행하십시오 (단, 에 위치 함, 반대 위치는 참이 아님). 당신은

let $TMP=expand('~/tmp') 

를 사용하거나 정력에서, %TMP% 또는 %TEMP% 환경 변수를 사용하여 시도해야 또는 정력이 시작되기 전에 (창에서이 작업을 수행하는 방법을 모른다). let $TMP을 사용하면 와인 아래에서 작동하지만 기존의 임시 디렉토리에서만 작동합니다.

system() 전화가 다소 이상합니다 : shellescape()은 이미 주위에 "\""이 필요하지 않도록 필요한 따옴표를 모두 추가해야합니다 ('셸 *'옵션을 제대로 구성하지 않으면). 공백을 피할 필요가 없습니다. "\ "" "은 정확히 같은 문자열입니다.

두 번째 질문 : 파일 내용을 두 번째 인수로 system()에 전달할 수는 있지만 파일에 NULL이 포함되어 있으면 작동하지 않습니다.

+0

필자는 powershell (windows 7)과 shell escape에 문제가 있다고 생각합니까? 'C : \ Program'이라는 단어가 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않는 경우 "라는 메시지가 system() –

+0

에 반환됩니다. 셸 문제를 수정하고 임시 디렉터리를 올바르게 설정하지 마십시오. 문제를 해결하지 마라. 이제 vim은 임시 파일이 내 새 디렉토리에 존재하지 않는다고 불평합니다. 해당 디렉토리로 이동하면 파일 이름은 ~이지만 vi는 'VIo5B24.tmp'와 같은 이름의 임시 파일을 찾습니다. –

+0

@justincress'shellescape ('C : \ Program Files \ ...') '명령을 실행하면 vim을 최신 버전으로 업데이트해야합니다 (그렇지 않은 경우). 2. 문제가 계속되면 vim 버그 추적기에 불평합니다 (이전에 freenode에서 #vim을 묻는 것이 좋습니다.) 후자, 어쩌면 거기에 powershell 사용자가 있습니다.) – ZyX

관련 문제