title: ANSI escape codes not moving cursor horizontally
body: <p>I am trying to make a text editor in the terminal with node and typescript but the ansi escape codes aren't moving the cursor horizontally. THe cursor moves vertically correctly but it just wont move horizontally.</p>
  <p>Code: (index.ts)</p>
  <pre><code>var width = process.stdout.columns;
  var height = process.stdout.rows;
  
  function dupe(input: string, length: number) {
      var newI = ''
  
      for (var i = 0; i &lt; length; i++) {
          newI += input
      }
  
      return newI
  }
  
  function pad(pad: string, input: string, width: number): string {
      var space = ''
  
      for (var i = 0; i &lt; width - input.length; i++) {
          space += pad
      }
  
      return input + space;
  }
  
  var stdin = process.stdin;
  
  // without this, we would only get streams once enter is pressed
  stdin.setRawMode( true );
  
  // resume stdin in the parent process (node app won't quit all by itself
  // unless an error or process.exit() happens)
  stdin.resume();
  
  // i don't want binary, do you?
  stdin.setEncoding( 'utf8' );
  
  // on any data into stdin
  stdin.on( 'data', function( key ){
    // ctrl-c ( end of text )
    if ( key.toString() === '\u0003' ) {
      process.exit();
    }
    // write the key to stdout all normal like
    update(key.toString())
  });
  
  function setpos(x: number, y: number) {
      return `\x1b[H\x1b[${y}B\x1b[${x}C`
  }
  
  
  var mousex = 0;
  var mousey = 0;
  
  async function update(key: string) {
      key = key.toLowerCase();
  
      width = process.stdout.columns;
      height = process.stdout.rows;
  
      console.clear()
  
      console.log(dupe('-', width))
      
      for ( var i = 1; i &lt;= height-2; i++ ) {
          process.stdout.write(`${pad(' ', i.toString(), 3)}|This is a test string\n`)
      }
      if (key === 'w') { mousey --;}
      if (key === 's') { mousey ++;}
      if (key === 'a') { mousex --;}
      if (key === 'd') { mousex ++;}
      
      if (mousey &lt; 0) { mousey = 0}
      if (mousey &gt; height) { mousey = height}
      if (mousex &lt; 0) { mousex = 0 }
      if (mousex &gt; width) { mousex = width}
      console.log(setpos(mousex, mousey))
      console.log(`\x1b[1A${mousex} ${mousey} ${width} ${height}`)
  }
  
  update('')
  </code></pre>
  <p><em>stack overflow why do i need to write more i literally have nothing else to write.</em></p>