28

I am very fond of bash's reverse-search-history (C-r) (command-line feature):

Search backward starting at the current line and moving ‘up’ through the history as necessary. This is an incremental search.

When I hit control-r in bash, I get the following:

(reverse-i-search)`':

And I am able to type characters of previously executed commands, honing in on what I am looking for. If I make a mistake, I can enter control-h to erase a character (equivalent of backspace).

This command-line functionality makes it extremely easy to refer to previously executed commands. I am wondering if such a capability exists for psql. I find it extremely inefficient to rely on just control-p and control-n.

For what it's worth, I am using PostgreSQL 9.3.1 on x86_64-apple-darwin13.0.0, compiled by Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn), 64-bit - obtained via Postgres.app.

András Váczi
  • 31,278
  • 13
  • 101
  • 147
user664833
  • 1,869
  • 2
  • 20
  • 19

1 Answers1

23

A conversation about this on GitHub led to an interim "quick fix" solution:

open ~/.editrc and add:

bind "^R" em-inc-search-prev

Apparently the bigger issue is that PostgresApp uses libedit instead of libreadline. And supposedly libedit lacks some command-line features of libreadline, so until PostgresApp is compiled against libreadline, just use the above quick fix.

user664833
  • 1,869
  • 2
  • 20
  • 19