linux在终端下出现光标,linux – 如何在终端中获取光标位置?

在ANSI兼容终端,打印序列ESC [6n将光标位置报告给应用程序(就像键入键盘一样)ESC [n; mR,其中n是行,m是列.

例:

~$echo -e "\033[6n"

编辑:

你应该确保你正在阅读键盘输入.终端只会“键入”ESC [n; mR序列(无ENTER键).在bash中你可以使用类似的东西:

echo -ne "\033[6n" # ask the terminal for the position

read -s -d\[ garbage # discard the first part of the response

read -s -d R foo # store the position in bash variable 'foo'

echo -n "Current position: "

echo "$foo" # print the position

说明:-d R(分隔符)参数将在char R而不是默认记录分隔符(ENTER)处进行读取停止.这将存储ESC [n; m in $foo.剪切使用[作为分隔符并选择第二个字段,让n; m(行;列).

我不知道其他的贝壳.你最好的镜头是Perl,Python或其他东西.在Perl中,您可以从以下(未经测试的)片段开始:

~$perl -e '$/ = "R";' -e 'print "\033[6n";my $x=;my($n,$m)=$x=~m/(\d+)\;(\d+)/;print "Current position: $m,$n\n";'

例如,如果您输入:

~$echo -e "z033[6n"; cat > foo.txt

按[ENTER]几次,然后按[CRTL] [D].然后尝试:

~$cat -v foo.txt

^[[47;1R

在互联网之前,在BBS的黄金时期,像我这样的老屁对这些代码有很多乐趣.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值