Node.js रीडलाइन खोल में टर्मिनल विंडो को साफ़ करें




coffeescript readline (5)

मेरे पास कॉफ़ीप्स्क्रिप्ट में लिखी एक साधारण रीडलाइन शटल है:

rl = require 'readline'
cli = rl.createInterface process.stdin, process.stdout, null
cli.setPrompt "hello> "

cli.on 'line', (line) ->
  console.log line
  cli.prompt()

cli.prompt()

चल रहा है एक संकेत प्रदर्शित करता है:

$ coffee cli.coffee 
hello> 

मैं स्क्रीन को साफ़ करने के लिए Ctrl-L को हिट करने में सक्षम होना चाहता हूं। क्या यह संभव है?

मैंने यह भी पाया है कि मैं नोड या कॉफी आरईपीएल में या तो Ctrl-L को नहीं मार सकता।

मैं Ubuntu 11.04 पर चल रहा हूँ


आप console.log() और एस्केप अनुक्रमों का उपयोग करके स्क्रीन को साफ़ कर सकते हैं।

cli.on 'line', (line) ->
  if line == 'cls'
    console.log("\033[2J\033[0f")
  else
    console.log line
cli.prompt()

मैक टर्मिनल में, नोडजेएसएस में कन्सोल को रिक्त करने के लिए, आप बस Google डेवलपर उपकरण कंसोल में COMMAND+K मारा, इसलिए मुझे लगता है कि विंडोज पर यह CTRL+K


अपने उत्तर पर @loganfsmyth टिप्पणी के उत्तर पर (संपादन के लिए धन्यवाद!)।

मैं यहां और वहां देख रहा हूं, और शानदार क्यूप्रेस मॉड्यूल के अलावा, एक कोर मॉड्यूल है जो सभी मानक टर्मिनल व्यवहार (सभी चीजें जो हम आज भी दी गई हैं जैसे कि इतिहास, जैसे कि एक ऑटो प्रदान करने के लिए) -पूर्ण समारोह और इनपुट इंप्रेशन जैसे कि keypress हैं)।

मॉड्यूल readline ( प्रलेखन ) है अच्छी खबर यह है कि सभी स्टैंडर्स व्यवहार हमारे लिए पहले से ही किया गया है ताकि ईवेंट हैंडलर्स को जोड़ने की कोई आवश्यकता नहीं है (यानी इतिहास, Ctrl + एल पर स्क्रीन को साफ़ करने, अगर आप ऑटो पूर्ण फ़ंक्शन प्रदान करते हैं तो यह टैब प्रेस पर होगा )।

बस एक उदाहरण के रूप में

var readline = require('readline')
  , cli = readline.createInterface({
      input : process.stdin,
      output : process.stdout
  });

var myPrompt = ' > myPropmt '
cli.setPrompt(myPrompt, myPrompt.length); 
// prompt length so you can use "color" in your prompt
cli.prompt(); 
// Display ' > myPrompt ' with all standard features (history also!)

cli.on('line', function(cmd){ // fired each time the input has a new line       
   cli.prompt();
})

cli.input.on('keypress', function(key){  // self explanatory
  // arguments is a "key" object
  // with really nice properties such as ctrl : false
  process.stdout.write(JSON.stringify(arguments))
});

वास्तव में अच्छी खोज

मैं उपयोग कर रहा हूँ नोड संस्करण v0.10.29 मैं चैंजलॉग देख रहा हूं और 2010 के बाद से ( 10d8ad कम )


यह भी प्रयास करें:

var rl = require('readline');
rl.cursorTo(process.stdout, 0, 0);
rl.clearScreenDown(process.stdout);

यह एकमात्र जवाब है जो स्क्रीन और स्क्रॉल इतिहास साफ़ करेगा।

function clear() {
  // 1. Print empty lines until the screen is blank.
  process.stdout.write('\033[2J');

  // 2. Clear the scrollback.
  process.stdout.write('\u001b[H\u001b[2J\u001b[3J');
}

// Try this example to see it in action!
(function loop() {
  let i = -40; // Print 40 lines extra.
  (function printLine() {
    console.log('line ' + (i + 41));
    if (++i < process.stdout.columns) {
      setTimeout(printLine, 40);
    }
    else {
      clear();
      setTimeout(loop, 3000);
    }
  })()
})()
  • पहली पंक्ति सुनिश्चित करती है कि दृश्यमान लाइनें हमेशा साफ़ हो जाती हैं।

  • दूसरी पंक्ति यह सुनिश्चित करती है कि स्क्रॉल इतिहास साफ़ हो गया है।





read-eval-print-loop