简体   繁体   中英

Lightweight GNU readline alternative

I am looking for a GNU readline alternative. It comes with a lot of features but only couple of them are useful to me as explained below -

I am working on a interactive command prompt application (display prompt and accept next user command to be run). I want to implement some editing and history feature for the prompt. So when the user presses UP key it should show the last run command. Also, user should be able to navigate using arrow keys if he need to edit any typo or command switches etc.

On windows something similar already exists, if you use fgets or scanf to get the input on cmd prompt it already maintains history and also lets you edit.

Is there a good option available on linux?

This is an admirable goal I think :-)

Perhaps Linenoise , libedit/editline or tecla would fit the bill?

Of those probably libedit is the most widely used - eg postgreqsql client shell and various BSD utilities for Kerberos and ntp (although for the upstream sources it may not be the default line editing library for compilation due the to widespread use of libreadline on Linux). There are a couple of slightly different versions of libedit/editline as you'll see if you read some of those references and do some further research.

Cheers, and good luck with your project.

There is replxx , a BSD licensed alternative to readline. It works in Linux, BSD, Solaris and Windows. It has support for features you expect from interactive console programs, namely:

  • line editing
  • history
  • syntax highlighting
  • hints
  • UTF-8
  • user defined key bindings (supporting (shift/ctrl)F1 - F12)
  • multi-threaded print

I think the modern alternative of GNU Readline is Jupyter Notebook. The idea is that you don't create an executable that links to a line editor library. Instead, you should just provide the kernel and the users can choose their own notebook UI, either CUI, web based GUI, or even an IDE like VS Code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM