이것은 스크립트 내부에 있습니다.
:let s:submission_path = expand("%:p:h") . '\submissions\test_submission.csv'
:echo s:submission_path
:write s:submission_path
내가 Windows에 있고 ':'이 유효한 파일 이름 문자가 아니기 때문에 스크립트에서 "쓰기 위해 파일을 열 수 없습니다"라는 오류가 발생합니다. 변수 이름을 'submission_path'로 지정하면 해당 이름의 파일이 작성됩니다 (편집 : 파일의 내용은 예상대로, 스크립트가 편집중인 버퍼의 내용).
나는 이것을 이해하지 못한다. 쓰기 전의 echo 명령은 내가 예상 한대로 수행하고 내가 쓰고 싶은 파일의 전체 경로를 출력합니다. 그러나 쓰기는 변수 값을 무시하고 대신 이름을 사용하는 것 같습니다. 어떻게 든 역 참조해야합니까?
vim은 매우 까다로운 평가 규칙을 가지고 있습니다 (그리고 여러분은 그것들을 배우기 만하면됩니다). write
표현식을 사용하지 않고 문자열을 사용하므로 s:submission_path
문자 그대로 write
. 그러나 echo
인수 s:submission_path
를 평가 하므로 평가됩니다.
원하는 작업을 수행하려면 execute
명령 을 사용해야합니다 .
exec 'write' s:submission_path
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다