Есть ли psql-эквивалент истории обратного поиска bash?


17

Мне очень нравится bashистория обратного поиска (Cr) (функция командной строки):

Выполняйте поиск в обратном направлении, начиная с текущей строки и перемещаясь по истории вверх по мере необходимости. Это пошаговый поиск.

Когда я попал control-rв bash, я получаю следующее:

(reverse-i-search)`':

И я могу печатать символы ранее выполненных команд, оттачивая то, что ищу. Если я ошибаюсь, я могу войти, control-hчтобы стереть символ (эквивалент backspace).

Эта функциональность командной строки позволяет чрезвычайно легко ссылаться на ранее выполненные команды. Мне интересно, существует ли такая возможность для psql. Я считаю , что крайне неэффективно полагаться только control-pи control-n.

Для чего это стоит, я использую 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- получено через Postgres.app .


3
Вы Ctrl-rуже пробовали ? :)
Dezso

Конечно, и это не имеет никакого эффекта для меня. Вы предлагаете ctrl-rработы для вас?
user664833

Используйте rlwrap...
Philᵀᴹ

Я установил rlwrapчерез homebrew ( brew install rlwrap) и попробовал ( rlwrap psql) - но control-rвсе равно не работает; на самом деле, он ведет себя точно так же, как и control-rбез rlwrap(то есть ничего не происходит ). Возможно, это признак более глубокой проблемы.
user664833

6
ctrl-rобычно предоставляется библиотекой readline. Похоже, что для postgres.app существует открытая проблема по этому поводу.
Даниэль Верите

Ответы:


15

Разговор об этом на GitHub привел к временному решению «быстрого исправления» :

открыть ~/.editrcи добавить:

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

По-видимому, большая проблема в том, что PostgresApp использует libeditвместо libreadline. И, возможно, libeditне хватает некоторых функций командной строки libreadline, поэтому, пока PostgresApp не скомпилирован libreadline, просто воспользуйтесь приведенным выше быстрым исправлением.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.