KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I would like to be able to open Vim from node.js program running in the terminal, create some content, save and exit Vim , and then grab the contents of the file. I'm trying to do something like this: filename = '/tmp/tmpfile-' + process.pid editor = process.env['EDITOR'] ? 'vi' spawn editor, [filename], (err, stdout, stderr) -> text = fs.readFileSync filename console.log text However, when this runs, it just hangs the terminal. I've also tried it with exec and got the same result. Update: This is complicated by the fact that this process is launched from a command typed at a prompt with readline running. I completely extracted the relevant parts of my latest version out to a file. Here is it in its entirety: {spawn} = require 'child_process' fs = require 'fs' tty = require 'tty' rl = require 'readline' cli = rl.createInterface process.stdin, process.stdout, null cli.prompt() filename = '/tmp/tmpfile-' + process.pid proc = spawn 'vim', [filename] #cli.pause() process.stdin.resume() indata = (c) -> proc.stdin.write c process.stdin.on 'data', indata proc.stdout.on 'data', (c) -> process.stdout.write c proc.on 'exit', () -> tty.setRawMode false process.stdin.removeListener 'data', indata # Grab content from the temporary file and display it text = fs.readFile filename, (err, data) -> throw err if err? console.log data.toString() # Try to resume readline prompt cli.prompt() The way it works as show above, is that it shows a prompt for a couple of seconds, and then launches in to Vim, but the TTY is messed up. I can edit, and save the file, and the contents are printed correctly. Ther
Tags (comma-separated)
Save Edits
Cancel