Автодополнение по истории.
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 310
Автодополнение по истории.
Должна же быть такая фича, что набираешь команду, тыцкаешь какую-нибудь кнопочку и выводится список из введённых ранее строк, с возможностью выбрать нужную, ну типа как в винде F7 в консоли.
Ещё можно набрать часть команды и нажатиями вверх/вниз выбирать варианты автодополнения из истории.
Ещё можно набрать часть команды и нажатиями вверх/вниз выбирать варианты автодополнения из истории.
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Автодополнение по истории.
Нажатие Ctrl+R и последующий ввод подстроки для поиска чем-то не пришлись ко двору?
Попробуйте начать набирать команду, а затем понажимать PgUp и PgDown.
-
- Сообщения: 600
- ОС: Debian Stable
Re: Автодополнение по истории.
Если вы помните кусочек команды которую хотите найти, то можно просто
нажать в bash'e комбинацию Ctrl + R и набрать этот кусочек. bash вам
покажет последнюю команду с такой подстрокой. Можно продолжать
нажимать Ctrl + R и bash будет выдавать более старые подходящие
команды, подходящие под искомую строку.
http://www.opennet.ru/base/sys/bash_tips.txt.html
Гораздо приятнее поиск реализован в FreeBSD для tcsh (набираем пару первых букв нужной команды и стрелками вверх и вниз ищем по истории). В bash можно тоже так сделать:
host$ cat .inputrc
"\e[A":history-search-backward
"\e[B":history-search-forward
http://blog.ronix.net.ua/2009/04/bash.html
Лично я использую второй вариант, но с кнопками PgUp/PgDown:
"\e[5~": history-search-backward
"\e[6~": history-search-forward
-
- Сообщения: 310
Re: Автодополнение по истории.
neol
Кстати да, у меня freebsd, и наверное там tcsh. Вот тока он зараза по табу список возможных автодополнений не пишет.
Во, сойдёт.
Гораздо приятнее поиск реализован в FreeBSD для tcsh (набираем пару первых букв нужной команды и стрелками вверх и вниз ищем по истории).
Кстати да, у меня freebsd, и наверное там tcsh. Вот тока он зараза по табу список возможных автодополнений не пишет.
Можно продолжать
нажимать Ctrl + R и bash будет выдавать более старые подходящие
Во, сойдёт.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
нажимаете ctrl+r, вводите строку. по мере ввода строка будет дополняться до последнего совпадения с историей.
ctrl+r — листание по истории вверх
ctrl+s — листание по истории вниз
вторая комбинация (ctrl-s) часто перехватывается самим терминалом.
у меня по этому поводу используются две команды:
stty ixany
stty ixoff -ixon
что оно там точно делает, уже не помню. смотрите man stty.
ctrl+r — листание по истории вверх
ctrl+s — листание по истории вниз
вторая комбинация (ctrl-s) часто перехватывается самим терминалом.
у меня по этому поводу используются две команды:
stty ixany
stty ixoff -ixon
что оно там точно делает, уже не помню. смотрите man stty.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
sash-kan писал(а): ↑24.05.2011 15:42нажимаете ctrl+r, вводите строку. по мере ввода строка будет дополняться до последнего совпадения с историей.
ctrl+r — листание по истории вверх
ctrl+s — листание по истории вниз
вторая комбинация (ctrl-s) часто перехватывается самим терминалом.
у меня по этому поводу используются две команды:
stty ixany
stty ixoff -ixon
что оно там точно делает, уже не помню. смотрите man stty.
Что конкретно делает ixoff и ixon мне как-то не стало понятно после прочтения справки, а за ixany спасибо. Кстати, а нельзя ли с readline сделать что-то вроде
~/.zshrc (Created by format.vim)
bindkey -M isearch "\C-n" "history-incremental-pattern-search-forward"
bindkey -M isearch "\C-p" "history-incremental-pattern-search-backward"
, то есть переопределить привязки к <C-n> и <C-p> только для режима поиска?
-
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Автодополнение по истории.
sash-kan
Саша, ну ты же сам лет сэм-восэм назад описал, как в bash'е сделать tcsh-подобный инкрементный поиск, я у тебя тогда это слямзил. Здесь же, кстати, и описал
Как это сделать в zsh'е - описал ваш покорный слуга. В почти всех установках tcsh - это искаропки. Если такого нет - в некоторых дистрах Линукса, при установке из пакета - опять же описано, как сделать. И давным-давно.
Саша, ну ты же сам лет сэм-восэм назад описал, как в bash'е сделать tcsh-подобный инкрементный поиск, я у тебя тогда это слямзил. Здесь же, кстати, и описал

Как это сделать в zsh'е - описал ваш покорный слуга. В почти всех установках tcsh - это искаропки. Если такого нет - в некоторых дистрах Линукса, при установке из пакета - опять же описано, как сделать. И давным-давно.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
alv
если речь про это: http://posix.ru/shell/bash_tab/
то, согласно дате, писалось это всего пять лет назад.
и, конечно, давно благополучно забылось.
если речь про это: http://posix.ru/shell/bash_tab/
то, согласно дате, писалось это всего пять лет назад.
и, конечно, давно благополучно забылось.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
-ixon отключает преобразование ctrl+s и ctrl+q в xoff и xon.
ixoff разрешает посылку xoff/xon как таковых. не помню уж, чем их там альтернативно можно послать, раз отключены (более или менее) стандартные заменители в виде ctrl+s/ctrl+q. может, кнопкой pause? у меня нет такой на клавиатуре, не могу проверить.
насколько мне помнится, в readline нет подобных «режимо-зависимых» привязок.
если вам сочетание crtl+n/ctrl+p нравится больше, чем crtl+r/crtl+s, то, конечно, можно переопределить.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
sash-kan писал(а): ↑25.05.2011 12:47-ixon отключает преобразование ctrl+s и ctrl+q в xoff и xon.
ixoff разрешает посылку xoff/xon как таковых. не помню уж, чем их там альтернативно можно послать, раз отключены (более или менее) стандартные заменители в виде ctrl+s/ctrl+q. может, кнопкой pause? у меня нет такой на клавиатуре, не могу проверить.
А как <C-s> отключить в konsole, но временно (пока запущен vim)? Stty konsole игнорирует, отключать постоянно я не хочу.
У меня на них ещё history-beginning-search-forward/backward (ищет в истории строки, начинающиеся так же, как часть текущей строки до курсора).
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
проверил в *xtem и gnome terminal. работает. если документация/гугль не смогут помочь, можно, наверно, попробовать обойтись без гордого игноранта. на крайний случай.
ну, клавиш на клавиатуре, вроде, довольно много.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
Я не знаю адекватной замены yakuake, больше ни для чего мне konsole не нужен.
Здесь не в этом проблема: <C-n> и <C-p> — это сочетания «предыдущее»/«следующее» (строка/вариант автодополнения). Замена сочетания — это не решение проблемы «как сделать так, чтобы везде была одно сочетание „следующего“».
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
ZyX
1. ну, есть более длинный вариант — написать багрепорт разработчикам konsole.
2. по поводу сочетаний вы меня совсем запутали. вам нужно, чтобы инкрементальный поиск происходил по ctrl+n/ctrl+p — так назначьте им эти функции.
1. ну, есть более длинный вариант — написать багрепорт разработчикам konsole.
2. по поводу сочетаний вы меня совсем запутали. вам нужно, чтобы инкрементальный поиск происходил по ctrl+n/ctrl+p — так назначьте им эти функции.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
Мне нужно, чтобы у <C-n>/<C-p> остались функции «следующая/предыдущая строка» (точнее, history-search-forward/backward), но при этом во время поиска они бы работали как «следующий/предыдущий результат поиска». В zsh это возможно, но остальные (ipython, ghci) используют readline.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
ZyX
ещё раз повторю. в readline нет режима «поиск», «инкрементный поиск» и т.п. (с точки зрения привязок функций к вводимым символам).
единственный режим (точнее, два), где могут быть разные привязки — это "vi"/"emacs". поэкспериментируйте в эту сторону, если есть желание.
разъяснение: для инкрементального поиска переключаете режим. получаете другие привязки для нужных клавиш. переключаете режим вновь — получаете другие привязки.
ещё раз повторю. в readline нет режима «поиск», «инкрементный поиск» и т.п. (с точки зрения привязок функций к вводимым символам).
единственный режим (точнее, два), где могут быть разные привязки — это "vi"/"emacs". поэкспериментируйте в эту сторону, если есть желание.
разъяснение: для инкрементального поиска переключаете режим. получаете другие привязки для нужных клавиш. переключаете режим вновь — получаете другие привязки.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
sash-kan писал(а): ↑26.05.2011 21:07ZyX
ещё раз повторю. в readline нет режима «поиск», «инкрементный поиск» и т.п. (с точки зрения привязок функций к вводимым символам).
единственный режим (точнее, два), где могут быть разные привязки — это "vi"/"emacs". поэкспериментируйте в эту сторону, если есть желание.
разъяснение: для инкрементального поиска переключаете режим. получаете другие привязки для нужных клавиш. переключаете режим вновь — получаете другие привязки.
Способ прикольный, но не работает почему-то:
~/.inputrc (Created by format.vim)
"¢": vi-editing-mode
"\C-r": "¢\C-r"
set editing-mode vi
"\C-n": forward-search-history
"\C-p": reverse-search-history
"\n": emacs-editing-mode
set editing-mode emacs
Поиск не начинается, в режим vi не переключает.
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Автодополнение по истории.
Я бы сказал: более правильный вариант. Т.к. обрабатывать ^S -- это задача командной оболочки; эмулятор терминала этого не должен делать по определению.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
Я был не совсем прав: konsole игнорирует stty stop {key} (я использовал именно это для отключения <C-s>), stty -ixoff работает. Не уверен, что это является ошибкой.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
гхм. вообще-то, по логике, вместо выделенного должна быть условная конструкция
$if mode=vi
...
$endif
p.s. но лучше, наверно, уточнить в исходниках. насколько помню, они довольно скромные по объёму.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Автодополнение по истории.
С какой стати эмулятор терминала вообще обрабатывает C-s? Это не его задача. Какими способами это поведение удаётся или не удаётся отключить - уже дело десятое.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 355
- ОС: Gentoo
Re: Автодополнение по истории.
When a program which uses the readline library starts up, the init file is read, and the key bindings and variables are set.
Про то, что файл перечитывается при изменении раскладки ничего не написано.
писал(а): ↑27.05.2011 02:03p.s. но лучше, наверно, уточнить в исходниках. насколько помню, они довольно скромные по объёму.
(man readline) писал(а):BUGS
It's too big and too slow.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Автодополнение по истории.
понятно. заглянул в исходники (про «too big» (да и про «too slow») написано было, наверно, лет двадцать назад).
да, действительно, если rl_editing_mode не совпадает с mode, указанным в "$if", то парсинг отключается и:
/* If parsing is turned off, then nothing can turn it back on except
for finding the matching endif. In that case, return right now. */
так что я был не прав, именно editing-mode-ом надо манипулировать, чтобы писать в разные keymap-ы.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог