获取Node.js中终端的可见行数(或高度)

时间:2017-06-01 08:06:28

标签: javascript node.js shell tty

查看TTY node module,我可以访问process.stdout.rows,它返回“一个数字,指定TTY当前拥有的行数。”但显然可用的 可见的代码如下:

let lines = process.stdout.rows

// Clear console
process.stdout.write('\x1Bc')

for (var i = 0; i < lines; i++) {
  if (i === 0) {
    console.log(1)
  } else if (i === Math.round(lines / 2)) {
    console.log('halfwayish')
  } else if (i === lines - 1) {
    console.log('end')
  } else {
    console.log('\r\n')
  }
}

输出:

enter image description here

我如何才能使end结束,halfwayish是半途而且1在第一行,而不必在终端滚动?

2 个答案:

答案 0 :(得分:0)

请检查这是否适合您。 编辑后的最终解决方案:

let lines = process.stdout.rows

// Clear console
process.stdout.write('\x1Bc');
var stop = false;
for (var i = 0; i < lines; i++) {
  if (i === 0) {
    console.log(1);
  } else if (i === Math.round(lines / 4)) {
    console.log('halfwayish');
  } else if (i === lines/2) {
    stop = true;
    console.log('end');
  } else if(stop === false){
    console.log('\r\n');
  }
}

答案 1 :(得分:0)

对我来说这行得通。 基本上取出换行符

process.stdout.on('resize', () => {
 process.stdout.write('\x1Bc')
 var lines = process.stdout.rows
 for (var i = 0; i < lines; i++) {
    if (i === 0) {
        console.log(1)
    } else if (i === Math.round(lines / 2)) {
        console.log('halfwayish')
    } else if (i === lines - 1) {
        console.log('end')
    } else {
        console.log("")
    }
 }
});

我认为console.log本身添加了新行,而您添加了另一行使它超出了lines变量所具有的范围。