zsh tcsh-подобная история навигации

zsh tcsh-подобная история навигации

В tcshкомандах \ePи \eNучитывается нормализованный по пробелам префикс текущей строки, а не только первое слово.

Например, если моя история содержит

git pull upstream feature-dancing-pigs
git clone

и я печатаю

% git pull

а затем нажимаю \eP, tcshя получаю

% git pull upstream feature-dancing-pigs

если я нажимаю \ePin zsh, я получаю элемент истории, который просто соответствует команде

% git clone

Я хочу настроить zshэмуляцию tcshповедения. Возможно ли это?

Я пробовал zshиспользовать стандартную конфигурацию клавиш emacs и явное

bindkey "\eP" history-search-backward

Как выясняется

bindkey "\eP" history-beginning-search-backward

имеет ожидаемое поведение, которое я ^[изначально использовал вместо \e.

решение1

В документации есть функция , zshcontribкоторая называется up-line-or-beginning-search, вы можете просмотреть ее, запустив.

man zshcontrib | less '+/^\s*up-line-or-beginning-search'

Эти виджеты похожи на встроенные функции up-line-or-search и down-line-or-search: если они находятся в многострочном буфере, они перемещаются вверх или вниз внутри буфера, в противном случае они ищут строку истории, соответствующую началу текущей строки. В этом случае, однако, они ищут строку, котораясоответствует текущей строке до текущей позиции курсора, в манере истории-начала-поиска-назад и-вперед,а не первое слово в строке.

если вы посмотрите на инструкции, данные в верхней части ZLE FUNCTIONSразделаman zshcontrib

ФУНКЦИИ ZLE
Виджеты
Все эти функции реализуют определяемые пользователем виджеты ZLE (см. zshzle(1)), которые можно привязать к нажатиям клавиш в интерактивных оболочках. Чтобы использовать их, ваш .zshrc должен содержать строки вида
autoload function
zle -N function

Лично я следовал инструкциям выше, но подозреваю, что в настоящее время вам это может и не понадобиться... в вашем~/.zshrc

# register the function with the autoloader
autoload -U up-line-or-beginning-search
# define new zle widget
zle -N up-line-or-beginning-search
# bind UP key
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-beginning-search

Связанный контент