Как вы можете изменить направление альт-периода в Баше?

10

В Bash вы можете нажать Alt-, .чтобы вставить последний аргумент предыдущей команды. Если вы нажмете его несколько раз, он циклически перебирает последние аргументы всех команд в вашей истории. Однако иногда я нажимаю на нее слишком много раз и хочу изменить направление движения на велосипеде, а значит, идти вперед. Это возможно?

(то есть , если вы обратный я-поиск с Ctrl- rвы можете изменить направление с Ctrl- s. Что является аналогом для Alt- .?)

Sparhawk
источник

Ответы:

11

Если вы передаете отрицательный аргумент Alt- ., он меняет направление. Самый простой способ сделать это (со стандартными привязками клавиш) Alt- -(эквивалентно аргументу -1).

Таким образом, после того, как один или более Alt- .нажатий, нажатие Alt- -вызовет следующий Alt- .идти в обратном направлении. (Просто игнорируйте диалоговое окно аргументов, которое появляется, когда вы нажимаете Alt- -.)

RICi
источник
1
Я не уверен, что именно вы имеете в виду. Нажатие Alt+ -удаляет приглашение командной строки и вставляет (arg: -1)вместо него. Сама команда без изменений.
Sparhawk
1
Thenext alt-. (с -1 аргументом) будет идти вперед.
Ричи
Замечательно! Я отредактировал ответ, чтобы сделать его немного понятнее. Что именно делает alt+ -?
Sparhawk
1
@Sparhawk: как я уже сказал, alt -выдает аргумент -1для следующей команды readline. Или, точнее, он начинает отрицательный аргумент, поэтому alt -alt` выдал 2бы аргумент -2. В случае alt ., только знак аргумента имеет значение, и только если он отрицательный, так alt -что достаточно. (Первый alt .обрабатывает свой аргумент иначе. См. Руководство по bash.)
rici
Спасибо. Я часто нахожу man bashнемного непрозрачным для таких ситуаций, но я думаю, что это немного прояснилось здесь.
Sparhawk