node.js를 사용하여 유닛 테스트 파일을 생성하는 명령 행 인터페이스를 작성하고 있습니다. 나는 인콰이어러를 사용하여 사용자 입력을 얻었지만, 사용자가 복사 - 붙여 넣기 및/또는 편집, JSON 데이터의 큰 멀티 라인 청크를 원할 가능성이 큰 필드가 있습니다. 따라서, 내 목표는 다음과 같습니다. CLI에서 vim @ 특정 지점 열기 -> 입력 -> 닫기 vim -> tmp 파일에 쓰기 -> 결과 처리.node.js의 자식 프로세스에서 vim을 사용할 때 stdio/piping 문제가 발생했습니다.
vim으로의 입력도 상위 표준 입력으로 가고 리턴 키가 눌려지면 프로그램이 vim (장애) 상단에서 계속됩니다. 나는 stdio/in/out/err이 제대로 설정되어 있지 않다는 것을 확신하지만 어디서나 정확한 해결책을 찾는 것 같습니다. 스트림을 조작하는 모든 반복이 더 가까워 보이지만 작은 누락 된 링크가 있음을 알고 있습니다.
난의 라인을 따라 많은 것들을 시도 : 마지막으로
var vim = child_process.spawn('vim', [path], {stdin: 'pipe', stdout: 'pipe', stderr: 'pipe'});
var vim = child_process.spawn('vim', [path], {stdio: 'inherit'}); //{stdio: ['pipe','pipe','pipe']}
, 난 여전히이 예에서 How do I open a terminal application from node.js?를 표준 입출력 조작을 많이 따라 왔지만 작은 도움이 필요한 누락 된 링크가 남아 있습니다.
참고 :
- 나는 나의 비동기 적 약속이 순서대로 이루어 졌다고 확신한다.
- 은 반드시 내가 먼저 편집기
- 을 ENV를 확인하고 나는 편집자가에
- 를 닫기 전에 입력 을 팝업하고 있습니다 어디에, 커밋 자식이 비유, 정력 될 필요가 없습니다 작은 테스트 프로그램, 난 완벽한 기능을 얻을 수 있지만, 가 다른 프로세스를 통해이 작업을 수행 할 때, 그것은 잘
TL 갈 나던; 닥터 : 내가 부모 프로세스를 무시하려는를 입력 정력 만가는 동안 (child_process),하지만 나는 그들을 구분할 수 없습니다. 이 때문에 프로그램이 엉망이되어 간다.
분명히 할 수있는 것이 있으면 알려 주시기 바랍니다. 감사합니다.
Git이나 Subversion 또는 Mercurial을 사용하면 어떨까요? 사용자가 편집하고자하는 것을 임시 파일에 작성하고, 그 파일로 Vim을 열고, 내용을 편집하고, 다음 단계를 위해 임시 파일의 내용을 사용하십시오. – romainl
그건 내가 뭘하고 싶은지 꽤 비슷해. 문제는 다른 프로그램 내에서 실행되기 때문에 내가 어떻게 그들의 의견을 얻는 지와 스트림이 너무 꼬여 말하자. 또한, 그들은 텍스트를 넣을 것이고, 나는 그들에게 편집 할 무언가를주지 않을 것이다. –