LINUX.ORG.RU

zsh: автодополнение целых строк из истории

 


0

4

Недавно вкатил себе zsh. С уберсложной подсистемой автодополнения ещё почти не разбирался. И вот есть вопрос.

Дано: практически дефолтный (с точки зрения настроек автодополнения) zsh. Задача: поиметь возможность дополнения из истории команд.

Сейчас у меня сделано так, что нажатие стрелок вверх/вниз, когда в строке уже что-то набрано, перебирает не всю историю, а только те команды, которые соответствуют префиксу. А именно:

bindkey  "^[[A" history-beginning-search-backward
bindkey  "^[[B" history-beginning-search-forward

Вопрос: как сделать автодополнение из префикса по истории? Так, чтобы по нажатию, скажем, Ctrl+Tab 1) дополнялись целые строчки из истории, соответствующие введённому префиксу, и 2) из этих строчек можно было составить меню (menu select включено).

★★★★★

И тут ты такой с наглядными примерами, образцами входных и выходных данных

zolden ★★★★★ ()

дополнялись целые строчки из истории, соответствующие введённому префиксу

bindkey '^K' history-beginning-search-backward
bindkey '^J' history-beginning-search-forward

из этих строчек можно было составить меню (menu select включено).

autoload -Uz history-beginning-search-menu
zle -N history-beginning-search-menu
bindkey '^X^X' history-beginning-search-menu

Это всё гуглится же.

shdown ()
_myhistory(){ local -a w;w=(word1 word2 word3);_wanted values expl 'some description' compadd -a w; }
zle -C mycompleter complete-word _generic
bindkey '^X' mycompleter
zstyle ':completion:mycompleter:*' completer _myhistory

Потом делаешь так, чтобы _myhistory возвращала нужные тебе строки из массива $history, соответствующие $LBUFFER.

Посмотри это: https://github.com/zsh-users/zsh-history-substring-search . Немного не то, но imho полезнее, чем history-beginning-search*. Работает так же, но ищет не с начала строки, а в любом месте.

disarmer ★★★ ()

Такое fish умеет искаропки.

А в zsh на ум приходит только history-substring-search.

sudopacman ★★★★★ ()

Задача: поиметь возможность дополнения из истории команд.

как вариант, поставить вместо него fish, в котором это работает из коробки

f1u77y ★★★ ()

zaw-history, как вариант. «Слова» из истории можно по M-, и M-/.

salsa ()
Ответ на: комментарий от sudopacman

Такое fish умеет искаропки.

Менюшкой по истории команд?

salsa ()
Ответ на: комментарий от salsa

Про менюшку не знаю, а делать автодополнение из истории может.

sudopacman ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.