前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >增强tclsh的行编辑功能

增强tclsh的行编辑功能

作者头像
icsoc
发布2020-07-06 15:03:03
7060
发布2020-07-06 15:03:03
举报
文章被收录于专栏:ICSOC.TECHICSOC.TECH

IC 设计这行的很多 EDA 工具都内嵌了tcl 解释器,所以日常工作免不了和 tcl 语言打打交道。如果想写两句 tcl 代码做个测试,当然可以新建一个脚本文件,不过比较懒的做法就是打开 tclsh 直接输入想要测试的代码。

然而 tclsh 的自带的行编辑功能实在太差了:

光标不能随意移动。。。 历史命令无法追溯。。。 自动命令补全。。。(画外音:想啥呢?) 。。。

DOS 时代的 Turbo C 开始接触 IT 的同学可能对全屏幕编辑感到理所当然,如果回到更久远的无屏幕时代,用电传打字机(TTY)聊会儿天可能会感到生不如死。

于是人们发明了比电传打字机更人性化的行编辑器,顾名思义,在一行内可以随意编辑,然后点击回车发送。例如现在还预装在 Linux 发行版内的行编辑器 ed。当然这比全屏幕编辑器,例如 vi 的体验还是差上好多。

tclsh 的这种“简陋”实际上是秉承了类Unix 工具的历史特性:一个工具做并且只做它应该完成的事情。

幸好 Linux 提供了 readline library , 可以给任意 command 提供行编辑功能。更有开发者以此为基础提供了好用的实用工具 rlwrap, 也就是 read line wrapper。具体的用法大家可以点击阅读原文查看使用说明。

简要的用法大概是这样的。

安装 rlwrap

下载安装包后,经典的三部曲就可以。

代码语言:javascript
复制
./configure
make 
make install

root 权限的可以考虑安装在自己的 home 的某个目录(如app)下,只需要把第一步替换为:

代码语言:javascript
复制
./configure --prefix=$HOME/app

更改 tclsh 的启动方式

rlwrap 来启动 tclsh 的基本命令如下。

代码语言:javascript
复制
rlwrap -c tclsh

这样启动的 tclsh 就具有基本的行编辑功能了。

rlwrapfilters 功能

rlwrap 还支持多词关键字补全。需要先准备一个filter文件(如 ./tclsh_filter),里面用特定的格式列出 tclsh 的关键字。然后用下面的方式启动。

代码语言:javascript
复制
rlwrap -z ./tclsh_filter tclsh

这样启动的 tclsh 就具备比较高级的关键字自动补全功能了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 icsoc 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 rlwrap
  • 更改 tclsh 的启动方式
  • rlwrap 的 filters 功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档